From: Paul Hänsch Date: Fri, 1 Sep 2023 15:15:18 +0000 (+0200) Subject: bugfix: do not consume multiple paragraphs in list start X-Git-Url: http://git.plutz.net/?p=cgilite;a=commitdiff_plain;h=8e5ffff1d6ed3d99361ffcfdccc1cd21f5d6d813 bugfix: do not consume multiple paragraphs in list start --- diff --git a/markdown.awk b/markdown.awk index 1e3c6e0..92b32fc 100755 --- a/markdown.awk +++ b/markdown.awk @@ -741,15 +741,16 @@ 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( list, "\n" exclude "[ \t]" )) { block = substr(list, RSTART + 1) block; list = substr(list, 1, RSTART);