diff --git a/bin/markedoc.sed b/bin/markedoc.sed index 81d35e4..7c12911 100644 --- a/bin/markedoc.sed +++ b/bin/markedoc.sed @@ -21,21 +21,21 @@ # ---------------------------------------------------------- # SAMPLE WORKFLOW (change -r to -E for FreeBSD / Mac OS X): # sed -r -f markedoc.sed README.md > doc/README.edoc -# erl -noshell -run edoc_run application "'myapp'" '"."' '[]' +# erl -noshell -run edoc_run application "'myapp'" '"."' '[]' # ---------------------------------------------------------- # REQUIREMENTS: sed, Erlang # Windows: http://gnuwin32.sourceforge.net/packages/sed.htm # ---------------------------------------------------------- -# STATUS: Pre-Beta. +# STATUS: Pre-Beta. # It can reliably do nice things but likes to trip up EDoc. # With a bit of patience, and mostly with pretty clean md # markup, and some blank lines sometimes, most things work. # ---------------------------------------------------------- # LICENSE: Free software, no warranties. # ---------------------------------------------------------- -# On edown: https://github.com/esl/edown +# On edown: https://github.com/uwiger/edown # On Markdown: http://daringfireball.net/projects/markdown/ -# On Edoc: http://www.erlang.org/doc/apps/edoc/ +# On Edoc: http://www.erlang.org/doc/apps/edoc/ # On sed: http://www.gnu.org/software/sed/manual/sed.html # ---------------------------------------------------------- # Repository: https://github.com/hdiedrich/markedoc/ @@ -55,7 +55,7 @@ # is used to join lines. 't' is a conditional branch. ':' # is a label. The order of replacement functions matters. # There are tabs in some patterns that may look like spaces. -# See 'man sed' for more info. If you are a sed master, +# See 'man sed' for more info. If you are a sed master, # your help making this better is much appreciated. # ********************************************************** @@ -112,7 +112,7 @@ s/^(.*)$/```\1'''/ # protect @ (for edoc related texts that explain @-tags). There is a tab in []. s/([ \"\'\`]+@)/\1@/g - # send result to stdout + # send result to stdout p # Now make sure that that last line is not lost: # ---------------------------------------------- @@ -134,15 +134,15 @@ s/([ \"\'\`]+@)/\1@/g b end # -} +} :end_of_code_blocks_handling # robust alternate for code blocks: each tabbed line # -------------------------------------------------- -# If the above keeps being difficult, use this more robust -# version. The main difference is simply that it will tag each -# line separately. If you work out the right margins and +# If the above keeps being difficult, use this more robust +# version. The main difference is simply that it will tag each +# line separately. If you work out the right margins and # paddings for
in your css file, that might give just as # nice results as the above. There are tabs in this pattern. # s/^ (.+)$/``` \1'''/ @@ -173,7 +173,7 @@ s/::/\·/g # guillemot s/<\«/g s/>>/\»/g - + # copy right # ---------- @@ -192,19 +192,19 @@ s/\[([^]]+)\]\(([^)]+)\)/\1<\/a>/ # references, '[..]:...'-style # ---------------------------- # urls -s/(\[([^]]+)\]): +\[?(http[s]?:\/\/[^.>" ]+\.[^>" ]+)\]? * *("([^"]+)") * *$/\5:\3<\/a><\/li>/ +s/(\[([^]]+)\]): +\[?(http[s]?:\/\/[^.>" ]+\.[^>" ]+)\]? * *("([^"]+)") * *$/ \5:\3<\/a><\/li>/ # check next line "..." description /(\[([^]]+)\]): +\[?(http[s]?:\/\/[^.>" ]+\.[^>" ]+)\]? *$/ { - # get next line, if the current is not the last + # get next line, if the current is not the last $!N # try two line spanning, or single (last) line - s/(\[([^]]+)\]): +\[?(http[s]?:\/\/[^.>" ]+\.[^>" ]+)\]? * *\n * *("([^"]*)") * *$/ \5:\3<\/a><\/li>/ + s/(\[([^]]+)\]): +\[?(http[s]?:\/\/[^.>" ]+\.[^>" ]+)\]? * *\n * *("([^"]*)") * *$/ \5:\3<\/a><\/li>/ t double_line_url_done # try one line only, rest to be saved - s/(\[([^]]+)\]): +\[?(http[s]?:\/\/[^.>" ]+\.[^>" ]+)\]? * *(\n)/ \3<\/a><\/li>\4/ + s/(\[([^]]+)\]): +\[?(http[s]?:\/\/[^.>" ]+\.[^>" ]+)\]? * *(\n)/ \3<\/a><\/li>\4/ t double_line_url_done # case of last line, single, no "..." description - s/(\[([^]]+)\]): +\[?(http[s]?:\/\/[^.>" ]+\.[^>" ]+)\]? * *$/ \3<\/a><\/li>/ + s/(\[([^]]+)\]): +\[?(http[s]?:\/\/[^.>" ]+\.[^>" ]+)\]? * *$/ \3<\/a><\/li>/ : double_line_url_done # print out up to first \n, delete, start from top with the rest P @@ -212,19 +212,19 @@ s/(\[([^]]+)\]): +\[?(http[s]?:\/\/[^.>" ]+\.[^>" ]+)\]? * *("([^"]+)") * *$/ " ]+@[^.>" ]+\.[^>" ]+)>? * *("([^"]+)") * *$/ \5:\3<\/a><\/li>/ +s/(\[([^]]+)\]): +([^@>" ]+@[^.>" ]+\.[^>" ]+)>? * *("([^"]+)") * *$/ \5:\3<\/a><\/li>/ # check next line "..." description /(\[([^]]+)\]): +([^@>" ]+@[^.>" ]+\.[^>" ]+)>? * *("([^"]+)")? * *$/ { - # get next line, if the current is not the last + # get next line, if the current is not the last $!N # try two line spanning, or single (last) line - s/(\[([^]]+)\]): +([^@>" ]+@[^.>" ]+\.[^>" ]+)>? * *\n * *("([^"]+)") * *$/ \5:\3<\/a><\/li>/ + s/(\[([^]]+)\]): +([^@>" ]+@[^.>" ]+\.[^>" ]+)>? * *\n * *("([^"]+)") * *$/ \5:\3<\/a><\/li>/ t double_line_mail_done # try one line only, rest to be saved - s/(\[([^]]+)\]): +([^@>" ]+@[^.>" ]+\.[^>" ]+)>? * *(\n)/ \3<\/a><\/li>\4/ + s/(\[([^]]+)\]): +([^@>" ]+@[^.>" ]+\.[^>" ]+)>? * *(\n)/ \3<\/a><\/li>\4/ t double_line_mail_done # case of last line, single, no "..." description - s/(\[([^]]+)\]): +([^@>" ]+@[^.>" ]+\.[^>" ]+)>? * *$/ \3<\/a><\/li>/ + s/(\[([^]]+)\]): +([^@>" ]+@[^.>" ]+\.[^>" ]+)>? * *$/ \3<\/a><\/li>/ : double_line_mail_done # print out up to first \n, delete, start from top with the rest P @@ -238,7 +238,7 @@ s/\[([^]]+)\]\[([^]]+)\]/\1<\/a>/g # s/\[([^]]+)\]\[([^]]+)\]/\1<\/a>/g @@ -278,7 +278,7 @@ s/`([^`]+)`/ \1<\/code>/g # protect @ # --------- # leading space or tab indicates use as code sample for, well, edoc -# itself most likely, so escape it. +# itself most likely, so escape it. s/([ \"\'\`]+@)/\1@/g # headlines by underline === or --- @@ -307,7 +307,7 @@ s/([ \"\'\`]+@)/\1@/g D # and this is the goto for successful headline substitutions above: :substi -} +} :skip_alt_headlines :end