]> git.plutz.net Git - cgilite/commitdiff
Compatibility: Grid Tables section now compatible with posix/busybox awk
authorPaul Hänsch <paul@plutz.net>
Mon, 12 Jun 2023 15:02:33 +0000 (17:02 +0200)
committerPaul Hänsch <paul@plutz.net>
Mon, 12 Jun 2023 15:02:33 +0000 (17:02 +0200)
markdown.awk

index 33c12bdc9a5be4bcccd3e5bf1b504182291b0c36..7d7e0a5f56d5e70b7e0be4d1d104164a5718b13b 100755 (executable)
@@ -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\\&#x7C;", "g", \
-               substr(block, 1, match(block, /(\n|$)/)) \
+        split( gensub( /(^\||\|$)/, "", "g", \
+                 gensub( /(^|[^\\])\\\|/, "\\1\\&#x7C;", "g", \
+                   substr(block, 1, match(block, /(\n|$)/)) \
         )), tread, /\|/);
         block = substr(block, match(block, /(\n|$)/) + 1 );
         for (cnt = 1; cnt <= cols; cnt++)