- Commit
- 78ad57d6919c20831c8f6d3455a72d431afd1715
- Parent
- 151cb9e51b25bfd644e1920c078ca894fc9e7e9d
- Author
- John MacFarlane <jgm@berkeley.edu>
- Date
Restored memoization code.
My personal build of CMark ✏️
Restored memoization code.
1 file changed, 15 insertions, 0 deletions
Status | File Name | N° Changes | Insertions | Deletions |
Modified | js/stmd.js | 15 | 15 | 0 |
diff --git a/js/stmd.js b/js/stmd.js @@ -745,6 +745,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; @@ -785,6 +792,12 @@ this.pos += 1; res = [{t: 'Str', c: c}]; } + + if (res) { + this.memo[startpos] = { inline: res, + endpos: this.pos }; + } + return res; }; @@ -793,6 +806,7 @@ this.subject = s; this.pos = 0; this.refmap = refmap || {}; + this.memo = {}; this.last_emphasis_closer = { '*': s.length, '_': s.length }; var inlines = []; var next_inline; @@ -810,6 +824,7 @@ last_emphasis_closer: null, // used by parseEmphasis method pos: 0, refmap: {}, + memo: {}, match: match, peek: peek, spnl: spnl,