From: Paul Hänsch Date: Mon, 12 Jun 2023 15:02:52 +0000 (+0200) Subject: Squashed 'cgilite/' changes from 0f8f6639..2ea88f76 X-Git-Url: https://git.plutz.net/?a=commitdiff_plain;h=a3e37fbe95bb7b2cca32001ac280e37c4bfdae82;p=shellwiki Squashed 'cgilite/' changes from 0f8f6639..2ea88f76 2ea88f76 Compatibility: Grid Tables section now compatible with posix/busybox awk git-subtree-dir: cgilite git-subtree-split: 2ea88f760e5b796c42e6cd9c2237fc4b26a26e20 --- diff --git a/markdown.awk b/markdown.awk index 33c12bd..7d7e0a5 100755 --- a/markdown.awk +++ b/markdown.awk @@ -399,22 +399,25 @@ function _block( block, LOCAL, st, len, hlvl, htxt, guard, code, indent, attrib "(\\|([^\n]+\\|)+\n)+" \ "(\\+(:?=+:?\\+)+)\n" \ "((\\|([^\n]+\\|)+\n)+" \ - "\\+(-+\\+)+(\n|$))+", \ - tread \ + "\\+(-+\\+)+(\n|$))+" \ ) || \ match( block, "^()()()" \ "(\\+(:?-+:?\\+)+)\n" \ "((\\|([^\n]+\\|)+\n)+" \ - "\\+(-+\\+)+(\n|$))+", \ - tread \ + "\\+(-+\\+)+(\n|$))+" \ ) ) { len = RLENGTH; st = RSTART; #initialize empty arrays - split("", talign); split("", tarray); # split("", tread); + split("", talign); split("", tarray); split("", tread); cols = 0; cnt=0; ttext = ""; + # Column Count + cols = split( gensub( "^(\\+(:?-+:?\\+)+)(\n.*)*$", "\\1", 1, block), tread, /\+/) - 2; + # debug(" Cols: " gensub( "^(\\+(:?-+:?\\+)+)(\n.*)*$", "\\1", 1, block )); + # table alignment - cols = split( gensub( /(^\+|\+$)/, "", "g", tread[4] ), talign, /\+/ ); + split( gensub( "^(.*\n)?\\+((:?=+:?\\+|(:-+|-+:|:-+:)\\+)+)(\n.*)$", "\\2", "g", block ), talign, /\+/ ); + # debug("Align: " gensub( "^(.*\n)?\\+((:?=+:?\\+|(:-+|-+:|:-+:)\\+)+)(\n.*)$", "\\2", "g", block )); for (cnt = 1; cnt <= cols; cnt++) { if (match(talign[cnt], /:(-+|=+):/)) talign[cnt]="center"; @@ -432,9 +435,9 @@ function _block( block, LOCAL, st, len, hlvl, htxt, guard, code, indent, attrib # table header block = substr(block, match(block, /(\n|$)/) + 1 ); while ( match(block, "^\\|([^\n]+\\|)+\n") ) { - cols = split( gensub( /(^\||\|$)/, "", "g", \ - gensub( /(^|[^\\])\\\|/, "\\1\\|", "g", \ - substr(block, 1, match(block, /(\n|$)/)) \ + split( gensub( /(^\||\|$)/, "", "g", \ + gensub( /(^|[^\\])\\\|/, "\\1\\|", "g", \ + substr(block, 1, match(block, /(\n|$)/)) \ )), tread, /\|/); block = substr(block, match(block, /(\n|$)/) + 1 ); for (cnt = 1; cnt <= cols; cnt++)