From 78ad57d6919c20831c8f6d3455a72d431afd1715 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Fri, 26 Sep 2014 11:05:10 -0700 Subject: Restored memoization code. --- js/stmd.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'js') diff --git a/js/stmd.js b/js/stmd.js index 287a0c9..3da719f 100755 --- 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, -- cgit v1.2.3