diff options
author | John MacFarlane <jgm@berkeley.edu> | 2015-01-09 21:38:41 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2015-01-09 21:38:41 -0800 |
commit | 6f345edbcfbf2770ccdfb70c2a157eaf0e2930dd (patch) | |
tree | 8a1baca68d4286e93a62c0bc25c59bd8cf4ae465 /js/lib | |
parent | 054fea748f5b6aae9043925abf9b66991cd51887 (diff) |
Improved newline parsing efficiency.
Don't check for `\n` when we know we have one.
Gobble spaces after line break.
Diffstat (limited to 'js/lib')
-rw-r--r-- | js/lib/blocks.js | 3 | ||||
-rw-r--r-- | js/lib/inlines.js | 25 |
2 files changed, 12 insertions, 16 deletions
diff --git a/js/lib/blocks.js b/js/lib/blocks.js index f948e8b..f965fd7 100644 --- a/js/lib/blocks.js +++ b/js/lib/blocks.js @@ -552,8 +552,7 @@ var finalize = function(block, line_number) { switch (block.t) { case 'Paragraph': - block.string_content = block.strings.join('\n').replace(/^ {2,}/m, ''); - // delete block.strings; + block.string_content = block.strings.join('\n'); // try parsing the beginning as link reference definitions: while (block.string_content.charCodeAt(0) === C_OPEN_BRACKET && diff --git a/js/lib/inlines.js b/js/lib/inlines.js index adeac6c..f27a7e7 100644 --- a/js/lib/inlines.js +++ b/js/lib/inlines.js @@ -672,23 +672,20 @@ var parseString = function(block) { // line break; otherwise a soft line break. var parseNewline = function(block) { "use strict"; - var m = this.match(/^\n/); - if (m) { - // check previous node for trailing spaces - var lastc = block.lastChild; - if (lastc && lastc.t === 'Text') { - var sps = / *$/.exec(lastc.literal)[0].length; - if (sps > 0) { - lastc.literal = lastc.literal.replace(/ *$/,''); - } - block.appendChild(new Node(sps >= 2 ? 'Hardbreak' : 'Softbreak')); - } else { - block.appendChild(new Node('Softbreak')); + this.pos += 1; // assume we're at a \n + // check previous node for trailing spaces + var lastc = block.lastChild; + if (lastc && lastc.t === 'Text') { + var sps = / *$/.exec(lastc.literal)[0].length; + if (sps > 0) { + lastc.literal = lastc.literal.replace(/ *$/,''); } - return true; + block.appendChild(new Node(sps >= 2 ? 'Hardbreak' : 'Softbreak')); } else { - return false; + block.appendChild(new Node('Softbreak')); } + this.match(/^ */); // gobble leading spaces in next line + return true; }; // Attempt to parse a link reference, modifying refmap. |