From e619859fa2c940c4ab4c31550717d233c145bfea Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Sun, 26 Jun 2022 18:50:03 +0200 Subject: [PATCH] anchor links for headlines, bugfix: continue block processing right after tables --- markdown.awk | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/markdown.awk b/markdown.awk index b86cd84..69a2fa8 100755 --- a/markdown.awk +++ b/markdown.awk @@ -341,7 +341,7 @@ function _block( block, LOCAL, st, len, hlvl, htxt, guard, code, indent, attrib ttext = ttext "" inline(tarray[cnt]) "" ttext = ttext "\n" } - return "" ttext "
\n" _block( substr(block, len + 1) ); + return "" ttext "
\n" _block(block); # Grid Tables (pandoc) } else if ( match(block, "^\\+(-+\\+)+\n" \ @@ -403,7 +403,7 @@ function _block( block, LOCAL, st, len, hlvl, htxt, guard, code, indent, attrib ttext = ttext "" _block(tarray[cnt]) "" ttext = ttext "\n" } - return "" ttext "
\n" _block( substr(block, len + 1) ); + return "" ttext "
\n" _block(block); # Line Blocks (pandoc) } else if ( match(block, /^\| [^\n]*(\n|$)(\| [^\n]*(\n|$)|[ \t]+[^\n[:space:]][^\n]*(\n|$))*/) ) { @@ -488,14 +488,20 @@ function _block( block, LOCAL, st, len, hlvl, htxt, guard, code, indent, attrib } else if ( match( block, /^[^\n]+\n===+(\n|$)/ ) ) { len = RLENGTH; HL[1]++; HL[2] = 0; HL[3] = 0; HL[4] = 0; HL[5] = 0; HL[6] = 0; - return "

" inline( gensub( /\n.*$/, "", "g", block ) ) "

\n\n" \ + return "

" \ + inline( gensub( /\n.*$/, "", "g", block ) ) \ + "

\n\n" \ _block( substr( block, len + 1 ) ); # Second Order Heading } else if ( match( block, /^[^\n]+\n---+(\n|$)/ ) ) { len = RLENGTH; HL[2]++; HL[3] = 0; HL[4] = 0; HL[5] = 0; HL[6] = 0; - return "

" inline( gensub( /\n.*$/, "", "g", block ) ) "

\n\n" \ + return "

" \ + inline( gensub( /\n.*$/, "", "g", block ) ) \ + "

\n\n" \ _block( substr( block, len + 1) ); # Nth Order Heading @@ -505,7 +511,8 @@ function _block( block, LOCAL, st, len, hlvl, htxt, guard, code, indent, attrib htxt = gensub(/^#{1,6}[ \t]*(([^ \t\n]+|[ \t]+[^ \t\n#]|[ \t]+#+[^\n#])+)([ \t]*#*)(\n.*)?$/, "\\1", 1, block); HL[hlvl]++; for ( n = hlvl + 1; n < 7; n++) { HL[n] = 0;} hid = HL[1]; for ( n = 2; n <= hlvl; n++) { hid = hid "." HL[n] ; } - return "" inline( htxt ) "\n\n" \ + return "" inline( htxt ) \ + "\n\n" \ _block( substr( block, len + 1) ); # Split paragraphs -- 2.39.2