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.cjs
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
|
*/
|
|
@@ -28,6 +28,20 @@ function _createClass(Constructor, protoProps, staticProps) {
|
|
|
28
28
|
});
|
|
29
29
|
return Constructor;
|
|
30
30
|
}
|
|
31
|
+
function _extends() {
|
|
32
|
+
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
33
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
34
|
+
var source = arguments[i];
|
|
35
|
+
for (var key in source) {
|
|
36
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
37
|
+
target[key] = source[key];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return target;
|
|
42
|
+
};
|
|
43
|
+
return _extends.apply(this, arguments);
|
|
44
|
+
}
|
|
31
45
|
function _unsupportedIterableToArray(o, minLen) {
|
|
32
46
|
if (!o) return;
|
|
33
47
|
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
@@ -84,6 +98,7 @@ function getDefaults() {
|
|
|
84
98
|
headerIds: true,
|
|
85
99
|
headerPrefix: '',
|
|
86
100
|
highlight: null,
|
|
101
|
+
hooks: null,
|
|
87
102
|
langPrefix: 'language-',
|
|
88
103
|
mangle: true,
|
|
89
104
|
pedantic: false,
|
|
@@ -238,29 +253,13 @@ function resolveUrl(base, href) {
|
|
|
238
253
|
var noopTest = {
|
|
239
254
|
exec: function noopTest() {}
|
|
240
255
|
};
|
|
241
|
-
function merge(obj) {
|
|
242
|
-
var i = 1,
|
|
243
|
-
target,
|
|
244
|
-
key;
|
|
245
|
-
for (; i < arguments.length; i++) {
|
|
246
|
-
target = arguments[i];
|
|
247
|
-
for (key in target) {
|
|
248
|
-
if (Object.prototype.hasOwnProperty.call(target, key)) {
|
|
249
|
-
obj[key] = target[key];
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
return obj;
|
|
254
|
-
}
|
|
255
256
|
function splitCells(tableRow, count) {
|
|
256
257
|
// ensure that every cell-delimiting pipe has a space
|
|
257
258
|
// before it to distinguish it from an escaped pipe
|
|
258
259
|
var row = tableRow.replace(/\|/g, function (match, offset, str) {
|
|
259
260
|
var escaped = false,
|
|
260
261
|
curr = offset;
|
|
261
|
-
while (--curr >= 0 && str[curr] === '\\')
|
|
262
|
-
escaped = !escaped;
|
|
263
|
-
}
|
|
262
|
+
while (--curr >= 0 && str[curr] === '\\') escaped = !escaped;
|
|
264
263
|
if (escaped) {
|
|
265
264
|
// odd number of slashes means | is escaped
|
|
266
265
|
// so we leave it alone
|
|
@@ -283,9 +282,7 @@ function splitCells(tableRow, count) {
|
|
|
283
282
|
if (cells.length > count) {
|
|
284
283
|
cells.splice(count);
|
|
285
284
|
} else {
|
|
286
|
-
while (cells.length < count)
|
|
287
|
-
cells.push('');
|
|
288
|
-
}
|
|
285
|
+
while (cells.length < count) cells.push('');
|
|
289
286
|
}
|
|
290
287
|
for (; i < cells.length; i++) {
|
|
291
288
|
// leading or trailing whitespace is ignored per the gfm spec
|
|
@@ -345,10 +342,34 @@ function findClosingBracket(str, b) {
|
|
|
345
342
|
}
|
|
346
343
|
return -1;
|
|
347
344
|
}
|
|
348
|
-
function
|
|
349
|
-
if (opt
|
|
345
|
+
function checkDeprecations(opt, callback) {
|
|
346
|
+
if (!opt || opt.silent) {
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
if (callback) {
|
|
350
|
+
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');
|
|
351
|
+
}
|
|
352
|
+
if (opt.sanitize || opt.sanitizer) {
|
|
350
353
|
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');
|
|
351
354
|
}
|
|
355
|
+
if (opt.highlight || opt.langPrefix) {
|
|
356
|
+
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.');
|
|
357
|
+
}
|
|
358
|
+
if (opt.mangle) {
|
|
359
|
+
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.');
|
|
360
|
+
}
|
|
361
|
+
if (opt.baseUrl) {
|
|
362
|
+
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.');
|
|
363
|
+
}
|
|
364
|
+
if (opt.smartypants) {
|
|
365
|
+
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.');
|
|
366
|
+
}
|
|
367
|
+
if (opt.xhtml) {
|
|
368
|
+
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.');
|
|
369
|
+
}
|
|
370
|
+
if (opt.headerIds || opt.headerPrefix) {
|
|
371
|
+
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.');
|
|
372
|
+
}
|
|
352
373
|
}
|
|
353
374
|
|
|
354
375
|
// copied from https://stackoverflow.com/a/5450113/806777
|
|
@@ -693,6 +714,7 @@ var Tokenizer = /*#__PURE__*/function () {
|
|
|
693
714
|
if (cap) {
|
|
694
715
|
var token = {
|
|
695
716
|
type: 'html',
|
|
717
|
+
block: true,
|
|
696
718
|
raw: cap[0],
|
|
697
719
|
pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
|
|
698
720
|
text: cap[0]
|
|
@@ -841,6 +863,7 @@ var Tokenizer = /*#__PURE__*/function () {
|
|
|
841
863
|
raw: cap[0],
|
|
842
864
|
inLink: this.lexer.state.inLink,
|
|
843
865
|
inRawBlock: this.lexer.state.inRawBlock,
|
|
866
|
+
block: false,
|
|
844
867
|
text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]
|
|
845
868
|
};
|
|
846
869
|
}
|
|
@@ -922,7 +945,7 @@ var Tokenizer = /*#__PURE__*/function () {
|
|
|
922
945
|
if (!match) return;
|
|
923
946
|
|
|
924
947
|
// _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
|
|
925
|
-
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-\
|
|
948
|
+
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;
|
|
926
949
|
var nextChar = match[1] || match[2] || '';
|
|
927
950
|
if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
|
|
928
951
|
var lLength = match[0].length - 1;
|
|
@@ -1101,7 +1124,7 @@ var Tokenizer = /*#__PURE__*/function () {
|
|
|
1101
1124
|
var block = {
|
|
1102
1125
|
newline: /^(?: *(?:\n|$))+/,
|
|
1103
1126
|
code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
|
|
1104
|
-
fences: /^ {0,3}(`{3,}(?=[^`\n]
|
|
1127
|
+
fences: /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,
|
|
1105
1128
|
hr: /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,
|
|
1106
1129
|
heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,
|
|
1107
1130
|
blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
|
|
@@ -1143,13 +1166,13 @@ block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).
|
|
|
1143
1166
|
* Normal Block Grammar
|
|
1144
1167
|
*/
|
|
1145
1168
|
|
|
1146
|
-
block.normal =
|
|
1169
|
+
block.normal = _extends({}, block);
|
|
1147
1170
|
|
|
1148
1171
|
/**
|
|
1149
1172
|
* GFM Block Grammar
|
|
1150
1173
|
*/
|
|
1151
1174
|
|
|
1152
|
-
block.gfm =
|
|
1175
|
+
block.gfm = _extends({}, block.normal, {
|
|
1153
1176
|
table: '^ *([^\\n ].*\\|.*)\\n' // Header
|
|
1154
1177
|
+ ' {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?' // Align
|
|
1155
1178
|
+ '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)' // Cells
|
|
@@ -1167,7 +1190,7 @@ block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('he
|
|
|
1167
1190
|
* Pedantic grammar (original John Gruber's loose markdown specification)
|
|
1168
1191
|
*/
|
|
1169
1192
|
|
|
1170
|
-
block.pedantic =
|
|
1193
|
+
block.pedantic = _extends({}, block.normal, {
|
|
1171
1194
|
html: edit('^ *(?:comment *(?:\\n|\\s*$)' + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
|
|
1172
1195
|
+ '|<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(),
|
|
1173
1196
|
def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
|
|
@@ -1242,13 +1265,13 @@ inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline
|
|
|
1242
1265
|
* Normal Inline Grammar
|
|
1243
1266
|
*/
|
|
1244
1267
|
|
|
1245
|
-
inline.normal =
|
|
1268
|
+
inline.normal = _extends({}, inline);
|
|
1246
1269
|
|
|
1247
1270
|
/**
|
|
1248
1271
|
* Pedantic Inline Grammar
|
|
1249
1272
|
*/
|
|
1250
1273
|
|
|
1251
|
-
inline.pedantic =
|
|
1274
|
+
inline.pedantic = _extends({}, inline.normal, {
|
|
1252
1275
|
strong: {
|
|
1253
1276
|
start: /^__|\*\*/,
|
|
1254
1277
|
middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
|
|
@@ -1269,7 +1292,7 @@ inline.pedantic = merge({}, inline.normal, {
|
|
|
1269
1292
|
* GFM Inline Grammar
|
|
1270
1293
|
*/
|
|
1271
1294
|
|
|
1272
|
-
inline.gfm =
|
|
1295
|
+
inline.gfm = _extends({}, inline.normal, {
|
|
1273
1296
|
escape: edit(inline.escape).replace('])', '~|])').getRegex(),
|
|
1274
1297
|
_extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
|
|
1275
1298
|
url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
|
|
@@ -1282,7 +1305,7 @@ inline.gfm.url = edit(inline.gfm.url, 'i').replace('email', inline.gfm._extended
|
|
|
1282
1305
|
* GFM + Line Breaks Inline Grammar
|
|
1283
1306
|
*/
|
|
1284
1307
|
|
|
1285
|
-
inline.breaks =
|
|
1308
|
+
inline.breaks = _extends({}, inline.gfm, {
|
|
1286
1309
|
br: edit(inline.br).replace('{2,}', '*').getRegex(),
|
|
1287
1310
|
text: edit(inline.gfm.text).replace('\\b_', '\\b_| {2,}\\n').replace(/\{2,\}/g, '*').getRegex()
|
|
1288
1311
|
});
|
|
@@ -1413,8 +1436,8 @@ var Lexer = /*#__PURE__*/function () {
|
|
|
1413
1436
|
});
|
|
1414
1437
|
}
|
|
1415
1438
|
var token, lastToken, cutSrc, lastParagraphClipped;
|
|
1416
|
-
|
|
1417
|
-
if (
|
|
1439
|
+
var _loop = function _loop() {
|
|
1440
|
+
if (_this.options.extensions && _this.options.extensions.block && _this.options.extensions.block.some(function (extTokenizer) {
|
|
1418
1441
|
if (token = extTokenizer.call({
|
|
1419
1442
|
lexer: _this
|
|
1420
1443
|
}, src, tokens)) {
|
|
@@ -1424,11 +1447,11 @@ var Lexer = /*#__PURE__*/function () {
|
|
|
1424
1447
|
}
|
|
1425
1448
|
return false;
|
|
1426
1449
|
})) {
|
|
1427
|
-
continue;
|
|
1450
|
+
return "continue";
|
|
1428
1451
|
}
|
|
1429
1452
|
|
|
1430
1453
|
// newline
|
|
1431
|
-
if (token =
|
|
1454
|
+
if (token = _this.tokenizer.space(src)) {
|
|
1432
1455
|
src = src.substring(token.raw.length);
|
|
1433
1456
|
if (token.raw.length === 1 && tokens.length > 0) {
|
|
1434
1457
|
// if there's a single \n as a spacer, it's terminating the last line,
|
|
@@ -1437,156 +1460,159 @@ var Lexer = /*#__PURE__*/function () {
|
|
|
1437
1460
|
} else {
|
|
1438
1461
|
tokens.push(token);
|
|
1439
1462
|
}
|
|
1440
|
-
continue;
|
|
1463
|
+
return "continue";
|
|
1441
1464
|
}
|
|
1442
1465
|
|
|
1443
1466
|
// code
|
|
1444
|
-
if (token =
|
|
1467
|
+
if (token = _this.tokenizer.code(src)) {
|
|
1445
1468
|
src = src.substring(token.raw.length);
|
|
1446
1469
|
lastToken = tokens[tokens.length - 1];
|
|
1447
1470
|
// An indented code block cannot interrupt a paragraph.
|
|
1448
1471
|
if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
|
|
1449
1472
|
lastToken.raw += '\n' + token.raw;
|
|
1450
1473
|
lastToken.text += '\n' + token.text;
|
|
1451
|
-
|
|
1474
|
+
_this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
|
|
1452
1475
|
} else {
|
|
1453
1476
|
tokens.push(token);
|
|
1454
1477
|
}
|
|
1455
|
-
continue;
|
|
1478
|
+
return "continue";
|
|
1456
1479
|
}
|
|
1457
1480
|
|
|
1458
1481
|
// fences
|
|
1459
|
-
if (token =
|
|
1482
|
+
if (token = _this.tokenizer.fences(src)) {
|
|
1460
1483
|
src = src.substring(token.raw.length);
|
|
1461
1484
|
tokens.push(token);
|
|
1462
|
-
continue;
|
|
1485
|
+
return "continue";
|
|
1463
1486
|
}
|
|
1464
1487
|
|
|
1465
1488
|
// heading
|
|
1466
|
-
if (token =
|
|
1489
|
+
if (token = _this.tokenizer.heading(src)) {
|
|
1467
1490
|
src = src.substring(token.raw.length);
|
|
1468
1491
|
tokens.push(token);
|
|
1469
|
-
continue;
|
|
1492
|
+
return "continue";
|
|
1470
1493
|
}
|
|
1471
1494
|
|
|
1472
1495
|
// hr
|
|
1473
|
-
if (token =
|
|
1496
|
+
if (token = _this.tokenizer.hr(src)) {
|
|
1474
1497
|
src = src.substring(token.raw.length);
|
|
1475
1498
|
tokens.push(token);
|
|
1476
|
-
continue;
|
|
1499
|
+
return "continue";
|
|
1477
1500
|
}
|
|
1478
1501
|
|
|
1479
1502
|
// blockquote
|
|
1480
|
-
if (token =
|
|
1503
|
+
if (token = _this.tokenizer.blockquote(src)) {
|
|
1481
1504
|
src = src.substring(token.raw.length);
|
|
1482
1505
|
tokens.push(token);
|
|
1483
|
-
continue;
|
|
1506
|
+
return "continue";
|
|
1484
1507
|
}
|
|
1485
1508
|
|
|
1486
1509
|
// list
|
|
1487
|
-
if (token =
|
|
1510
|
+
if (token = _this.tokenizer.list(src)) {
|
|
1488
1511
|
src = src.substring(token.raw.length);
|
|
1489
1512
|
tokens.push(token);
|
|
1490
|
-
continue;
|
|
1513
|
+
return "continue";
|
|
1491
1514
|
}
|
|
1492
1515
|
|
|
1493
1516
|
// html
|
|
1494
|
-
if (token =
|
|
1517
|
+
if (token = _this.tokenizer.html(src)) {
|
|
1495
1518
|
src = src.substring(token.raw.length);
|
|
1496
1519
|
tokens.push(token);
|
|
1497
|
-
continue;
|
|
1520
|
+
return "continue";
|
|
1498
1521
|
}
|
|
1499
1522
|
|
|
1500
1523
|
// def
|
|
1501
|
-
if (token =
|
|
1524
|
+
if (token = _this.tokenizer.def(src)) {
|
|
1502
1525
|
src = src.substring(token.raw.length);
|
|
1503
1526
|
lastToken = tokens[tokens.length - 1];
|
|
1504
1527
|
if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
|
|
1505
1528
|
lastToken.raw += '\n' + token.raw;
|
|
1506
1529
|
lastToken.text += '\n' + token.raw;
|
|
1507
|
-
|
|
1508
|
-
} else if (!
|
|
1509
|
-
|
|
1530
|
+
_this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
|
|
1531
|
+
} else if (!_this.tokens.links[token.tag]) {
|
|
1532
|
+
_this.tokens.links[token.tag] = {
|
|
1510
1533
|
href: token.href,
|
|
1511
1534
|
title: token.title
|
|
1512
1535
|
};
|
|
1513
1536
|
}
|
|
1514
|
-
continue;
|
|
1537
|
+
return "continue";
|
|
1515
1538
|
}
|
|
1516
1539
|
|
|
1517
1540
|
// table (gfm)
|
|
1518
|
-
if (token =
|
|
1541
|
+
if (token = _this.tokenizer.table(src)) {
|
|
1519
1542
|
src = src.substring(token.raw.length);
|
|
1520
1543
|
tokens.push(token);
|
|
1521
|
-
continue;
|
|
1544
|
+
return "continue";
|
|
1522
1545
|
}
|
|
1523
1546
|
|
|
1524
1547
|
// lheading
|
|
1525
|
-
if (token =
|
|
1548
|
+
if (token = _this.tokenizer.lheading(src)) {
|
|
1526
1549
|
src = src.substring(token.raw.length);
|
|
1527
1550
|
tokens.push(token);
|
|
1528
|
-
continue;
|
|
1551
|
+
return "continue";
|
|
1529
1552
|
}
|
|
1530
1553
|
|
|
1531
1554
|
// top-level paragraph
|
|
1532
1555
|
// prevent paragraph consuming extensions by clipping 'src' to extension start
|
|
1533
1556
|
cutSrc = src;
|
|
1534
|
-
if (
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
startIndex = Math.min(startIndex, tempStart);
|
|
1545
|
-
}
|
|
1546
|
-
});
|
|
1547
|
-
if (startIndex < Infinity && startIndex >= 0) {
|
|
1548
|
-
cutSrc = src.substring(0, startIndex + 1);
|
|
1557
|
+
if (_this.options.extensions && _this.options.extensions.startBlock) {
|
|
1558
|
+
var startIndex = Infinity;
|
|
1559
|
+
var tempSrc = src.slice(1);
|
|
1560
|
+
var tempStart;
|
|
1561
|
+
_this.options.extensions.startBlock.forEach(function (getStartIndex) {
|
|
1562
|
+
tempStart = getStartIndex.call({
|
|
1563
|
+
lexer: this
|
|
1564
|
+
}, tempSrc);
|
|
1565
|
+
if (typeof tempStart === 'number' && tempStart >= 0) {
|
|
1566
|
+
startIndex = Math.min(startIndex, tempStart);
|
|
1549
1567
|
}
|
|
1550
|
-
})
|
|
1568
|
+
});
|
|
1569
|
+
if (startIndex < Infinity && startIndex >= 0) {
|
|
1570
|
+
cutSrc = src.substring(0, startIndex + 1);
|
|
1571
|
+
}
|
|
1551
1572
|
}
|
|
1552
|
-
if (
|
|
1573
|
+
if (_this.state.top && (token = _this.tokenizer.paragraph(cutSrc))) {
|
|
1553
1574
|
lastToken = tokens[tokens.length - 1];
|
|
1554
1575
|
if (lastParagraphClipped && lastToken.type === 'paragraph') {
|
|
1555
1576
|
lastToken.raw += '\n' + token.raw;
|
|
1556
1577
|
lastToken.text += '\n' + token.text;
|
|
1557
|
-
|
|
1558
|
-
|
|
1578
|
+
_this.inlineQueue.pop();
|
|
1579
|
+
_this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
|
|
1559
1580
|
} else {
|
|
1560
1581
|
tokens.push(token);
|
|
1561
1582
|
}
|
|
1562
1583
|
lastParagraphClipped = cutSrc.length !== src.length;
|
|
1563
1584
|
src = src.substring(token.raw.length);
|
|
1564
|
-
continue;
|
|
1585
|
+
return "continue";
|
|
1565
1586
|
}
|
|
1566
1587
|
|
|
1567
1588
|
// text
|
|
1568
|
-
if (token =
|
|
1589
|
+
if (token = _this.tokenizer.text(src)) {
|
|
1569
1590
|
src = src.substring(token.raw.length);
|
|
1570
1591
|
lastToken = tokens[tokens.length - 1];
|
|
1571
1592
|
if (lastToken && lastToken.type === 'text') {
|
|
1572
1593
|
lastToken.raw += '\n' + token.raw;
|
|
1573
1594
|
lastToken.text += '\n' + token.text;
|
|
1574
|
-
|
|
1575
|
-
|
|
1595
|
+
_this.inlineQueue.pop();
|
|
1596
|
+
_this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
|
|
1576
1597
|
} else {
|
|
1577
1598
|
tokens.push(token);
|
|
1578
1599
|
}
|
|
1579
|
-
continue;
|
|
1600
|
+
return "continue";
|
|
1580
1601
|
}
|
|
1581
1602
|
if (src) {
|
|
1582
1603
|
var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
|
|
1583
|
-
if (
|
|
1604
|
+
if (_this.options.silent) {
|
|
1584
1605
|
console.error(errMsg);
|
|
1585
|
-
break;
|
|
1606
|
+
return "break";
|
|
1586
1607
|
} else {
|
|
1587
1608
|
throw new Error(errMsg);
|
|
1588
1609
|
}
|
|
1589
1610
|
}
|
|
1611
|
+
};
|
|
1612
|
+
while (src) {
|
|
1613
|
+
var _ret = _loop();
|
|
1614
|
+
if (_ret === "continue") continue;
|
|
1615
|
+
if (_ret === "break") break;
|
|
1590
1616
|
}
|
|
1591
1617
|
this.state.top = true;
|
|
1592
1618
|
return tokens;
|
|
@@ -1638,14 +1664,14 @@ var Lexer = /*#__PURE__*/function () {
|
|
|
1638
1664
|
maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
|
|
1639
1665
|
this.tokenizer.rules.inline.escapedEmSt.lastIndex--;
|
|
1640
1666
|
}
|
|
1641
|
-
|
|
1667
|
+
var _loop2 = function _loop2() {
|
|
1642
1668
|
if (!keepPrevChar) {
|
|
1643
1669
|
prevChar = '';
|
|
1644
1670
|
}
|
|
1645
1671
|
keepPrevChar = false;
|
|
1646
1672
|
|
|
1647
1673
|
// extensions
|
|
1648
|
-
if (
|
|
1674
|
+
if (_this2.options.extensions && _this2.options.extensions.inline && _this2.options.extensions.inline.some(function (extTokenizer) {
|
|
1649
1675
|
if (token = extTokenizer.call({
|
|
1650
1676
|
lexer: _this2
|
|
1651
1677
|
}, src, tokens)) {
|
|
@@ -1655,18 +1681,18 @@ var Lexer = /*#__PURE__*/function () {
|
|
|
1655
1681
|
}
|
|
1656
1682
|
return false;
|
|
1657
1683
|
})) {
|
|
1658
|
-
continue;
|
|
1684
|
+
return "continue";
|
|
1659
1685
|
}
|
|
1660
1686
|
|
|
1661
1687
|
// escape
|
|
1662
|
-
if (token =
|
|
1688
|
+
if (token = _this2.tokenizer.escape(src)) {
|
|
1663
1689
|
src = src.substring(token.raw.length);
|
|
1664
1690
|
tokens.push(token);
|
|
1665
|
-
continue;
|
|
1691
|
+
return "continue";
|
|
1666
1692
|
}
|
|
1667
1693
|
|
|
1668
1694
|
// tag
|
|
1669
|
-
if (token =
|
|
1695
|
+
if (token = _this2.tokenizer.tag(src)) {
|
|
1670
1696
|
src = src.substring(token.raw.length);
|
|
1671
1697
|
lastToken = tokens[tokens.length - 1];
|
|
1672
1698
|
if (lastToken && token.type === 'text' && lastToken.type === 'text') {
|
|
@@ -1675,18 +1701,18 @@ var Lexer = /*#__PURE__*/function () {
|
|
|
1675
1701
|
} else {
|
|
1676
1702
|
tokens.push(token);
|
|
1677
1703
|
}
|
|
1678
|
-
continue;
|
|
1704
|
+
return "continue";
|
|
1679
1705
|
}
|
|
1680
1706
|
|
|
1681
1707
|
// link
|
|
1682
|
-
if (token =
|
|
1708
|
+
if (token = _this2.tokenizer.link(src)) {
|
|
1683
1709
|
src = src.substring(token.raw.length);
|
|
1684
1710
|
tokens.push(token);
|
|
1685
|
-
continue;
|
|
1711
|
+
return "continue";
|
|
1686
1712
|
}
|
|
1687
1713
|
|
|
1688
1714
|
// reflink, nolink
|
|
1689
|
-
if (token =
|
|
1715
|
+
if (token = _this2.tokenizer.reflink(src, _this2.tokens.links)) {
|
|
1690
1716
|
src = src.substring(token.raw.length);
|
|
1691
1717
|
lastToken = tokens[tokens.length - 1];
|
|
1692
1718
|
if (lastToken && token.type === 'text' && lastToken.type === 'text') {
|
|
@@ -1695,73 +1721,71 @@ var Lexer = /*#__PURE__*/function () {
|
|
|
1695
1721
|
} else {
|
|
1696
1722
|
tokens.push(token);
|
|
1697
1723
|
}
|
|
1698
|
-
continue;
|
|
1724
|
+
return "continue";
|
|
1699
1725
|
}
|
|
1700
1726
|
|
|
1701
1727
|
// em & strong
|
|
1702
|
-
if (token =
|
|
1728
|
+
if (token = _this2.tokenizer.emStrong(src, maskedSrc, prevChar)) {
|
|
1703
1729
|
src = src.substring(token.raw.length);
|
|
1704
1730
|
tokens.push(token);
|
|
1705
|
-
continue;
|
|
1731
|
+
return "continue";
|
|
1706
1732
|
}
|
|
1707
1733
|
|
|
1708
1734
|
// code
|
|
1709
|
-
if (token =
|
|
1735
|
+
if (token = _this2.tokenizer.codespan(src)) {
|
|
1710
1736
|
src = src.substring(token.raw.length);
|
|
1711
1737
|
tokens.push(token);
|
|
1712
|
-
continue;
|
|
1738
|
+
return "continue";
|
|
1713
1739
|
}
|
|
1714
1740
|
|
|
1715
1741
|
// br
|
|
1716
|
-
if (token =
|
|
1742
|
+
if (token = _this2.tokenizer.br(src)) {
|
|
1717
1743
|
src = src.substring(token.raw.length);
|
|
1718
1744
|
tokens.push(token);
|
|
1719
|
-
continue;
|
|
1745
|
+
return "continue";
|
|
1720
1746
|
}
|
|
1721
1747
|
|
|
1722
1748
|
// del (gfm)
|
|
1723
|
-
if (token =
|
|
1749
|
+
if (token = _this2.tokenizer.del(src)) {
|
|
1724
1750
|
src = src.substring(token.raw.length);
|
|
1725
1751
|
tokens.push(token);
|
|
1726
|
-
continue;
|
|
1752
|
+
return "continue";
|
|
1727
1753
|
}
|
|
1728
1754
|
|
|
1729
1755
|
// autolink
|
|
1730
|
-
if (token =
|
|
1756
|
+
if (token = _this2.tokenizer.autolink(src, mangle)) {
|
|
1731
1757
|
src = src.substring(token.raw.length);
|
|
1732
1758
|
tokens.push(token);
|
|
1733
|
-
continue;
|
|
1759
|
+
return "continue";
|
|
1734
1760
|
}
|
|
1735
1761
|
|
|
1736
1762
|
// url (gfm)
|
|
1737
|
-
if (!
|
|
1763
|
+
if (!_this2.state.inLink && (token = _this2.tokenizer.url(src, mangle))) {
|
|
1738
1764
|
src = src.substring(token.raw.length);
|
|
1739
1765
|
tokens.push(token);
|
|
1740
|
-
continue;
|
|
1766
|
+
return "continue";
|
|
1741
1767
|
}
|
|
1742
1768
|
|
|
1743
1769
|
// text
|
|
1744
1770
|
// prevent inlineText consuming extensions by clipping 'src' to extension start
|
|
1745
1771
|
cutSrc = src;
|
|
1746
|
-
if (
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
startIndex = Math.min(startIndex, tempStart);
|
|
1757
|
-
}
|
|
1758
|
-
});
|
|
1759
|
-
if (startIndex < Infinity && startIndex >= 0) {
|
|
1760
|
-
cutSrc = src.substring(0, startIndex + 1);
|
|
1772
|
+
if (_this2.options.extensions && _this2.options.extensions.startInline) {
|
|
1773
|
+
var startIndex = Infinity;
|
|
1774
|
+
var tempSrc = src.slice(1);
|
|
1775
|
+
var tempStart;
|
|
1776
|
+
_this2.options.extensions.startInline.forEach(function (getStartIndex) {
|
|
1777
|
+
tempStart = getStartIndex.call({
|
|
1778
|
+
lexer: this
|
|
1779
|
+
}, tempSrc);
|
|
1780
|
+
if (typeof tempStart === 'number' && tempStart >= 0) {
|
|
1781
|
+
startIndex = Math.min(startIndex, tempStart);
|
|
1761
1782
|
}
|
|
1762
|
-
})
|
|
1783
|
+
});
|
|
1784
|
+
if (startIndex < Infinity && startIndex >= 0) {
|
|
1785
|
+
cutSrc = src.substring(0, startIndex + 1);
|
|
1786
|
+
}
|
|
1763
1787
|
}
|
|
1764
|
-
if (token =
|
|
1788
|
+
if (token = _this2.tokenizer.inlineText(cutSrc, smartypants)) {
|
|
1765
1789
|
src = src.substring(token.raw.length);
|
|
1766
1790
|
if (token.raw.slice(-1) !== '_') {
|
|
1767
1791
|
// Track prevChar before string of ____ started
|
|
@@ -1775,17 +1799,22 @@ var Lexer = /*#__PURE__*/function () {
|
|
|
1775
1799
|
} else {
|
|
1776
1800
|
tokens.push(token);
|
|
1777
1801
|
}
|
|
1778
|
-
continue;
|
|
1802
|
+
return "continue";
|
|
1779
1803
|
}
|
|
1780
1804
|
if (src) {
|
|
1781
1805
|
var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
|
|
1782
|
-
if (
|
|
1806
|
+
if (_this2.options.silent) {
|
|
1783
1807
|
console.error(errMsg);
|
|
1784
|
-
break;
|
|
1808
|
+
return "break";
|
|
1785
1809
|
} else {
|
|
1786
1810
|
throw new Error(errMsg);
|
|
1787
1811
|
}
|
|
1788
1812
|
}
|
|
1813
|
+
};
|
|
1814
|
+
while (src) {
|
|
1815
|
+
var _ret2 = _loop2();
|
|
1816
|
+
if (_ret2 === "continue") continue;
|
|
1817
|
+
if (_ret2 === "break") break;
|
|
1789
1818
|
}
|
|
1790
1819
|
return tokens;
|
|
1791
1820
|
};
|
|
@@ -1831,7 +1860,7 @@ var Renderer = /*#__PURE__*/function () {
|
|
|
1831
1860
|
_proto.blockquote = function blockquote(quote) {
|
|
1832
1861
|
return "<blockquote>\n" + quote + "</blockquote>\n";
|
|
1833
1862
|
};
|
|
1834
|
-
_proto.html = function html(_html) {
|
|
1863
|
+
_proto.html = function html(_html, block) {
|
|
1835
1864
|
return _html;
|
|
1836
1865
|
}
|
|
1837
1866
|
|
|
@@ -2232,8 +2261,7 @@ var Parser = /*#__PURE__*/function () {
|
|
|
2232
2261
|
}
|
|
2233
2262
|
case 'html':
|
|
2234
2263
|
{
|
|
2235
|
-
|
|
2236
|
-
out += this.renderer.html(token.text);
|
|
2264
|
+
out += this.renderer.html(token.text, token.block);
|
|
2237
2265
|
continue;
|
|
2238
2266
|
}
|
|
2239
2267
|
case 'paragraph':
|
|
@@ -2357,98 +2385,170 @@ var Parser = /*#__PURE__*/function () {
|
|
|
2357
2385
|
return Parser;
|
|
2358
2386
|
}();
|
|
2359
2387
|
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
function marked(src, opt, callback) {
|
|
2364
|
-
// throw error in case of non string input
|
|
2365
|
-
if (typeof src === 'undefined' || src === null) {
|
|
2366
|
-
throw new Error('marked(): input parameter is undefined or null');
|
|
2367
|
-
}
|
|
2368
|
-
if (typeof src !== 'string') {
|
|
2369
|
-
throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');
|
|
2388
|
+
var Hooks = /*#__PURE__*/function () {
|
|
2389
|
+
function Hooks(options) {
|
|
2390
|
+
this.options = options || exports.defaults;
|
|
2370
2391
|
}
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2392
|
+
var _proto = Hooks.prototype;
|
|
2393
|
+
/**
|
|
2394
|
+
* Process markdown before marked
|
|
2395
|
+
*/
|
|
2396
|
+
_proto.preprocess = function preprocess(markdown) {
|
|
2397
|
+
return markdown;
|
|
2374
2398
|
}
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2399
|
+
|
|
2400
|
+
/**
|
|
2401
|
+
* Process HTML after marked is finished
|
|
2402
|
+
*/;
|
|
2403
|
+
_proto.postprocess = function postprocess(html) {
|
|
2404
|
+
return html;
|
|
2405
|
+
};
|
|
2406
|
+
return Hooks;
|
|
2407
|
+
}();
|
|
2408
|
+
Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);
|
|
2409
|
+
|
|
2410
|
+
function onError(silent, async, callback) {
|
|
2411
|
+
return function (e) {
|
|
2412
|
+
e.message += '\nPlease report this to https://github.com/markedjs/marked.';
|
|
2413
|
+
if (silent) {
|
|
2414
|
+
var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
|
|
2415
|
+
if (async) {
|
|
2416
|
+
return Promise.resolve(msg);
|
|
2417
|
+
}
|
|
2418
|
+
if (callback) {
|
|
2419
|
+
callback(null, msg);
|
|
2420
|
+
return;
|
|
2421
|
+
}
|
|
2422
|
+
return msg;
|
|
2423
|
+
}
|
|
2424
|
+
if (async) {
|
|
2425
|
+
return Promise.reject(e);
|
|
2426
|
+
}
|
|
2427
|
+
if (callback) {
|
|
2428
|
+
callback(e);
|
|
2429
|
+
return;
|
|
2430
|
+
}
|
|
2431
|
+
throw e;
|
|
2432
|
+
};
|
|
2433
|
+
}
|
|
2434
|
+
function parseMarkdown(lexer, parser) {
|
|
2435
|
+
return function (src, opt, callback) {
|
|
2436
|
+
if (typeof opt === 'function') {
|
|
2437
|
+
callback = opt;
|
|
2438
|
+
opt = null;
|
|
2439
|
+
}
|
|
2440
|
+
var origOpt = _extends({}, opt);
|
|
2441
|
+
opt = _extends({}, marked.defaults, origOpt);
|
|
2442
|
+
var throwError = onError(opt.silent, opt.async, callback);
|
|
2443
|
+
|
|
2444
|
+
// throw error in case of non string input
|
|
2445
|
+
if (typeof src === 'undefined' || src === null) {
|
|
2446
|
+
return throwError(new Error('marked(): input parameter is undefined or null'));
|
|
2447
|
+
}
|
|
2448
|
+
if (typeof src !== 'string') {
|
|
2449
|
+
return throwError(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'));
|
|
2450
|
+
}
|
|
2451
|
+
checkDeprecations(opt, callback);
|
|
2452
|
+
if (opt.hooks) {
|
|
2453
|
+
opt.hooks.options = opt;
|
|
2454
|
+
}
|
|
2455
|
+
if (callback) {
|
|
2456
|
+
var highlight = opt.highlight;
|
|
2457
|
+
var tokens;
|
|
2458
|
+
try {
|
|
2459
|
+
if (opt.hooks) {
|
|
2460
|
+
src = opt.hooks.preprocess(src);
|
|
2395
2461
|
}
|
|
2462
|
+
tokens = lexer(src, opt);
|
|
2463
|
+
} catch (e) {
|
|
2464
|
+
return throwError(e);
|
|
2396
2465
|
}
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
delete opt.highlight;
|
|
2404
|
-
if (!tokens.length) return done();
|
|
2405
|
-
var pending = 0;
|
|
2406
|
-
marked.walkTokens(tokens, function (token) {
|
|
2407
|
-
if (token.type === 'code') {
|
|
2408
|
-
pending++;
|
|
2409
|
-
setTimeout(function () {
|
|
2410
|
-
highlight(token.text, token.lang, function (err, code) {
|
|
2411
|
-
if (err) {
|
|
2412
|
-
return done(err);
|
|
2466
|
+
var done = function done(err) {
|
|
2467
|
+
var out;
|
|
2468
|
+
if (!err) {
|
|
2469
|
+
try {
|
|
2470
|
+
if (opt.walkTokens) {
|
|
2471
|
+
marked.walkTokens(tokens, opt.walkTokens);
|
|
2413
2472
|
}
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2473
|
+
out = parser(tokens, opt);
|
|
2474
|
+
if (opt.hooks) {
|
|
2475
|
+
out = opt.hooks.postprocess(out);
|
|
2417
2476
|
}
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2477
|
+
} catch (e) {
|
|
2478
|
+
err = e;
|
|
2479
|
+
}
|
|
2480
|
+
}
|
|
2481
|
+
opt.highlight = highlight;
|
|
2482
|
+
return err ? throwError(err) : callback(null, out);
|
|
2483
|
+
};
|
|
2484
|
+
if (!highlight || highlight.length < 3) {
|
|
2485
|
+
return done();
|
|
2424
2486
|
}
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2487
|
+
delete opt.highlight;
|
|
2488
|
+
if (!tokens.length) return done();
|
|
2489
|
+
var pending = 0;
|
|
2490
|
+
marked.walkTokens(tokens, function (token) {
|
|
2491
|
+
if (token.type === 'code') {
|
|
2492
|
+
pending++;
|
|
2493
|
+
setTimeout(function () {
|
|
2494
|
+
highlight(token.text, token.lang, function (err, code) {
|
|
2495
|
+
if (err) {
|
|
2496
|
+
return done(err);
|
|
2497
|
+
}
|
|
2498
|
+
if (code != null && code !== token.text) {
|
|
2499
|
+
token.text = code;
|
|
2500
|
+
token.escaped = true;
|
|
2501
|
+
}
|
|
2502
|
+
pending--;
|
|
2503
|
+
if (pending === 0) {
|
|
2504
|
+
done();
|
|
2505
|
+
}
|
|
2506
|
+
});
|
|
2507
|
+
}, 0);
|
|
2508
|
+
}
|
|
2509
|
+
});
|
|
2510
|
+
if (pending === 0) {
|
|
2511
|
+
done();
|
|
2512
|
+
}
|
|
2513
|
+
return;
|
|
2514
|
+
}
|
|
2515
|
+
if (opt.async) {
|
|
2516
|
+
return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {
|
|
2517
|
+
return lexer(src, opt);
|
|
2518
|
+
}).then(function (tokens) {
|
|
2519
|
+
return opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(function () {
|
|
2520
|
+
return tokens;
|
|
2521
|
+
}) : tokens;
|
|
2522
|
+
}).then(function (tokens) {
|
|
2523
|
+
return parser(tokens, opt);
|
|
2524
|
+
}).then(function (html) {
|
|
2525
|
+
return opt.hooks ? opt.hooks.postprocess(html) : html;
|
|
2526
|
+
})["catch"](throwError);
|
|
2435
2527
|
}
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
var _tokens = Lexer.lex(src, opt);
|
|
2440
|
-
if (opt.walkTokens) {
|
|
2441
|
-
if (opt.async) {
|
|
2442
|
-
return Promise.all(marked.walkTokens(_tokens, opt.walkTokens)).then(function () {
|
|
2443
|
-
return Parser.parse(_tokens, opt);
|
|
2444
|
-
})["catch"](onError);
|
|
2528
|
+
try {
|
|
2529
|
+
if (opt.hooks) {
|
|
2530
|
+
src = opt.hooks.preprocess(src);
|
|
2445
2531
|
}
|
|
2446
|
-
|
|
2532
|
+
var _tokens = lexer(src, opt);
|
|
2533
|
+
if (opt.walkTokens) {
|
|
2534
|
+
marked.walkTokens(_tokens, opt.walkTokens);
|
|
2535
|
+
}
|
|
2536
|
+
var html = parser(_tokens, opt);
|
|
2537
|
+
if (opt.hooks) {
|
|
2538
|
+
html = opt.hooks.postprocess(html);
|
|
2539
|
+
}
|
|
2540
|
+
return html;
|
|
2541
|
+
} catch (e) {
|
|
2542
|
+
return throwError(e);
|
|
2447
2543
|
}
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2544
|
+
};
|
|
2545
|
+
}
|
|
2546
|
+
|
|
2547
|
+
/**
|
|
2548
|
+
* Marked
|
|
2549
|
+
*/
|
|
2550
|
+
function marked(src, opt, callback) {
|
|
2551
|
+
return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);
|
|
2452
2552
|
}
|
|
2453
2553
|
|
|
2454
2554
|
/**
|
|
@@ -2456,7 +2556,7 @@ function marked(src, opt, callback) {
|
|
|
2456
2556
|
*/
|
|
2457
2557
|
|
|
2458
2558
|
marked.options = marked.setOptions = function (opt) {
|
|
2459
|
-
|
|
2559
|
+
marked.defaults = _extends({}, marked.defaults, opt);
|
|
2460
2560
|
changeDefaults(marked.defaults);
|
|
2461
2561
|
return marked;
|
|
2462
2562
|
};
|
|
@@ -2477,10 +2577,10 @@ marked.use = function () {
|
|
|
2477
2577
|
}
|
|
2478
2578
|
args.forEach(function (pack) {
|
|
2479
2579
|
// copy options to new object
|
|
2480
|
-
var opts =
|
|
2580
|
+
var opts = _extends({}, pack);
|
|
2481
2581
|
|
|
2482
2582
|
// set async to true if it was set to true before
|
|
2483
|
-
opts.async = marked.defaults.async || opts.async;
|
|
2583
|
+
opts.async = marked.defaults.async || opts.async || false;
|
|
2484
2584
|
|
|
2485
2585
|
// ==-- Parse "addon" extensions --== //
|
|
2486
2586
|
if (pack.extensions) {
|
|
@@ -2544,50 +2644,80 @@ marked.use = function () {
|
|
|
2544
2644
|
|
|
2545
2645
|
// ==-- Parse "overwrite" extensions --== //
|
|
2546
2646
|
if (pack.renderer) {
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
var
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
return ret;
|
|
2561
|
-
};
|
|
2647
|
+
var renderer = marked.defaults.renderer || new Renderer();
|
|
2648
|
+
var _loop = function _loop(prop) {
|
|
2649
|
+
var prevRenderer = renderer[prop];
|
|
2650
|
+
// Replace renderer with func to run extension, but fall back if false
|
|
2651
|
+
renderer[prop] = function () {
|
|
2652
|
+
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
2653
|
+
args[_key3] = arguments[_key3];
|
|
2654
|
+
}
|
|
2655
|
+
var ret = pack.renderer[prop].apply(renderer, args);
|
|
2656
|
+
if (ret === false) {
|
|
2657
|
+
ret = prevRenderer.apply(renderer, args);
|
|
2658
|
+
}
|
|
2659
|
+
return ret;
|
|
2562
2660
|
};
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2661
|
+
};
|
|
2662
|
+
for (var prop in pack.renderer) {
|
|
2663
|
+
_loop(prop);
|
|
2664
|
+
}
|
|
2665
|
+
opts.renderer = renderer;
|
|
2568
2666
|
}
|
|
2569
2667
|
if (pack.tokenizer) {
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
var
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2668
|
+
var tokenizer = marked.defaults.tokenizer || new Tokenizer();
|
|
2669
|
+
var _loop2 = function _loop2(_prop) {
|
|
2670
|
+
var prevTokenizer = tokenizer[_prop];
|
|
2671
|
+
// Replace tokenizer with func to run extension, but fall back if false
|
|
2672
|
+
tokenizer[_prop] = function () {
|
|
2673
|
+
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
2674
|
+
args[_key4] = arguments[_key4];
|
|
2675
|
+
}
|
|
2676
|
+
var ret = pack.tokenizer[_prop].apply(tokenizer, args);
|
|
2677
|
+
if (ret === false) {
|
|
2678
|
+
ret = prevTokenizer.apply(tokenizer, args);
|
|
2679
|
+
}
|
|
2680
|
+
return ret;
|
|
2681
|
+
};
|
|
2682
|
+
};
|
|
2683
|
+
for (var _prop in pack.tokenizer) {
|
|
2684
|
+
_loop2(_prop);
|
|
2685
|
+
}
|
|
2686
|
+
opts.tokenizer = tokenizer;
|
|
2687
|
+
}
|
|
2688
|
+
|
|
2689
|
+
// ==-- Parse Hooks extensions --== //
|
|
2690
|
+
if (pack.hooks) {
|
|
2691
|
+
var hooks = marked.defaults.hooks || new Hooks();
|
|
2692
|
+
var _loop3 = function _loop3(_prop2) {
|
|
2693
|
+
var prevHook = hooks[_prop2];
|
|
2694
|
+
if (Hooks.passThroughHooks.has(_prop2)) {
|
|
2695
|
+
hooks[_prop2] = function (arg) {
|
|
2696
|
+
if (marked.defaults.async) {
|
|
2697
|
+
return Promise.resolve(pack.hooks[_prop2].call(hooks, arg)).then(function (ret) {
|
|
2698
|
+
return prevHook.call(hooks, ret);
|
|
2699
|
+
});
|
|
2578
2700
|
}
|
|
2579
|
-
var ret = pack.
|
|
2701
|
+
var ret = pack.hooks[_prop2].call(hooks, arg);
|
|
2702
|
+
return prevHook.call(hooks, ret);
|
|
2703
|
+
};
|
|
2704
|
+
} else {
|
|
2705
|
+
hooks[_prop2] = function () {
|
|
2706
|
+
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
|
2707
|
+
args[_key5] = arguments[_key5];
|
|
2708
|
+
}
|
|
2709
|
+
var ret = pack.hooks[_prop2].apply(hooks, args);
|
|
2580
2710
|
if (ret === false) {
|
|
2581
|
-
ret =
|
|
2711
|
+
ret = prevHook.apply(hooks, args);
|
|
2582
2712
|
}
|
|
2583
2713
|
return ret;
|
|
2584
2714
|
};
|
|
2585
|
-
};
|
|
2586
|
-
for (var prop in pack.tokenizer) {
|
|
2587
|
-
_loop2(prop);
|
|
2588
2715
|
}
|
|
2589
|
-
|
|
2590
|
-
|
|
2716
|
+
};
|
|
2717
|
+
for (var _prop2 in pack.hooks) {
|
|
2718
|
+
_loop3(_prop2);
|
|
2719
|
+
}
|
|
2720
|
+
opts.hooks = hooks;
|
|
2591
2721
|
}
|
|
2592
2722
|
|
|
2593
2723
|
// ==-- Parse WalkTokens extensions --== //
|
|
@@ -2612,7 +2742,7 @@ marked.use = function () {
|
|
|
2612
2742
|
|
|
2613
2743
|
marked.walkTokens = function (tokens, callback) {
|
|
2614
2744
|
var values = [];
|
|
2615
|
-
var
|
|
2745
|
+
var _loop4 = function _loop4() {
|
|
2616
2746
|
var token = _step.value;
|
|
2617
2747
|
values = values.concat(callback.call(marked, token));
|
|
2618
2748
|
switch (token.type) {
|
|
@@ -2650,7 +2780,7 @@ marked.walkTokens = function (tokens, callback) {
|
|
|
2650
2780
|
}
|
|
2651
2781
|
};
|
|
2652
2782
|
for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
|
|
2653
|
-
|
|
2783
|
+
_loop4();
|
|
2654
2784
|
}
|
|
2655
2785
|
return values;
|
|
2656
2786
|
};
|
|
@@ -2659,30 +2789,7 @@ marked.walkTokens = function (tokens, callback) {
|
|
|
2659
2789
|
* Parse Inline
|
|
2660
2790
|
* @param {string} src
|
|
2661
2791
|
*/
|
|
2662
|
-
marked.parseInline =
|
|
2663
|
-
// throw error in case of non string input
|
|
2664
|
-
if (typeof src === 'undefined' || src === null) {
|
|
2665
|
-
throw new Error('marked.parseInline(): input parameter is undefined or null');
|
|
2666
|
-
}
|
|
2667
|
-
if (typeof src !== 'string') {
|
|
2668
|
-
throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');
|
|
2669
|
-
}
|
|
2670
|
-
opt = merge({}, marked.defaults, opt || {});
|
|
2671
|
-
checkSanitizeDeprecation(opt);
|
|
2672
|
-
try {
|
|
2673
|
-
var tokens = Lexer.lexInline(src, opt);
|
|
2674
|
-
if (opt.walkTokens) {
|
|
2675
|
-
marked.walkTokens(tokens, opt.walkTokens);
|
|
2676
|
-
}
|
|
2677
|
-
return Parser.parseInline(tokens, opt);
|
|
2678
|
-
} catch (e) {
|
|
2679
|
-
e.message += '\nPlease report this to https://github.com/markedjs/marked.';
|
|
2680
|
-
if (opt.silent) {
|
|
2681
|
-
return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
|
|
2682
|
-
}
|
|
2683
|
-
throw e;
|
|
2684
|
-
}
|
|
2685
|
-
};
|
|
2792
|
+
marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);
|
|
2686
2793
|
|
|
2687
2794
|
/**
|
|
2688
2795
|
* Expose
|
|
@@ -2695,6 +2802,7 @@ marked.Lexer = Lexer;
|
|
|
2695
2802
|
marked.lexer = Lexer.lex;
|
|
2696
2803
|
marked.Tokenizer = Tokenizer;
|
|
2697
2804
|
marked.Slugger = Slugger;
|
|
2805
|
+
marked.Hooks = Hooks;
|
|
2698
2806
|
marked.parse = marked;
|
|
2699
2807
|
var options = marked.options;
|
|
2700
2808
|
var setOptions = marked.setOptions;
|
|
@@ -2705,6 +2813,7 @@ var parse = marked;
|
|
|
2705
2813
|
var parser = Parser.parse;
|
|
2706
2814
|
var lexer = Lexer.lex;
|
|
2707
2815
|
|
|
2816
|
+
exports.Hooks = Hooks;
|
|
2708
2817
|
exports.Lexer = Lexer;
|
|
2709
2818
|
exports.Parser = Parser;
|
|
2710
2819
|
exports.Renderer = Renderer;
|