X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=markdown.awk;h=3b5a9bb063ce8e18c7a7bc41abfa8569f08bad15;hb=4ee910d547ff383c57c513436a6ed2576f66bf0d;hp=1e3c6e041ab500756fbfb9dd62f556441de6090a;hpb=3055b170b4be8a5a0939a0394ef470b90208e7ff;p=cgilite diff --git a/markdown.awk b/markdown.awk index 1e3c6e0..3b5a9bb 100755 --- a/markdown.awk +++ b/markdown.awk @@ -741,15 +741,17 @@ function _block( block, LOCAL, st, len, text, title, attrib, href, guard, code, function _startlist(block, type, mark, exclude, LOCAL, st, len, list, indent, text) { if (match( block, "(^|\n) ? ? ?" mark "[ \t][^\n]+(\n|$)" \ - "(([ \t]*\n)* ? ? ?" mark "[ \t][^\n]+(\n|$)" \ - "|([ \t]*\n)*( ? ? ?\t| +)[^\n]+(\n|$)" \ - "|[^\n \t][^\n]+(\n|$))*" ) ) { - st = RSTART; len = RLENGTH; list = substr( block, RSTART, RLENGTH); + "(([ \t]*\n)* ? ? ?" mark "[ \t][^\n]+(\n|$)" \ + "|([ \t]*\n)*( ? ? ?\t| +)[^\n]+(\n|$)" \ + "|[^\n \t][^\n]+(\n|$))*" ) ) { + st = RSTART; len = RLENGTH; list = substr( block, st, len); sub("^\n", "", list); match(list, "^ ? ? ?"); indent = RLENGTH; gsub( "(^|\n) {0," indent "}", "\n", list); sub("^\n", "", list); text = substr(block, 1, st - 1); block = substr(block, st + len); + if (match(text, /\n[[:space:]]*\n/)) return 0; + if (match(text, "(^|\n) ? ? ?" exclude "[ \t][^\n]+")) return 0; if (match( list, "\n" exclude "[ \t]" )) { block = substr(list, RSTART + 1) block; list = substr(list, 1, RSTART);