]> git.plutz.net Git - cgilite/commitdiff
bugfix: avoid endless loops for some incomplete matches master
authorPaul Hänsch <paul@plutz.net>
Wed, 9 Oct 2024 05:10:39 +0000 (07:10 +0200)
committerPaul Hänsch <paul@plutz.net>
Wed, 9 Oct 2024 05:10:39 +0000 (07:10 +0200)
markdown.awk
tests-markdown.sh

index 356a987bf68969764e7dda57252fb735d5d14c34..bef97d1b7955191cb6b63af748c761d5288dea3a 100755 (executable)
@@ -372,11 +372,10 @@ function inline( line, LOCAL, len, text, code, href, guard, ret ) {
       ret = ret HTML(substr(line, 1, 1)); line = substr(line, 2);
       continue;
 
-    #  continue walk over string
-    } else {
-      ret = ret substr(line, 1, 1); line = substr(line, 2);
-      continue;
-    }
+    }  # inline patterns end
+
+    # continue walk over string
+    ret = ret substr(line, 1, 1); line = substr(line, 2);
   }
   return ret;
 }
@@ -851,10 +850,10 @@ function _block( block, LOCAL, st, len, text, title, attrib, href, guard, code,
       ret = ret _block(substr(block, 1, st - 1)) "<hr>\n"; block = substr(block, st + len);
       continue;
 
+    }  # block patterns end
+
     # Plain paragraph
-    } else {
-      return ret "<p>" inline(block) "</p>\n";
-    }
+    return ret "<p>" inline(block) "</p>\n";
   }
   return ret;
 }
index a834391f07bdb66b444d988676c3febfbc7813b1..6df4224d131d6beb7d2f1cab50ab2953517f18aa 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-runtimes="gawk bawk mawk goawk"
+runtimes="gawk busybox mawk goawk"
 
 BR='
 '
@@ -9,7 +9,7 @@ fail() { printf '%s\n' "$@"; exit 1; }
 
 awk() { /bin/awk "$@"; }
 md_gawk() { gawk -f markdown.awk "$@"; }
-md_bawk() { busybox awk -f markdown.awk "$@"; }
+md_busybox() { busybox awk -f markdown.awk "$@"; }
 md_mawk() { mawk -f markdown.awk "$@"; }
 md_goawk() { goawk -f markdown.awk "$@"; }
 
@@ -45,6 +45,7 @@ assert '~sub~' '<p><sub>sub</sub></p>' "subscript"
 
 assert "foo  ${BR}bar" "<p>foo<br>${BR}bar</p>" 'double space line break'
 assert '```&copy;```' "<p><code>&amp;copy;</code></p>" "code span escape"
+assert '````' "<pre><code>````</code></pre>" "empty code span"
 
 assert '_emphasized text_' '<p><em>emphasized text</em></p>' "em"
 assert '_emphasized_text_' '<p><em>emphasized_text</em></p>' "em"
@@ -190,6 +191,14 @@ not be
 but &amp;shy; &lt;escaped&gt;</code></pre>' \
 "fenced code block"
 
+assert 'foobar
+````
+foobar' \
+'<p>foobar
+````
+foobar</p>' \
+"Open Fence"
+
 # Block Images
 assert '![Testbild](Test Bild.jpg)' \
 '<figure data-src="Test Bild.jpg"><img src="Test Bild.jpg" alt="Testbild"></figure>' \