summaryrefslogtreecommitdiffstats
path: root/packages/markdown/marked/docs/demo/worker.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/markdown/marked/docs/demo/worker.js')
-rw-r--r--packages/markdown/marked/docs/demo/worker.js60
1 files changed, 39 insertions, 21 deletions
diff --git a/packages/markdown/marked/docs/demo/worker.js b/packages/markdown/marked/docs/demo/worker.js
index 6a0fa032..5fb5fd86 100644
--- a/packages/markdown/marked/docs/demo/worker.js
+++ b/packages/markdown/marked/docs/demo/worker.js
@@ -1,4 +1,5 @@
/* globals marked, unfetch, ES6Promise, Promise */ // eslint-disable-line no-redeclare
+
if (!self.Promise) {
self.importScripts('https://cdn.jsdelivr.net/npm/es6-promise/dist/es6-promise.js');
self.Promise = ES6Promise;
@@ -48,38 +49,55 @@ function parse(e) {
case 'parse':
var startTime = new Date();
var lexed = marked.lexer(e.data.markdown, e.data.options);
- var lexedList = [];
- for (var i = 0; i < lexed.length; i++) {
- var lexedLine = [];
- for (var j in lexed[i]) {
- lexedLine.push(j + ':' + jsonString(lexed[i][j]));
- }
- lexedList.push('{' + lexedLine.join(', ') + '}');
- }
+ var lexedList = jsonString(lexed);
var parsed = marked.parser(lexed, e.data.options);
var endTime = new Date();
- // setTimeout(function () {
postMessage({
task: e.data.task,
- lexed: lexedList.join('\n'),
+ lexed: lexedList,
parsed: parsed,
time: endTime - startTime
});
- // }, 10000);
break;
}
}
-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 stringRepeat(char, times) {
+ var s = '';
+ for (var i = 0; i < times; i++) {
+ s += char;
+ }
+ return s;
+}
+
+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) {
+ for (i = 0; i < input.length; i++) {
+ items.push(stringRepeat(' ', 2 * level) + jsonString(input[i], level + 1));
+ }
+ return '[\n' + items.join('\n') + '\n]';
+ }
+ for (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) {
var promise;