marked 4.2.12 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/marked.cjs +388 -279
- package/lib/marked.esm.js +254 -158
- package/lib/marked.umd.js +388 -279
- package/marked.min.js +2 -2
- package/package.json +14 -14
- package/src/Hooks.js +26 -0
- package/src/Parser.js +1 -2
- package/src/Renderer.js +1 -1
- package/src/Tokenizer.js +2 -0
- package/src/defaults.js +1 -0
- package/src/helpers.js +34 -19
- package/src/marked.js +176 -126
- package/src/rules.js +19 -15
package/lib/marked.umd.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* marked
|
|
2
|
+
* marked v5.0.0 - a markdown parser
|
|
3
3
|
* Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)
|
|
4
4
|
* https://github.com/markedjs/marked
|
|
5
5
|
*/
|
|
@@ -32,6 +32,20 @@
|
|
|
32
32
|
});
|
|
33
33
|
return Constructor;
|
|
34
34
|
}
|
|
35
|
+
function _extends() {
|
|
36
|
+
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
37
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
38
|
+
var source = arguments[i];
|
|
39
|
+
for (var key in source) {
|
|
40
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
41
|
+
target[key] = source[key];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return target;
|
|
46
|
+
};
|
|
47
|
+
return _extends.apply(this, arguments);
|
|
48
|
+
}
|
|
35
49
|
function _unsupportedIterableToArray(o, minLen) {
|
|
36
50
|
if (!o) return;
|
|
37
51
|
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
@@ -88,6 +102,7 @@
|
|
|
88
102
|
headerIds: true,
|
|
89
103
|
headerPrefix: '',
|
|
90
104
|
highlight: null,
|
|
105
|
+
hooks: null,
|
|
91
106
|
langPrefix: 'language-',
|
|
92
107
|
mangle: true,
|
|
93
108
|
pedantic: false,
|
|
@@ -242,29 +257,13 @@
|
|
|
242
257
|
var noopTest = {
|
|
243
258
|
exec: function noopTest() {}
|
|
244
259
|
};
|
|
245
|
-
function merge(obj) {
|
|
246
|
-
var i = 1,
|
|
247
|
-
target,
|
|
248
|
-
key;
|
|
249
|
-
for (; i < arguments.length; i++) {
|
|
250
|
-
target = arguments[i];
|
|
251
|
-
for (key in target) {
|
|
252
|
-
if (Object.prototype.hasOwnProperty.call(target, key)) {
|
|
253
|
-
obj[key] = target[key];
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
return obj;
|
|
258
|
-
}
|
|
259
260
|
function splitCells(tableRow, count) {
|
|
260
261
|
// ensure that every cell-delimiting pipe has a space
|
|
261
262
|
// before it to distinguish it from an escaped pipe
|
|
262
263
|
var row = tableRow.replace(/\|/g, function (match, offset, str) {
|
|
263
264
|
var escaped = false,
|
|
264
265
|
curr = offset;
|
|
265
|
-
while (--curr >= 0 && str[curr] === '\\')
|
|
266
|
-
escaped = !escaped;
|
|
267
|
-
}
|
|
266
|
+
while (--curr >= 0 && str[curr] === '\\') escaped = !escaped;
|
|
268
267
|
if (escaped) {
|
|
269
268
|
// odd number of slashes means | is escaped
|
|
270
269
|
// so we leave it alone
|
|
@@ -287,9 +286,7 @@
|
|
|
287
286
|
if (cells.length > count) {
|
|
288
287
|
cells.splice(count);
|
|
289
288
|
} else {
|
|
290
|
-
while (cells.length < count)
|
|
291
|
-
cells.push('');
|
|
292
|
-
}
|
|
289
|
+
while (cells.length < count) cells.push('');
|
|
293
290
|
}
|
|
294
291
|
for (; i < cells.length; i++) {
|
|
295
292
|
// leading or trailing whitespace is ignored per the gfm spec
|
|
@@ -349,10 +346,34 @@
|
|
|
349
346
|
}
|
|
350
347
|
return -1;
|
|
351
348
|
}
|
|
352
|
-
function
|
|
353
|
-
if (opt
|
|
349
|
+
function checkDeprecations(opt, callback) {
|
|
350
|
+
if (!opt || opt.silent) {
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
if (callback) {
|
|
354
|
+
console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');
|
|
355
|
+
}
|
|
356
|
+
if (opt.sanitize || opt.sanitizer) {
|
|
354
357
|
console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');
|
|
355
358
|
}
|
|
359
|
+
if (opt.highlight || opt.langPrefix) {
|
|
360
|
+
console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');
|
|
361
|
+
}
|
|
362
|
+
if (opt.mangle) {
|
|
363
|
+
console.warn('marked(): mangle parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-mangle.');
|
|
364
|
+
}
|
|
365
|
+
if (opt.baseUrl) {
|
|
366
|
+
console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');
|
|
367
|
+
}
|
|
368
|
+
if (opt.smartypants) {
|
|
369
|
+
console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');
|
|
370
|
+
}
|
|
371
|
+
if (opt.xhtml) {
|
|
372
|
+
console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');
|
|
373
|
+
}
|
|
374
|
+
if (opt.headerIds || opt.headerPrefix) {
|
|
375
|
+
console.warn('marked(): headerIds and headerPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-gfm-heading-id.');
|
|
376
|
+
}
|
|
356
377
|
}
|
|
357
378
|
|
|
358
379
|
// copied from https://stackoverflow.com/a/5450113/806777
|
|
@@ -697,6 +718,7 @@
|
|
|
697
718
|
if (cap) {
|
|
698
719
|
var token = {
|
|
699
720
|
type: 'html',
|
|
721
|
+
block: true,
|
|
700
722
|
raw: cap[0],
|
|
701
723
|
pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
|
|
702
724
|
text: cap[0]
|
|
@@ -845,6 +867,7 @@
|
|
|
845
867
|
raw: cap[0],
|
|
846
868
|
inLink: this.lexer.state.inLink,
|
|
847
869
|
inRawBlock: this.lexer.state.inRawBlock,
|
|
870
|
+
block: false,
|
|
848
871
|
text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]
|
|
849
872
|
};
|
|
850
873
|
}
|
|
@@ -926,7 +949,7 @@
|
|
|
926
949
|
if (!match) return;
|
|
927
950
|
|
|
928
951
|
// _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
|
|
929
|
-
if (match[3] && prevChar.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\
|
|
952
|
+
if (match[3] && prevChar.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])/)) return;
|
|
930
953
|
var nextChar = match[1] || match[2] || '';
|
|
931
954
|
if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
|
|
932
955
|
var lLength = match[0].length - 1;
|
|
@@ -1105,7 +1128,7 @@
|
|
|
1105
1128
|
var block = {
|
|
1106
1129
|
newline: /^(?: *(?:\n|$))+/,
|
|
1107
1130
|
code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
|
|
1108
|
-
fences: /^ {0,3}(`{3,}(?=[^`\n]
|
|
1131
|
+
fences: /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,
|
|
1109
1132
|
hr: /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,
|
|
1110
1133
|
heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,
|
|
1111
1134
|
blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
|
|
@@ -1147,13 +1170,13 @@
|
|
|
1147
1170
|
* Normal Block Grammar
|
|
1148
1171
|
*/
|
|
1149
1172
|
|
|
1150
|
-
block.normal =
|
|
1173
|
+
block.normal = _extends({}, block);
|
|
1151
1174
|
|
|
1152
1175
|
/**
|
|
1153
1176
|
* GFM Block Grammar
|
|
1154
1177
|
*/
|
|
1155
1178
|
|
|
1156
|
-
block.gfm =
|
|
1179
|
+
block.gfm = _extends({}, block.normal, {
|
|
1157
1180
|
table: '^ *([^\\n ].*\\|.*)\\n' // Header
|
|
1158
1181
|
+ ' {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?' // Align
|
|
1159
1182
|
+ '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)' // Cells
|
|
@@ -1171,7 +1194,7 @@
|
|
|
1171
1194
|
* Pedantic grammar (original John Gruber's loose markdown specification)
|
|
1172
1195
|
*/
|
|
1173
1196
|
|
|
1174
|
-
block.pedantic =
|
|
1197
|
+
block.pedantic = _extends({}, block.normal, {
|
|
1175
1198
|
html: edit('^ *(?:comment *(?:\\n|\\s*$)' + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
|
|
1176
1199
|
+ '|<tag(?:"[^"]*"|\'[^\']*\'|\\s[^\'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b').getRegex(),
|
|
1177
1200
|
def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
|
|
@@ -1246,13 +1269,13 @@
|
|
|
1246
1269
|
* Normal Inline Grammar
|
|
1247
1270
|
*/
|
|
1248
1271
|
|
|
1249
|
-
inline.normal =
|
|
1272
|
+
inline.normal = _extends({}, inline);
|
|
1250
1273
|
|
|
1251
1274
|
/**
|
|
1252
1275
|
* Pedantic Inline Grammar
|
|
1253
1276
|
*/
|
|
1254
1277
|
|
|
1255
|
-
inline.pedantic =
|
|
1278
|
+
inline.pedantic = _extends({}, inline.normal, {
|
|
1256
1279
|
strong: {
|
|
1257
1280
|
start: /^__|\*\*/,
|
|
1258
1281
|
middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
|
|
@@ -1273,7 +1296,7 @@
|
|
|
1273
1296
|
* GFM Inline Grammar
|
|
1274
1297
|
*/
|
|
1275
1298
|
|
|
1276
|
-
inline.gfm =
|
|
1299
|
+
inline.gfm = _extends({}, inline.normal, {
|
|
1277
1300
|
escape: edit(inline.escape).replace('])', '~|])').getRegex(),
|
|
1278
1301
|
_extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
|
|
1279
1302
|
url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
|
|
@@ -1286,7 +1309,7 @@
|
|
|
1286
1309
|
* GFM + Line Breaks Inline Grammar
|
|
1287
1310
|
*/
|
|
1288
1311
|
|
|
1289
|
-
inline.breaks =
|
|
1312
|
+
inline.breaks = _extends({}, inline.gfm, {
|
|
1290
1313
|
br: edit(inline.br).replace('{2,}', '*').getRegex(),
|
|
1291
1314
|
text: edit(inline.gfm.text).replace('\\b_', '\\b_| {2,}\\n').replace(/\{2,\}/g, '*').getRegex()
|
|
1292
1315
|
});
|
|
@@ -1417,8 +1440,8 @@
|
|
|
1417
1440
|
});
|
|
1418
1441
|
}
|
|
1419
1442
|
var token, lastToken, cutSrc, lastParagraphClipped;
|
|
1420
|
-
|
|
1421
|
-
if (
|
|
1443
|
+
var _loop = function _loop() {
|
|
1444
|
+
if (_this.options.extensions && _this.options.extensions.block && _this.options.extensions.block.some(function (extTokenizer) {
|
|
1422
1445
|
if (token = extTokenizer.call({
|
|
1423
1446
|
lexer: _this
|
|
1424
1447
|
}, src, tokens)) {
|
|
@@ -1428,11 +1451,11 @@
|
|
|
1428
1451
|
}
|
|
1429
1452
|
return false;
|
|
1430
1453
|
})) {
|
|
1431
|
-
continue;
|
|
1454
|
+
return "continue";
|
|
1432
1455
|
}
|
|
1433
1456
|
|
|
1434
1457
|
// newline
|
|
1435
|
-
if (token =
|
|
1458
|
+
if (token = _this.tokenizer.space(src)) {
|
|
1436
1459
|
src = src.substring(token.raw.length);
|
|
1437
1460
|
if (token.raw.length === 1 && tokens.length > 0) {
|
|
1438
1461
|
// if there's a single \n as a spacer, it's terminating the last line,
|
|
@@ -1441,156 +1464,159 @@
|
|
|
1441
1464
|
} else {
|
|
1442
1465
|
tokens.push(token);
|
|
1443
1466
|
}
|
|
1444
|
-
continue;
|
|
1467
|
+
return "continue";
|
|
1445
1468
|
}
|
|
1446
1469
|
|
|
1447
1470
|
// code
|
|
1448
|
-
if (token =
|
|
1471
|
+
if (token = _this.tokenizer.code(src)) {
|
|
1449
1472
|
src = src.substring(token.raw.length);
|
|
1450
1473
|
lastToken = tokens[tokens.length - 1];
|
|
1451
1474
|
// An indented code block cannot interrupt a paragraph.
|
|
1452
1475
|
if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
|
|
1453
1476
|
lastToken.raw += '\n' + token.raw;
|
|
1454
1477
|
lastToken.text += '\n' + token.text;
|
|
1455
|
-
|
|
1478
|
+
_this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
|
|
1456
1479
|
} else {
|
|
1457
1480
|
tokens.push(token);
|
|
1458
1481
|
}
|
|
1459
|
-
continue;
|
|
1482
|
+
return "continue";
|
|
1460
1483
|
}
|
|
1461
1484
|
|
|
1462
1485
|
// fences
|
|
1463
|
-
if (token =
|
|
1486
|
+
if (token = _this.tokenizer.fences(src)) {
|
|
1464
1487
|
src = src.substring(token.raw.length);
|
|
1465
1488
|
tokens.push(token);
|
|
1466
|
-
continue;
|
|
1489
|
+
return "continue";
|
|
1467
1490
|
}
|
|
1468
1491
|
|
|
1469
1492
|
// heading
|
|
1470
|
-
if (token =
|
|
1493
|
+
if (token = _this.tokenizer.heading(src)) {
|
|
1471
1494
|
src = src.substring(token.raw.length);
|
|
1472
1495
|
tokens.push(token);
|
|
1473
|
-
continue;
|
|
1496
|
+
return "continue";
|
|
1474
1497
|
}
|
|
1475
1498
|
|
|
1476
1499
|
// hr
|
|
1477
|
-
if (token =
|
|
1500
|
+
if (token = _this.tokenizer.hr(src)) {
|
|
1478
1501
|
src = src.substring(token.raw.length);
|
|
1479
1502
|
tokens.push(token);
|
|
1480
|
-
continue;
|
|
1503
|
+
return "continue";
|
|
1481
1504
|
}
|
|
1482
1505
|
|
|
1483
1506
|
// blockquote
|
|
1484
|
-
if (token =
|
|
1507
|
+
if (token = _this.tokenizer.blockquote(src)) {
|
|
1485
1508
|
src = src.substring(token.raw.length);
|
|
1486
1509
|
tokens.push(token);
|
|
1487
|
-
continue;
|
|
1510
|
+
return "continue";
|
|
1488
1511
|
}
|
|
1489
1512
|
|
|
1490
1513
|
// list
|
|
1491
|
-
if (token =
|
|
1514
|
+
if (token = _this.tokenizer.list(src)) {
|
|
1492
1515
|
src = src.substring(token.raw.length);
|
|
1493
1516
|
tokens.push(token);
|
|
1494
|
-
continue;
|
|
1517
|
+
return "continue";
|
|
1495
1518
|
}
|
|
1496
1519
|
|
|
1497
1520
|
// html
|
|
1498
|
-
if (token =
|
|
1521
|
+
if (token = _this.tokenizer.html(src)) {
|
|
1499
1522
|
src = src.substring(token.raw.length);
|
|
1500
1523
|
tokens.push(token);
|
|
1501
|
-
continue;
|
|
1524
|
+
return "continue";
|
|
1502
1525
|
}
|
|
1503
1526
|
|
|
1504
1527
|
// def
|
|
1505
|
-
if (token =
|
|
1528
|
+
if (token = _this.tokenizer.def(src)) {
|
|
1506
1529
|
src = src.substring(token.raw.length);
|
|
1507
1530
|
lastToken = tokens[tokens.length - 1];
|
|
1508
1531
|
if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
|
|
1509
1532
|
lastToken.raw += '\n' + token.raw;
|
|
1510
1533
|
lastToken.text += '\n' + token.raw;
|
|
1511
|
-
|
|
1512
|
-
} else if (!
|
|
1513
|
-
|
|
1534
|
+
_this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
|
|
1535
|
+
} else if (!_this.tokens.links[token.tag]) {
|
|
1536
|
+
_this.tokens.links[token.tag] = {
|
|
1514
1537
|
href: token.href,
|
|
1515
1538
|
title: token.title
|
|
1516
1539
|
};
|
|
1517
1540
|
}
|
|
1518
|
-
continue;
|
|
1541
|
+
return "continue";
|
|
1519
1542
|
}
|
|
1520
1543
|
|
|
1521
1544
|
// table (gfm)
|
|
1522
|
-
if (token =
|
|
1545
|
+
if (token = _this.tokenizer.table(src)) {
|
|
1523
1546
|
src = src.substring(token.raw.length);
|
|
1524
1547
|
tokens.push(token);
|
|
1525
|
-
continue;
|
|
1548
|
+
return "continue";
|
|
1526
1549
|
}
|
|
1527
1550
|
|
|
1528
1551
|
// lheading
|
|
1529
|
-
if (token =
|
|
1552
|
+
if (token = _this.tokenizer.lheading(src)) {
|
|
1530
1553
|
src = src.substring(token.raw.length);
|
|
1531
1554
|
tokens.push(token);
|
|
1532
|
-
continue;
|
|
1555
|
+
return "continue";
|
|
1533
1556
|
}
|
|
1534
1557
|
|
|
1535
1558
|
// top-level paragraph
|
|
1536
1559
|
// prevent paragraph consuming extensions by clipping 'src' to extension start
|
|
1537
1560
|
cutSrc = src;
|
|
1538
|
-
if (
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
startIndex = Math.min(startIndex, tempStart);
|
|
1549
|
-
}
|
|
1550
|
-
});
|
|
1551
|
-
if (startIndex < Infinity && startIndex >= 0) {
|
|
1552
|
-
cutSrc = src.substring(0, startIndex + 1);
|
|
1561
|
+
if (_this.options.extensions && _this.options.extensions.startBlock) {
|
|
1562
|
+
var startIndex = Infinity;
|
|
1563
|
+
var tempSrc = src.slice(1);
|
|
1564
|
+
var tempStart;
|
|
1565
|
+
_this.options.extensions.startBlock.forEach(function (getStartIndex) {
|
|
1566
|
+
tempStart = getStartIndex.call({
|
|
1567
|
+
lexer: this
|
|
1568
|
+
}, tempSrc);
|
|
1569
|
+
if (typeof tempStart === 'number' && tempStart >= 0) {
|
|
1570
|
+
startIndex = Math.min(startIndex, tempStart);
|
|
1553
1571
|
}
|
|
1554
|
-
})
|
|
1572
|
+
});
|
|
1573
|
+
if (startIndex < Infinity && startIndex >= 0) {
|
|
1574
|
+
cutSrc = src.substring(0, startIndex + 1);
|
|
1575
|
+
}
|
|
1555
1576
|
}
|
|
1556
|
-
if (
|
|
1577
|
+
if (_this.state.top && (token = _this.tokenizer.paragraph(cutSrc))) {
|
|
1557
1578
|
lastToken = tokens[tokens.length - 1];
|
|
1558
1579
|
if (lastParagraphClipped && lastToken.type === 'paragraph') {
|
|
1559
1580
|
lastToken.raw += '\n' + token.raw;
|
|
1560
1581
|
lastToken.text += '\n' + token.text;
|
|
1561
|
-
|
|
1562
|
-
|
|
1582
|
+
_this.inlineQueue.pop();
|
|
1583
|
+
_this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
|
|
1563
1584
|
} else {
|
|
1564
1585
|
tokens.push(token);
|
|
1565
1586
|
}
|
|
1566
1587
|
lastParagraphClipped = cutSrc.length !== src.length;
|
|
1567
1588
|
src = src.substring(token.raw.length);
|
|
1568
|
-
continue;
|
|
1589
|
+
return "continue";
|
|
1569
1590
|
}
|
|
1570
1591
|
|
|
1571
1592
|
// text
|
|
1572
|
-
if (token =
|
|
1593
|
+
if (token = _this.tokenizer.text(src)) {
|
|
1573
1594
|
src = src.substring(token.raw.length);
|
|
1574
1595
|
lastToken = tokens[tokens.length - 1];
|
|
1575
1596
|
if (lastToken && lastToken.type === 'text') {
|
|
1576
1597
|
lastToken.raw += '\n' + token.raw;
|
|
1577
1598
|
lastToken.text += '\n' + token.text;
|
|
1578
|
-
|
|
1579
|
-
|
|
1599
|
+
_this.inlineQueue.pop();
|
|
1600
|
+
_this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
|
|
1580
1601
|
} else {
|
|
1581
1602
|
tokens.push(token);
|
|
1582
1603
|
}
|
|
1583
|
-
continue;
|
|
1604
|
+
return "continue";
|
|
1584
1605
|
}
|
|
1585
1606
|
if (src) {
|
|
1586
1607
|
var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
|
|
1587
|
-
if (
|
|
1608
|
+
if (_this.options.silent) {
|
|
1588
1609
|
console.error(errMsg);
|
|
1589
|
-
break;
|
|
1610
|
+
return "break";
|
|
1590
1611
|
} else {
|
|
1591
1612
|
throw new Error(errMsg);
|
|
1592
1613
|
}
|
|
1593
1614
|
}
|
|
1615
|
+
};
|
|
1616
|
+
while (src) {
|
|
1617
|
+
var _ret = _loop();
|
|
1618
|
+
if (_ret === "continue") continue;
|
|
1619
|
+
if (_ret === "break") break;
|
|
1594
1620
|
}
|
|
1595
1621
|
this.state.top = true;
|
|
1596
1622
|
return tokens;
|
|
@@ -1642,14 +1668,14 @@
|
|
|
1642
1668
|
maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
|
|
1643
1669
|
this.tokenizer.rules.inline.escapedEmSt.lastIndex--;
|
|
1644
1670
|
}
|
|
1645
|
-
|
|
1671
|
+
var _loop2 = function _loop2() {
|
|
1646
1672
|
if (!keepPrevChar) {
|
|
1647
1673
|
prevChar = '';
|
|
1648
1674
|
}
|
|
1649
1675
|
keepPrevChar = false;
|
|
1650
1676
|
|
|
1651
1677
|
// extensions
|
|
1652
|
-
if (
|
|
1678
|
+
if (_this2.options.extensions && _this2.options.extensions.inline && _this2.options.extensions.inline.some(function (extTokenizer) {
|
|
1653
1679
|
if (token = extTokenizer.call({
|
|
1654
1680
|
lexer: _this2
|
|
1655
1681
|
}, src, tokens)) {
|
|
@@ -1659,18 +1685,18 @@
|
|
|
1659
1685
|
}
|
|
1660
1686
|
return false;
|
|
1661
1687
|
})) {
|
|
1662
|
-
continue;
|
|
1688
|
+
return "continue";
|
|
1663
1689
|
}
|
|
1664
1690
|
|
|
1665
1691
|
// escape
|
|
1666
|
-
if (token =
|
|
1692
|
+
if (token = _this2.tokenizer.escape(src)) {
|
|
1667
1693
|
src = src.substring(token.raw.length);
|
|
1668
1694
|
tokens.push(token);
|
|
1669
|
-
continue;
|
|
1695
|
+
return "continue";
|
|
1670
1696
|
}
|
|
1671
1697
|
|
|
1672
1698
|
// tag
|
|
1673
|
-
if (token =
|
|
1699
|
+
if (token = _this2.tokenizer.tag(src)) {
|
|
1674
1700
|
src = src.substring(token.raw.length);
|
|
1675
1701
|
lastToken = tokens[tokens.length - 1];
|
|
1676
1702
|
if (lastToken && token.type === 'text' && lastToken.type === 'text') {
|
|
@@ -1679,18 +1705,18 @@
|
|
|
1679
1705
|
} else {
|
|
1680
1706
|
tokens.push(token);
|
|
1681
1707
|
}
|
|
1682
|
-
continue;
|
|
1708
|
+
return "continue";
|
|
1683
1709
|
}
|
|
1684
1710
|
|
|
1685
1711
|
// link
|
|
1686
|
-
if (token =
|
|
1712
|
+
if (token = _this2.tokenizer.link(src)) {
|
|
1687
1713
|
src = src.substring(token.raw.length);
|
|
1688
1714
|
tokens.push(token);
|
|
1689
|
-
continue;
|
|
1715
|
+
return "continue";
|
|
1690
1716
|
}
|
|
1691
1717
|
|
|
1692
1718
|
// reflink, nolink
|
|
1693
|
-
if (token =
|
|
1719
|
+
if (token = _this2.tokenizer.reflink(src, _this2.tokens.links)) {
|
|
1694
1720
|
src = src.substring(token.raw.length);
|
|
1695
1721
|
lastToken = tokens[tokens.length - 1];
|
|
1696
1722
|
if (lastToken && token.type === 'text' && lastToken.type === 'text') {
|
|
@@ -1699,73 +1725,71 @@
|
|
|
1699
1725
|
} else {
|
|
1700
1726
|
tokens.push(token);
|
|
1701
1727
|
}
|
|
1702
|
-
continue;
|
|
1728
|
+
return "continue";
|
|
1703
1729
|
}
|
|
1704
1730
|
|
|
1705
1731
|
// em & strong
|
|
1706
|
-
if (token =
|
|
1732
|
+
if (token = _this2.tokenizer.emStrong(src, maskedSrc, prevChar)) {
|
|
1707
1733
|
src = src.substring(token.raw.length);
|
|
1708
1734
|
tokens.push(token);
|
|
1709
|
-
continue;
|
|
1735
|
+
return "continue";
|
|
1710
1736
|
}
|
|
1711
1737
|
|
|
1712
1738
|
// code
|
|
1713
|
-
if (token =
|
|
1739
|
+
if (token = _this2.tokenizer.codespan(src)) {
|
|
1714
1740
|
src = src.substring(token.raw.length);
|
|
1715
1741
|
tokens.push(token);
|
|
1716
|
-
continue;
|
|
1742
|
+
return "continue";
|
|
1717
1743
|
}
|
|
1718
1744
|
|
|
1719
1745
|
// br
|
|
1720
|
-
if (token =
|
|
1746
|
+
if (token = _this2.tokenizer.br(src)) {
|
|
1721
1747
|
src = src.substring(token.raw.length);
|
|
1722
1748
|
tokens.push(token);
|
|
1723
|
-
continue;
|
|
1749
|
+
return "continue";
|
|
1724
1750
|
}
|
|
1725
1751
|
|
|
1726
1752
|
// del (gfm)
|
|
1727
|
-
if (token =
|
|
1753
|
+
if (token = _this2.tokenizer.del(src)) {
|
|
1728
1754
|
src = src.substring(token.raw.length);
|
|
1729
1755
|
tokens.push(token);
|
|
1730
|
-
continue;
|
|
1756
|
+
return "continue";
|
|
1731
1757
|
}
|
|
1732
1758
|
|
|
1733
1759
|
// autolink
|
|
1734
|
-
if (token =
|
|
1760
|
+
if (token = _this2.tokenizer.autolink(src, mangle)) {
|
|
1735
1761
|
src = src.substring(token.raw.length);
|
|
1736
1762
|
tokens.push(token);
|
|
1737
|
-
continue;
|
|
1763
|
+
return "continue";
|
|
1738
1764
|
}
|
|
1739
1765
|
|
|
1740
1766
|
// url (gfm)
|
|
1741
|
-
if (!
|
|
1767
|
+
if (!_this2.state.inLink && (token = _this2.tokenizer.url(src, mangle))) {
|
|
1742
1768
|
src = src.substring(token.raw.length);
|
|
1743
1769
|
tokens.push(token);
|
|
1744
|
-
continue;
|
|
1770
|
+
return "continue";
|
|
1745
1771
|
}
|
|
1746
1772
|
|
|
1747
1773
|
// text
|
|
1748
1774
|
// prevent inlineText consuming extensions by clipping 'src' to extension start
|
|
1749
1775
|
cutSrc = src;
|
|
1750
|
-
if (
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
startIndex = Math.min(startIndex, tempStart);
|
|
1761
|
-
}
|
|
1762
|
-
});
|
|
1763
|
-
if (startIndex < Infinity && startIndex >= 0) {
|
|
1764
|
-
cutSrc = src.substring(0, startIndex + 1);
|
|
1776
|
+
if (_this2.options.extensions && _this2.options.extensions.startInline) {
|
|
1777
|
+
var startIndex = Infinity;
|
|
1778
|
+
var tempSrc = src.slice(1);
|
|
1779
|
+
var tempStart;
|
|
1780
|
+
_this2.options.extensions.startInline.forEach(function (getStartIndex) {
|
|
1781
|
+
tempStart = getStartIndex.call({
|
|
1782
|
+
lexer: this
|
|
1783
|
+
}, tempSrc);
|
|
1784
|
+
if (typeof tempStart === 'number' && tempStart >= 0) {
|
|
1785
|
+
startIndex = Math.min(startIndex, tempStart);
|
|
1765
1786
|
}
|
|
1766
|
-
})
|
|
1787
|
+
});
|
|
1788
|
+
if (startIndex < Infinity && startIndex >= 0) {
|
|
1789
|
+
cutSrc = src.substring(0, startIndex + 1);
|
|
1790
|
+
}
|
|
1767
1791
|
}
|
|
1768
|
-
if (token =
|
|
1792
|
+
if (token = _this2.tokenizer.inlineText(cutSrc, smartypants)) {
|
|
1769
1793
|
src = src.substring(token.raw.length);
|
|
1770
1794
|
if (token.raw.slice(-1) !== '_') {
|
|
1771
1795
|
// Track prevChar before string of ____ started
|
|
@@ -1779,17 +1803,22 @@
|
|
|
1779
1803
|
} else {
|
|
1780
1804
|
tokens.push(token);
|
|
1781
1805
|
}
|
|
1782
|
-
continue;
|
|
1806
|
+
return "continue";
|
|
1783
1807
|
}
|
|
1784
1808
|
if (src) {
|
|
1785
1809
|
var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
|
|
1786
|
-
if (
|
|
1810
|
+
if (_this2.options.silent) {
|
|
1787
1811
|
console.error(errMsg);
|
|
1788
|
-
break;
|
|
1812
|
+
return "break";
|
|
1789
1813
|
} else {
|
|
1790
1814
|
throw new Error(errMsg);
|
|
1791
1815
|
}
|
|
1792
1816
|
}
|
|
1817
|
+
};
|
|
1818
|
+
while (src) {
|
|
1819
|
+
var _ret2 = _loop2();
|
|
1820
|
+
if (_ret2 === "continue") continue;
|
|
1821
|
+
if (_ret2 === "break") break;
|
|
1793
1822
|
}
|
|
1794
1823
|
return tokens;
|
|
1795
1824
|
};
|
|
@@ -1835,7 +1864,7 @@
|
|
|
1835
1864
|
_proto.blockquote = function blockquote(quote) {
|
|
1836
1865
|
return "<blockquote>\n" + quote + "</blockquote>\n";
|
|
1837
1866
|
};
|
|
1838
|
-
_proto.html = function html(_html) {
|
|
1867
|
+
_proto.html = function html(_html, block) {
|
|
1839
1868
|
return _html;
|
|
1840
1869
|
}
|
|
1841
1870
|
|
|
@@ -2236,8 +2265,7 @@
|
|
|
2236
2265
|
}
|
|
2237
2266
|
case 'html':
|
|
2238
2267
|
{
|
|
2239
|
-
|
|
2240
|
-
out += this.renderer.html(token.text);
|
|
2268
|
+
out += this.renderer.html(token.text, token.block);
|
|
2241
2269
|
continue;
|
|
2242
2270
|
}
|
|
2243
2271
|
case 'paragraph':
|
|
@@ -2361,98 +2389,170 @@
|
|
|
2361
2389
|
return Parser;
|
|
2362
2390
|
}();
|
|
2363
2391
|
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
function marked(src, opt, callback) {
|
|
2368
|
-
// throw error in case of non string input
|
|
2369
|
-
if (typeof src === 'undefined' || src === null) {
|
|
2370
|
-
throw new Error('marked(): input parameter is undefined or null');
|
|
2371
|
-
}
|
|
2372
|
-
if (typeof src !== 'string') {
|
|
2373
|
-
throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');
|
|
2392
|
+
var Hooks = /*#__PURE__*/function () {
|
|
2393
|
+
function Hooks(options) {
|
|
2394
|
+
this.options = options || exports.defaults;
|
|
2374
2395
|
}
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2396
|
+
var _proto = Hooks.prototype;
|
|
2397
|
+
/**
|
|
2398
|
+
* Process markdown before marked
|
|
2399
|
+
*/
|
|
2400
|
+
_proto.preprocess = function preprocess(markdown) {
|
|
2401
|
+
return markdown;
|
|
2378
2402
|
}
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2403
|
+
|
|
2404
|
+
/**
|
|
2405
|
+
* Process HTML after marked is finished
|
|
2406
|
+
*/;
|
|
2407
|
+
_proto.postprocess = function postprocess(html) {
|
|
2408
|
+
return html;
|
|
2409
|
+
};
|
|
2410
|
+
return Hooks;
|
|
2411
|
+
}();
|
|
2412
|
+
Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);
|
|
2413
|
+
|
|
2414
|
+
function onError(silent, async, callback) {
|
|
2415
|
+
return function (e) {
|
|
2416
|
+
e.message += '\nPlease report this to https://github.com/markedjs/marked.';
|
|
2417
|
+
if (silent) {
|
|
2418
|
+
var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
|
|
2419
|
+
if (async) {
|
|
2420
|
+
return Promise.resolve(msg);
|
|
2421
|
+
}
|
|
2422
|
+
if (callback) {
|
|
2423
|
+
callback(null, msg);
|
|
2424
|
+
return;
|
|
2425
|
+
}
|
|
2426
|
+
return msg;
|
|
2427
|
+
}
|
|
2428
|
+
if (async) {
|
|
2429
|
+
return Promise.reject(e);
|
|
2430
|
+
}
|
|
2431
|
+
if (callback) {
|
|
2432
|
+
callback(e);
|
|
2433
|
+
return;
|
|
2434
|
+
}
|
|
2435
|
+
throw e;
|
|
2436
|
+
};
|
|
2437
|
+
}
|
|
2438
|
+
function parseMarkdown(lexer, parser) {
|
|
2439
|
+
return function (src, opt, callback) {
|
|
2440
|
+
if (typeof opt === 'function') {
|
|
2441
|
+
callback = opt;
|
|
2442
|
+
opt = null;
|
|
2443
|
+
}
|
|
2444
|
+
var origOpt = _extends({}, opt);
|
|
2445
|
+
opt = _extends({}, marked.defaults, origOpt);
|
|
2446
|
+
var throwError = onError(opt.silent, opt.async, callback);
|
|
2447
|
+
|
|
2448
|
+
// throw error in case of non string input
|
|
2449
|
+
if (typeof src === 'undefined' || src === null) {
|
|
2450
|
+
return throwError(new Error('marked(): input parameter is undefined or null'));
|
|
2451
|
+
}
|
|
2452
|
+
if (typeof src !== 'string') {
|
|
2453
|
+
return throwError(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'));
|
|
2454
|
+
}
|
|
2455
|
+
checkDeprecations(opt, callback);
|
|
2456
|
+
if (opt.hooks) {
|
|
2457
|
+
opt.hooks.options = opt;
|
|
2458
|
+
}
|
|
2459
|
+
if (callback) {
|
|
2460
|
+
var highlight = opt.highlight;
|
|
2461
|
+
var tokens;
|
|
2462
|
+
try {
|
|
2463
|
+
if (opt.hooks) {
|
|
2464
|
+
src = opt.hooks.preprocess(src);
|
|
2399
2465
|
}
|
|
2466
|
+
tokens = lexer(src, opt);
|
|
2467
|
+
} catch (e) {
|
|
2468
|
+
return throwError(e);
|
|
2400
2469
|
}
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
delete opt.highlight;
|
|
2408
|
-
if (!tokens.length) return done();
|
|
2409
|
-
var pending = 0;
|
|
2410
|
-
marked.walkTokens(tokens, function (token) {
|
|
2411
|
-
if (token.type === 'code') {
|
|
2412
|
-
pending++;
|
|
2413
|
-
setTimeout(function () {
|
|
2414
|
-
highlight(token.text, token.lang, function (err, code) {
|
|
2415
|
-
if (err) {
|
|
2416
|
-
return done(err);
|
|
2470
|
+
var done = function done(err) {
|
|
2471
|
+
var out;
|
|
2472
|
+
if (!err) {
|
|
2473
|
+
try {
|
|
2474
|
+
if (opt.walkTokens) {
|
|
2475
|
+
marked.walkTokens(tokens, opt.walkTokens);
|
|
2417
2476
|
}
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2477
|
+
out = parser(tokens, opt);
|
|
2478
|
+
if (opt.hooks) {
|
|
2479
|
+
out = opt.hooks.postprocess(out);
|
|
2421
2480
|
}
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2481
|
+
} catch (e) {
|
|
2482
|
+
err = e;
|
|
2483
|
+
}
|
|
2484
|
+
}
|
|
2485
|
+
opt.highlight = highlight;
|
|
2486
|
+
return err ? throwError(err) : callback(null, out);
|
|
2487
|
+
};
|
|
2488
|
+
if (!highlight || highlight.length < 3) {
|
|
2489
|
+
return done();
|
|
2428
2490
|
}
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2491
|
+
delete opt.highlight;
|
|
2492
|
+
if (!tokens.length) return done();
|
|
2493
|
+
var pending = 0;
|
|
2494
|
+
marked.walkTokens(tokens, function (token) {
|
|
2495
|
+
if (token.type === 'code') {
|
|
2496
|
+
pending++;
|
|
2497
|
+
setTimeout(function () {
|
|
2498
|
+
highlight(token.text, token.lang, function (err, code) {
|
|
2499
|
+
if (err) {
|
|
2500
|
+
return done(err);
|
|
2501
|
+
}
|
|
2502
|
+
if (code != null && code !== token.text) {
|
|
2503
|
+
token.text = code;
|
|
2504
|
+
token.escaped = true;
|
|
2505
|
+
}
|
|
2506
|
+
pending--;
|
|
2507
|
+
if (pending === 0) {
|
|
2508
|
+
done();
|
|
2509
|
+
}
|
|
2510
|
+
});
|
|
2511
|
+
}, 0);
|
|
2512
|
+
}
|
|
2513
|
+
});
|
|
2514
|
+
if (pending === 0) {
|
|
2515
|
+
done();
|
|
2516
|
+
}
|
|
2517
|
+
return;
|
|
2518
|
+
}
|
|
2519
|
+
if (opt.async) {
|
|
2520
|
+
return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {
|
|
2521
|
+
return lexer(src, opt);
|
|
2522
|
+
}).then(function (tokens) {
|
|
2523
|
+
return opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(function () {
|
|
2524
|
+
return tokens;
|
|
2525
|
+
}) : tokens;
|
|
2526
|
+
}).then(function (tokens) {
|
|
2527
|
+
return parser(tokens, opt);
|
|
2528
|
+
}).then(function (html) {
|
|
2529
|
+
return opt.hooks ? opt.hooks.postprocess(html) : html;
|
|
2530
|
+
})["catch"](throwError);
|
|
2439
2531
|
}
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
var _tokens = Lexer.lex(src, opt);
|
|
2444
|
-
if (opt.walkTokens) {
|
|
2445
|
-
if (opt.async) {
|
|
2446
|
-
return Promise.all(marked.walkTokens(_tokens, opt.walkTokens)).then(function () {
|
|
2447
|
-
return Parser.parse(_tokens, opt);
|
|
2448
|
-
})["catch"](onError);
|
|
2532
|
+
try {
|
|
2533
|
+
if (opt.hooks) {
|
|
2534
|
+
src = opt.hooks.preprocess(src);
|
|
2449
2535
|
}
|
|
2450
|
-
|
|
2536
|
+
var _tokens = lexer(src, opt);
|
|
2537
|
+
if (opt.walkTokens) {
|
|
2538
|
+
marked.walkTokens(_tokens, opt.walkTokens);
|
|
2539
|
+
}
|
|
2540
|
+
var html = parser(_tokens, opt);
|
|
2541
|
+
if (opt.hooks) {
|
|
2542
|
+
html = opt.hooks.postprocess(html);
|
|
2543
|
+
}
|
|
2544
|
+
return html;
|
|
2545
|
+
} catch (e) {
|
|
2546
|
+
return throwError(e);
|
|
2451
2547
|
}
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2548
|
+
};
|
|
2549
|
+
}
|
|
2550
|
+
|
|
2551
|
+
/**
|
|
2552
|
+
* Marked
|
|
2553
|
+
*/
|
|
2554
|
+
function marked(src, opt, callback) {
|
|
2555
|
+
return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);
|
|
2456
2556
|
}
|
|
2457
2557
|
|
|
2458
2558
|
/**
|
|
@@ -2460,7 +2560,7 @@
|
|
|
2460
2560
|
*/
|
|
2461
2561
|
|
|
2462
2562
|
marked.options = marked.setOptions = function (opt) {
|
|
2463
|
-
|
|
2563
|
+
marked.defaults = _extends({}, marked.defaults, opt);
|
|
2464
2564
|
changeDefaults(marked.defaults);
|
|
2465
2565
|
return marked;
|
|
2466
2566
|
};
|
|
@@ -2481,10 +2581,10 @@
|
|
|
2481
2581
|
}
|
|
2482
2582
|
args.forEach(function (pack) {
|
|
2483
2583
|
// copy options to new object
|
|
2484
|
-
var opts =
|
|
2584
|
+
var opts = _extends({}, pack);
|
|
2485
2585
|
|
|
2486
2586
|
// set async to true if it was set to true before
|
|
2487
|
-
opts.async = marked.defaults.async || opts.async;
|
|
2587
|
+
opts.async = marked.defaults.async || opts.async || false;
|
|
2488
2588
|
|
|
2489
2589
|
// ==-- Parse "addon" extensions --== //
|
|
2490
2590
|
if (pack.extensions) {
|
|
@@ -2548,50 +2648,80 @@
|
|
|
2548
2648
|
|
|
2549
2649
|
// ==-- Parse "overwrite" extensions --== //
|
|
2550
2650
|
if (pack.renderer) {
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
var
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
return ret;
|
|
2565
|
-
};
|
|
2651
|
+
var renderer = marked.defaults.renderer || new Renderer();
|
|
2652
|
+
var _loop = function _loop(prop) {
|
|
2653
|
+
var prevRenderer = renderer[prop];
|
|
2654
|
+
// Replace renderer with func to run extension, but fall back if false
|
|
2655
|
+
renderer[prop] = function () {
|
|
2656
|
+
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
2657
|
+
args[_key3] = arguments[_key3];
|
|
2658
|
+
}
|
|
2659
|
+
var ret = pack.renderer[prop].apply(renderer, args);
|
|
2660
|
+
if (ret === false) {
|
|
2661
|
+
ret = prevRenderer.apply(renderer, args);
|
|
2662
|
+
}
|
|
2663
|
+
return ret;
|
|
2566
2664
|
};
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2665
|
+
};
|
|
2666
|
+
for (var prop in pack.renderer) {
|
|
2667
|
+
_loop(prop);
|
|
2668
|
+
}
|
|
2669
|
+
opts.renderer = renderer;
|
|
2572
2670
|
}
|
|
2573
2671
|
if (pack.tokenizer) {
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
var
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2672
|
+
var tokenizer = marked.defaults.tokenizer || new Tokenizer();
|
|
2673
|
+
var _loop2 = function _loop2(_prop) {
|
|
2674
|
+
var prevTokenizer = tokenizer[_prop];
|
|
2675
|
+
// Replace tokenizer with func to run extension, but fall back if false
|
|
2676
|
+
tokenizer[_prop] = function () {
|
|
2677
|
+
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
2678
|
+
args[_key4] = arguments[_key4];
|
|
2679
|
+
}
|
|
2680
|
+
var ret = pack.tokenizer[_prop].apply(tokenizer, args);
|
|
2681
|
+
if (ret === false) {
|
|
2682
|
+
ret = prevTokenizer.apply(tokenizer, args);
|
|
2683
|
+
}
|
|
2684
|
+
return ret;
|
|
2685
|
+
};
|
|
2686
|
+
};
|
|
2687
|
+
for (var _prop in pack.tokenizer) {
|
|
2688
|
+
_loop2(_prop);
|
|
2689
|
+
}
|
|
2690
|
+
opts.tokenizer = tokenizer;
|
|
2691
|
+
}
|
|
2692
|
+
|
|
2693
|
+
// ==-- Parse Hooks extensions --== //
|
|
2694
|
+
if (pack.hooks) {
|
|
2695
|
+
var hooks = marked.defaults.hooks || new Hooks();
|
|
2696
|
+
var _loop3 = function _loop3(_prop2) {
|
|
2697
|
+
var prevHook = hooks[_prop2];
|
|
2698
|
+
if (Hooks.passThroughHooks.has(_prop2)) {
|
|
2699
|
+
hooks[_prop2] = function (arg) {
|
|
2700
|
+
if (marked.defaults.async) {
|
|
2701
|
+
return Promise.resolve(pack.hooks[_prop2].call(hooks, arg)).then(function (ret) {
|
|
2702
|
+
return prevHook.call(hooks, ret);
|
|
2703
|
+
});
|
|
2582
2704
|
}
|
|
2583
|
-
var ret = pack.
|
|
2705
|
+
var ret = pack.hooks[_prop2].call(hooks, arg);
|
|
2706
|
+
return prevHook.call(hooks, ret);
|
|
2707
|
+
};
|
|
2708
|
+
} else {
|
|
2709
|
+
hooks[_prop2] = function () {
|
|
2710
|
+
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
|
2711
|
+
args[_key5] = arguments[_key5];
|
|
2712
|
+
}
|
|
2713
|
+
var ret = pack.hooks[_prop2].apply(hooks, args);
|
|
2584
2714
|
if (ret === false) {
|
|
2585
|
-
ret =
|
|
2715
|
+
ret = prevHook.apply(hooks, args);
|
|
2586
2716
|
}
|
|
2587
2717
|
return ret;
|
|
2588
2718
|
};
|
|
2589
|
-
};
|
|
2590
|
-
for (var prop in pack.tokenizer) {
|
|
2591
|
-
_loop2(prop);
|
|
2592
2719
|
}
|
|
2593
|
-
|
|
2594
|
-
|
|
2720
|
+
};
|
|
2721
|
+
for (var _prop2 in pack.hooks) {
|
|
2722
|
+
_loop3(_prop2);
|
|
2723
|
+
}
|
|
2724
|
+
opts.hooks = hooks;
|
|
2595
2725
|
}
|
|
2596
2726
|
|
|
2597
2727
|
// ==-- Parse WalkTokens extensions --== //
|
|
@@ -2616,7 +2746,7 @@
|
|
|
2616
2746
|
|
|
2617
2747
|
marked.walkTokens = function (tokens, callback) {
|
|
2618
2748
|
var values = [];
|
|
2619
|
-
var
|
|
2749
|
+
var _loop4 = function _loop4() {
|
|
2620
2750
|
var token = _step.value;
|
|
2621
2751
|
values = values.concat(callback.call(marked, token));
|
|
2622
2752
|
switch (token.type) {
|
|
@@ -2654,7 +2784,7 @@
|
|
|
2654
2784
|
}
|
|
2655
2785
|
};
|
|
2656
2786
|
for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
|
|
2657
|
-
|
|
2787
|
+
_loop4();
|
|
2658
2788
|
}
|
|
2659
2789
|
return values;
|
|
2660
2790
|
};
|
|
@@ -2663,30 +2793,7 @@
|
|
|
2663
2793
|
* Parse Inline
|
|
2664
2794
|
* @param {string} src
|
|
2665
2795
|
*/
|
|
2666
|
-
marked.parseInline =
|
|
2667
|
-
// throw error in case of non string input
|
|
2668
|
-
if (typeof src === 'undefined' || src === null) {
|
|
2669
|
-
throw new Error('marked.parseInline(): input parameter is undefined or null');
|
|
2670
|
-
}
|
|
2671
|
-
if (typeof src !== 'string') {
|
|
2672
|
-
throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');
|
|
2673
|
-
}
|
|
2674
|
-
opt = merge({}, marked.defaults, opt || {});
|
|
2675
|
-
checkSanitizeDeprecation(opt);
|
|
2676
|
-
try {
|
|
2677
|
-
var tokens = Lexer.lexInline(src, opt);
|
|
2678
|
-
if (opt.walkTokens) {
|
|
2679
|
-
marked.walkTokens(tokens, opt.walkTokens);
|
|
2680
|
-
}
|
|
2681
|
-
return Parser.parseInline(tokens, opt);
|
|
2682
|
-
} catch (e) {
|
|
2683
|
-
e.message += '\nPlease report this to https://github.com/markedjs/marked.';
|
|
2684
|
-
if (opt.silent) {
|
|
2685
|
-
return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
|
|
2686
|
-
}
|
|
2687
|
-
throw e;
|
|
2688
|
-
}
|
|
2689
|
-
};
|
|
2796
|
+
marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);
|
|
2690
2797
|
|
|
2691
2798
|
/**
|
|
2692
2799
|
* Expose
|
|
@@ -2699,6 +2806,7 @@
|
|
|
2699
2806
|
marked.lexer = Lexer.lex;
|
|
2700
2807
|
marked.Tokenizer = Tokenizer;
|
|
2701
2808
|
marked.Slugger = Slugger;
|
|
2809
|
+
marked.Hooks = Hooks;
|
|
2702
2810
|
marked.parse = marked;
|
|
2703
2811
|
var options = marked.options;
|
|
2704
2812
|
var setOptions = marked.setOptions;
|
|
@@ -2709,6 +2817,7 @@
|
|
|
2709
2817
|
var parser = Parser.parse;
|
|
2710
2818
|
var lexer = Lexer.lex;
|
|
2711
2819
|
|
|
2820
|
+
exports.Hooks = Hooks;
|
|
2712
2821
|
exports.Lexer = Lexer;
|
|
2713
2822
|
exports.Parser = Parser;
|
|
2714
2823
|
exports.Renderer = Renderer;
|