From 808d52e047b5671ef6cf8566875fc5e7d950ef36 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Wed, 8 Apr 2020 23:46:46 -0500 Subject: [PATCH 1/3] fix demo tokens --- docs/demo/worker.js | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/docs/demo/worker.js b/docs/demo/worker.js index df69e9204c..53ef18a0f4 100644 --- a/docs/demo/worker.js +++ b/docs/demo/worker.js @@ -66,17 +66,9 @@ function getLexedList(lexed, level) { level = level || 0; var lexedList = []; for (var i = 0; i < lexed.length; i++) { - var lexedLine = []; - for (var j in lexed[i]) { - if (j === 'tokens' || j === 'items') { - lexedLine.push(j + ': [\n' + getLexedList(lexed[i][j], level + 1) + '\n]'); - } else { - lexedLine.push(j + ':' + jsonString(lexed[i][j])); - } - } - lexedList.push(stringRepeat(' ', 2 * level) + '{' + lexedLine.join(', ') + '}'); + lexedList.push(stringRepeat(' ', 2 * level) + jsonString(lexed[i], level)); } - return lexedList.join('\n'); + return '[\n' + lexedList.join('\n') + '\n]'; } function stringRepeat(char, times) { @@ -87,15 +79,28 @@ function stringRepeat(char, times) { return s; } -function jsonString(input) { - var output = (input + '') - .replace(/\n/g, '\\n') - .replace(/\r/g, '\\r') - .replace(/\t/g, '\\t') - .replace(/\f/g, '\\f') - .replace(/[\\"']/g, '\\$&') - .replace(/\u0000/g, '\\0'); - return '"' + output + '"'; +function jsonString(input, level) { + if (Array.isArray(input)) { + if (input.length === 0) { + return '[]'; + } + if (!Array.isArray(input[0]) && typeof input[0] === 'object' && input[0] !== null) { + return '[\n' + getLexedList(input, level + 1) + '\n]'; + } + var items = []; + for (var i = 0; i < input.length; i++) { + items.push(jsonString(input[i], level)); + } + return '[' + items.join(', ') + ']'; + } else if (typeof input === 'object' && input !== null) { + var props = []; + for (var prop in input) { + props.push(prop + ':' + jsonString(input[prop], level)); + } + return '{' + props.join(', ') + '}'; + } else { + return JSON.stringify(input); + } } function loadVersion(ver) { From be697ff89f798ad36b57072b6bd08bd0b968a213 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Wed, 8 Apr 2020 23:52:39 -0500 Subject: [PATCH 2/3] fix duplicate array --- docs/demo/worker.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/demo/worker.js b/docs/demo/worker.js index 53ef18a0f4..bf913dc62d 100644 --- a/docs/demo/worker.js +++ b/docs/demo/worker.js @@ -49,7 +49,7 @@ function parse(e) { case 'parse': var startTime = new Date(); var lexed = marked.lexer(e.data.markdown, e.data.options); - var lexedList = getLexedList(lexed); + var lexedList = tokenList(lexed); var parsed = marked.parser(lexed, e.data.options); var endTime = new Date(); postMessage({ @@ -62,7 +62,7 @@ function parse(e) { } } -function getLexedList(lexed, level) { +function tokenList(lexed, level) { level = level || 0; var lexedList = []; for (var i = 0; i < lexed.length; i++) { @@ -85,7 +85,7 @@ function jsonString(input, level) { return '[]'; } if (!Array.isArray(input[0]) && typeof input[0] === 'object' && input[0] !== null) { - return '[\n' + getLexedList(input, level + 1) + '\n]'; + return tokenList(input, level + 1); } var items = []; for (var i = 0; i < input.length; i++) { From ab033f27f3ee0906569c403c32f22d0ffe1a64f4 Mon Sep 17 00:00:00 2001 From: Tony Brix Date: Wed, 8 Apr 2020 23:57:18 -0500 Subject: [PATCH 3/3] remove tokenList --- docs/demo/worker.js | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/docs/demo/worker.js b/docs/demo/worker.js index bf913dc62d..5fb5fd869a 100644 --- a/docs/demo/worker.js +++ b/docs/demo/worker.js @@ -49,7 +49,7 @@ function parse(e) { case 'parse': var startTime = new Date(); var lexed = marked.lexer(e.data.markdown, e.data.options); - var lexedList = tokenList(lexed); + var lexedList = jsonString(lexed); var parsed = marked.parser(lexed, e.data.options); var endTime = new Date(); postMessage({ @@ -62,15 +62,6 @@ function parse(e) { } } -function tokenList(lexed, level) { - level = level || 0; - var lexedList = []; - for (var i = 0; i < lexed.length; i++) { - lexedList.push(stringRepeat(' ', 2 * level) + jsonString(lexed[i], level)); - } - return '[\n' + lexedList.join('\n') + '\n]'; -} - function stringRepeat(char, times) { var s = ''; for (var i = 0; i < times; i++) { @@ -80,15 +71,20 @@ function stringRepeat(char, times) { } function jsonString(input, level) { + level = level || 0; if (Array.isArray(input)) { if (input.length === 0) { return '[]'; } + var items = [], + i; if (!Array.isArray(input[0]) && typeof input[0] === 'object' && input[0] !== null) { - return tokenList(input, level + 1); + for (i = 0; i < input.length; i++) { + items.push(stringRepeat(' ', 2 * level) + jsonString(input[i], level + 1)); + } + return '[\n' + items.join('\n') + '\n]'; } - var items = []; - for (var i = 0; i < input.length; i++) { + for (i = 0; i < input.length; i++) { items.push(jsonString(input[i], level)); } return '[' + items.join(', ') + ']';