cmark

My personal build of CMark ✏️

Commit
459f08896d2adf09fa3e0a8ce1d2267921b2be5b
Parent
ac8529c9f55da7fdc1186e3f34313cf411de6e71
Author
John MacFarlane <jgm@berkeley.edu>
Date

Revert "Re-added backtracking and memoization."

This reverts commit ac8529c9f55da7fdc1186e3f34313cf411de6e71.

Diffstat

1 file changed, 19 insertions, 11 deletions

Status File Name N° Changes Insertions Deletions
Modified js/stmd.js 30 19 11
diff --git a/js/stmd.js b/js/stmd.js
@@ -289,7 +289,6 @@
         }
 
         this.pos += numdelims;
-        var delimpos = this.pos;
 
         var next_inline;
         var first = [];
@@ -473,31 +472,36 @@
             }
 
         }
-        this.pos = startpos;
-        return null;
 
         switch (state) {
         case 1: // ***a
-            return [{t: 'Emph', c: [{t: 'Str', c: c}]}].concat(first);
+            return [{t: 'Str', c: c+c+c}].concat(first);
         case 2: // **a
             return [{t: 'Str', c: c+c}].concat(first);
         case 3: // *a
             return [{t: 'Str', c: c}].concat(first);
         case 4: // ***a**b
         case 6: // ***a** b
-            return [{t: 'Strong', c:
-                     [{t: 'Str', c: c}].concat(first)}].concat(second);
+            return [{t: 'Str', c: c+c+c}]
+                .concat(first,
+                        [{t: 'Str', c: c+c}],
+                        second);
         case 5: // ***a*b
         case 7: // ***a* b
-            return [{t: 'Emph', c:
-                     [{t: 'Str', c: c+c}].concat(first)}].concat(second);
+            return [{t: 'Str', c: c+c+c}]
+                .concat(first,
+                        [{t: 'Str', c: c}],
+                        second);
         case 8: // **a *b
             return [{t: 'Str', c: c+c}]
                 .concat(first,
                         [{t: 'Str', c: c}],
                         second);
         case 9: // *a **b
-            return [{t: 'Emph', c: first.concat([{t: 'Str', c: c}])}].concat(second);
+            return [{t: 'Str', c: c}]
+                .concat(first,
+                        [{t: 'Str', c: c+c}],
+                        second);
         default:
             console.log("Unknown state, parseEmphasis");
             // shouldn't happen
@@ -779,11 +783,13 @@
     // and returning the inline parsed.
     var parseInline = function() {
         var startpos = this.pos;
+        /*
         var memoized = this.memo[startpos];
         if (memoized) {
             this.pos = memoized.endpos;
             return memoized.inline;
         }
+        */
         var c = this.peek();
         if (!c) {
             return null;
@@ -824,10 +830,12 @@
             this.pos += 1;
             res = [{t: 'Str', c: c}];
         }
+        /*
         if (res) {
             this.memo[startpos] = { inline: res,
                                     endpos: this.pos };
         }
+         */
         return res;
     };
 
@@ -836,7 +844,7 @@
         this.subject = s;
         this.pos = 0;
         this.refmap = refmap || {};
-        this.memo = {};
+        // this.memo = {};
         this.last_emphasis_closer = null;
         var inlines = [];
         var next_inline;
@@ -854,7 +862,7 @@
             last_emphasis_closer: null,  // used by parseEmphasis method
             pos: 0,
             refmap: {},
-            memo: {},
+            // memo: {},
             match: match,
             peek: peek,
             spnl: spnl,