marked 1.2.6 → 2.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.esm.js +133 -144
- package/lib/marked.js +135 -131
- package/marked.min.js +2 -2
- package/package.json +14 -14
- package/src/Lexer.js +47 -26
- package/src/Renderer.js +2 -0
- package/src/Tokenizer.js +58 -57
- package/src/rules.js +22 -55
package/lib/marked.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* marked - a markdown parser
|
|
3
|
-
* Copyright (c) 2011-
|
|
3
|
+
* Copyright (c) 2011-2021, Christopher Jeffrey. (MIT Licensed)
|
|
4
4
|
* https://github.com/markedjs/marked
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -73,8 +73,9 @@
|
|
|
73
73
|
return it.next.bind(it);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
function createCommonjsModule(fn
|
|
77
|
-
|
|
76
|
+
function createCommonjsModule(fn) {
|
|
77
|
+
var module = { exports: {} };
|
|
78
|
+
return fn(module, module.exports), module.exports;
|
|
78
79
|
}
|
|
79
80
|
|
|
80
81
|
var defaults = createCommonjsModule(function (module) {
|
|
@@ -111,9 +112,6 @@
|
|
|
111
112
|
changeDefaults: changeDefaults
|
|
112
113
|
};
|
|
113
114
|
});
|
|
114
|
-
var defaults_1 = defaults.defaults;
|
|
115
|
-
var defaults_2 = defaults.getDefaults;
|
|
116
|
-
var defaults_3 = defaults.changeDefaults;
|
|
117
115
|
|
|
118
116
|
/**
|
|
119
117
|
* Helpers
|
|
@@ -490,20 +488,11 @@
|
|
|
490
488
|
}
|
|
491
489
|
};
|
|
492
490
|
|
|
493
|
-
_proto.code = function code(src
|
|
491
|
+
_proto.code = function code(src) {
|
|
494
492
|
var cap = this.rules.block.code.exec(src);
|
|
495
493
|
|
|
496
494
|
if (cap) {
|
|
497
|
-
var
|
|
498
|
-
|
|
499
|
-
if (lastToken && lastToken.type === 'paragraph') {
|
|
500
|
-
return {
|
|
501
|
-
raw: cap[0],
|
|
502
|
-
text: cap[0].trimRight()
|
|
503
|
-
};
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
var text = cap[0].replace(/^ {4}/gm, '');
|
|
495
|
+
var text = cap[0].replace(/^ {1,4}/gm, '');
|
|
507
496
|
return {
|
|
508
497
|
type: 'code',
|
|
509
498
|
raw: cap[0],
|
|
@@ -534,12 +523,12 @@
|
|
|
534
523
|
if (cap) {
|
|
535
524
|
var text = cap[2].trim(); // remove trailing #s
|
|
536
525
|
|
|
537
|
-
if (text
|
|
526
|
+
if (/#$/.test(text)) {
|
|
538
527
|
var trimmed = rtrim$1(text, '#');
|
|
539
528
|
|
|
540
529
|
if (this.options.pedantic) {
|
|
541
530
|
text = trimmed.trim();
|
|
542
|
-
} else if (!trimmed || trimmed
|
|
531
|
+
} else if (!trimmed || / $/.test(trimmed)) {
|
|
543
532
|
// CommonMark requires space before trailing #s
|
|
544
533
|
text = trimmed.trim();
|
|
545
534
|
}
|
|
@@ -654,7 +643,7 @@
|
|
|
654
643
|
if (i !== l - 1) {
|
|
655
644
|
bnext = this.rules.block.listItemStart.exec(itemMatch[i + 1]);
|
|
656
645
|
|
|
657
|
-
if (bnext[1].length > bcurr[0].length || bnext[1].length > 3) {
|
|
646
|
+
if (!this.options.pedantic ? bnext[1].length > bcurr[0].length || bnext[1].length > 3 : bnext[1].length > bcurr[1].length) {
|
|
658
647
|
// nested list
|
|
659
648
|
itemMatch.splice(i, 2, itemMatch[i] + '\n' + itemMatch[i + 1]);
|
|
660
649
|
i--;
|
|
@@ -814,19 +803,10 @@
|
|
|
814
803
|
}
|
|
815
804
|
};
|
|
816
805
|
|
|
817
|
-
_proto.text = function text(src
|
|
806
|
+
_proto.text = function text(src) {
|
|
818
807
|
var cap = this.rules.block.text.exec(src);
|
|
819
808
|
|
|
820
809
|
if (cap) {
|
|
821
|
-
var lastToken = tokens[tokens.length - 1];
|
|
822
|
-
|
|
823
|
-
if (lastToken && lastToken.type === 'text') {
|
|
824
|
-
return {
|
|
825
|
-
raw: cap[0],
|
|
826
|
-
text: cap[0]
|
|
827
|
-
};
|
|
828
|
-
}
|
|
829
|
-
|
|
830
810
|
return {
|
|
831
811
|
type: 'text',
|
|
832
812
|
raw: cap[0],
|
|
@@ -879,9 +859,9 @@
|
|
|
879
859
|
if (cap) {
|
|
880
860
|
var trimmedUrl = cap[2].trim();
|
|
881
861
|
|
|
882
|
-
if (!this.options.pedantic && trimmedUrl
|
|
862
|
+
if (!this.options.pedantic && /^</.test(trimmedUrl)) {
|
|
883
863
|
// commonmark requires matching angle brackets
|
|
884
|
-
if (
|
|
864
|
+
if (!/>$/.test(trimmedUrl)) {
|
|
885
865
|
return;
|
|
886
866
|
} // ending angle bracket cannot be escaped
|
|
887
867
|
|
|
@@ -921,8 +901,8 @@
|
|
|
921
901
|
|
|
922
902
|
href = href.trim();
|
|
923
903
|
|
|
924
|
-
if (href
|
|
925
|
-
if (this.options.pedantic &&
|
|
904
|
+
if (/^</.test(href)) {
|
|
905
|
+
if (this.options.pedantic && !/>$/.test(trimmedUrl)) {
|
|
926
906
|
// pedantic allows starting angle bracket without ending angle bracket
|
|
927
907
|
href = href.slice(1);
|
|
928
908
|
} else {
|
|
@@ -957,54 +937,66 @@
|
|
|
957
937
|
}
|
|
958
938
|
};
|
|
959
939
|
|
|
960
|
-
_proto.
|
|
940
|
+
_proto.emStrong = function emStrong(src, maskedSrc, prevChar) {
|
|
961
941
|
if (prevChar === void 0) {
|
|
962
942
|
prevChar = '';
|
|
963
943
|
}
|
|
964
944
|
|
|
965
|
-
var match = this.rules.inline.
|
|
945
|
+
var match = this.rules.inline.emStrong.lDelim.exec(src);
|
|
946
|
+
if (!match) return;
|
|
947
|
+
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\u08A0-\u08B4\u08B6-\u08C7\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\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\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-\u170C\u170E-\u1711\u1720-\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-\u1B4B\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-\u2C2E\u2C30-\u2C5E\u2C60-\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-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\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\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\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\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\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]|\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\uDEC0-\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]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\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]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\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]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEEB\uDEF0-\uDEF9]|\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-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/)) return; // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
|
|
966
948
|
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
949
|
+
var nextChar = match[1] || match[2] || '';
|
|
950
|
+
|
|
951
|
+
if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
|
|
952
|
+
var lLength = match[0].length - 1;
|
|
953
|
+
var rDelim,
|
|
954
|
+
rLength,
|
|
955
|
+
delimTotal = lLength,
|
|
956
|
+
midDelimTotal = 0;
|
|
957
|
+
var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;
|
|
970
958
|
endReg.lastIndex = 0;
|
|
971
|
-
|
|
959
|
+
maskedSrc = maskedSrc.slice(-1 * src.length + lLength); // Bump maskedSrc to same section of string as src (move to lexer?)
|
|
972
960
|
|
|
973
961
|
while ((match = endReg.exec(maskedSrc)) != null) {
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
962
|
+
rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
|
|
963
|
+
if (!rDelim) continue; // matched the first alternative in rules.js (skip the * in __abc*abc__)
|
|
964
|
+
|
|
965
|
+
rLength = rDelim.length;
|
|
966
|
+
|
|
967
|
+
if (match[3] || match[4]) {
|
|
968
|
+
// found another Left Delim
|
|
969
|
+
delimTotal += rLength;
|
|
970
|
+
continue;
|
|
971
|
+
} else if (match[5] || match[6]) {
|
|
972
|
+
// either Left or Right Delim
|
|
973
|
+
if (lLength % 3 && !((lLength + rLength) % 3)) {
|
|
974
|
+
midDelimTotal += rLength;
|
|
975
|
+
continue; // CommonMark Emphasis Rules 9-10
|
|
976
|
+
}
|
|
982
977
|
}
|
|
983
|
-
}
|
|
984
|
-
}
|
|
985
|
-
};
|
|
986
978
|
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
}
|
|
991
|
-
|
|
992
|
-
var match = this.rules.inline.em.start.exec(src);
|
|
993
|
-
|
|
994
|
-
if (match && (!match[1] || match[1] && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {
|
|
995
|
-
maskedSrc = maskedSrc.slice(-1 * src.length);
|
|
996
|
-
var endReg = match[0] === '*' ? this.rules.inline.em.endAst : this.rules.inline.em.endUnd;
|
|
997
|
-
endReg.lastIndex = 0;
|
|
998
|
-
var cap;
|
|
979
|
+
delimTotal -= rLength;
|
|
980
|
+
if (delimTotal > 0) continue; // Haven't found enough closing delimiters
|
|
981
|
+
// If this is the last rDelimiter, remove extra characters. *a*** -> *a*
|
|
999
982
|
|
|
1000
|
-
|
|
1001
|
-
|
|
983
|
+
if (delimTotal + midDelimTotal - rLength <= 0 && !maskedSrc.slice(endReg.lastIndex).match(endReg)) {
|
|
984
|
+
rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
|
|
985
|
+
}
|
|
1002
986
|
|
|
1003
|
-
if (
|
|
987
|
+
if (Math.min(lLength, rLength) % 2) {
|
|
1004
988
|
return {
|
|
1005
989
|
type: 'em',
|
|
1006
|
-
raw: src.slice(0,
|
|
1007
|
-
text: src.slice(1,
|
|
990
|
+
raw: src.slice(0, lLength + match.index + rLength + 1),
|
|
991
|
+
text: src.slice(1, lLength + match.index + rLength)
|
|
992
|
+
};
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
if (Math.min(lLength, rLength) % 2 === 0) {
|
|
996
|
+
return {
|
|
997
|
+
type: 'strong',
|
|
998
|
+
raw: src.slice(0, lLength + match.index + rLength + 1),
|
|
999
|
+
text: src.slice(2, lLength + match.index + rLength - 1)
|
|
1008
1000
|
};
|
|
1009
1001
|
}
|
|
1010
1002
|
}
|
|
@@ -1017,7 +1009,7 @@
|
|
|
1017
1009
|
if (cap) {
|
|
1018
1010
|
var text = cap[2].replace(/\n/g, ' ');
|
|
1019
1011
|
var hasNonSpaceChars = /[^ ]/.test(text);
|
|
1020
|
-
var hasSpaceCharsOnBothEnds = text
|
|
1012
|
+
var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);
|
|
1021
1013
|
|
|
1022
1014
|
if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {
|
|
1023
1015
|
text = text.substring(1, text.length - 1);
|
|
@@ -1155,8 +1147,8 @@
|
|
|
1155
1147
|
*/
|
|
1156
1148
|
|
|
1157
1149
|
var block = {
|
|
1158
|
-
newline:
|
|
1159
|
-
code: /^( {4}[^\n]
|
|
1150
|
+
newline: /^(?: *(?:\n|$))+/,
|
|
1151
|
+
code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
|
|
1160
1152
|
fences: /^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,
|
|
1161
1153
|
hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,
|
|
1162
1154
|
heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,
|
|
@@ -1178,7 +1170,7 @@
|
|
|
1178
1170
|
lheading: /^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,
|
|
1179
1171
|
// regex template, placeholders will be replaced according to different paragraph
|
|
1180
1172
|
// interruption rules of commonmark and the original markdown spec:
|
|
1181
|
-
_paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,
|
|
1173
|
+
_paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,
|
|
1182
1174
|
text: /^[^\n]+/
|
|
1183
1175
|
};
|
|
1184
1176
|
block._label = /(?!\s*\])(?:\\[\[\]]|[^\[\]])+/;
|
|
@@ -1253,48 +1245,31 @@
|
|
|
1253
1245
|
reflink: /^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,
|
|
1254
1246
|
nolink: /^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,
|
|
1255
1247
|
reflinkSearch: 'reflink|nolink(?!\\()',
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
//
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
endUnd: /[^\s]__(?!_)(?:(?=[punctuation*\s])|$)/ // last char can't be a space, and final _ must preceed punct or \s (or endline)
|
|
1263
|
-
|
|
1264
|
-
},
|
|
1265
|
-
em: {
|
|
1266
|
-
start: /^(?:(\*(?=[punctuation]))|\*)(?![*\s])|_/,
|
|
1267
|
-
// (1) returns if starts w/ punctuation
|
|
1268
|
-
middle: /^\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*$|^_(?![_\s])(?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?_$/,
|
|
1269
|
-
endAst: /[^punctuation\s]\*(?!\*)|[punctuation]\*(?!\*)(?:(?=[punctuation_\s]|$))/,
|
|
1270
|
-
// last char can't be punct, or final * must also be followed by punct (or endline)
|
|
1271
|
-
endUnd: /[^\s]_(?!_)(?:(?=[punctuation*\s])|$)/ // last char can't be a space, and final _ must preceed punct or \s (or endline)
|
|
1248
|
+
emStrong: {
|
|
1249
|
+
lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
|
|
1250
|
+
// (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.
|
|
1251
|
+
// () Skip other delimiter (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
|
|
1252
|
+
rDelimAst: /\_\_[^_]*?\*[^_]*?\_\_|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,
|
|
1253
|
+
rDelimUnd: /\*\*[^*]*?\_[^*]*?\*\*|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/ // ^- Not allowed for _
|
|
1272
1254
|
|
|
1273
1255
|
},
|
|
1274
1256
|
code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
|
|
1275
1257
|
br: /^( {2,}|\\)\n(?!\s*$)/,
|
|
1276
1258
|
del: noopTest$1,
|
|
1277
|
-
text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*]|\b_|$)|[^ ](?= {2,}\n)))/,
|
|
1278
|
-
punctuation: /^([\
|
|
1279
|
-
}; // list of punctuation marks from
|
|
1280
|
-
// without * and _ to
|
|
1259
|
+
text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,
|
|
1260
|
+
punctuation: /^([\spunctuation])/
|
|
1261
|
+
}; // list of punctuation marks from CommonMark spec
|
|
1262
|
+
// without * and _ to handle the different emphasis markers * and _
|
|
1281
1263
|
|
|
1282
1264
|
inline._punctuation = '!"#$%&\'()+\\-.,/:;<=>?@\\[\\]`^{|}~';
|
|
1283
1265
|
inline.punctuation = edit$1(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, <html>
|
|
1284
1266
|
|
|
1285
|
-
inline.
|
|
1286
|
-
inline.
|
|
1267
|
+
inline.blockSkip = /\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;
|
|
1268
|
+
inline.escapedEmSt = /\\\*|\\_/g;
|
|
1287
1269
|
inline._comment = edit$1(block._comment).replace('(?:-->|$)', '-->').getRegex();
|
|
1288
|
-
inline.
|
|
1289
|
-
inline.
|
|
1290
|
-
inline.
|
|
1291
|
-
inline.em.endUnd = edit$1(inline.em.endUnd, 'g').replace(/punctuation/g, inline._punctuation).getRegex();
|
|
1292
|
-
inline.strong.start = edit$1(inline.strong.start).replace(/punctuation/g, inline._punctuation).getRegex();
|
|
1293
|
-
inline.strong.middle = edit$1(inline.strong.middle).replace(/punctuation/g, inline._punctuation).replace(/overlapSkip/g, inline._overlapSkip).getRegex();
|
|
1294
|
-
inline.strong.endAst = edit$1(inline.strong.endAst, 'g').replace(/punctuation/g, inline._punctuation).getRegex();
|
|
1295
|
-
inline.strong.endUnd = edit$1(inline.strong.endUnd, 'g').replace(/punctuation/g, inline._punctuation).getRegex();
|
|
1296
|
-
inline.blockSkip = edit$1(inline._blockSkip, 'g').getRegex();
|
|
1297
|
-
inline.overlapSkip = edit$1(inline._overlapSkip, 'g').getRegex();
|
|
1270
|
+
inline.emStrong.lDelim = edit$1(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();
|
|
1271
|
+
inline.emStrong.rDelimAst = edit$1(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();
|
|
1272
|
+
inline.emStrong.rDelimUnd = edit$1(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();
|
|
1298
1273
|
inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
|
|
1299
1274
|
inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
|
|
1300
1275
|
inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
|
|
@@ -1342,7 +1317,7 @@
|
|
|
1342
1317
|
url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
|
|
1343
1318
|
_backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
|
|
1344
1319
|
del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
|
|
1345
|
-
text: /^([`~]+|[^`~])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*~]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/
|
|
1320
|
+
text: /^([`~]+|[^`~])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/
|
|
1346
1321
|
});
|
|
1347
1322
|
inline.gfm.url = edit$1(inline.gfm.url, 'i').replace('email', inline.gfm._extended_email).getRegex();
|
|
1348
1323
|
/**
|
|
@@ -1480,7 +1455,10 @@
|
|
|
1480
1455
|
top = true;
|
|
1481
1456
|
}
|
|
1482
1457
|
|
|
1483
|
-
|
|
1458
|
+
if (this.options.pedantic) {
|
|
1459
|
+
src = src.replace(/^ +$/gm, '');
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1484
1462
|
var token, i, l, lastToken;
|
|
1485
1463
|
|
|
1486
1464
|
while (src) {
|
|
@@ -1496,15 +1474,15 @@
|
|
|
1496
1474
|
} // code
|
|
1497
1475
|
|
|
1498
1476
|
|
|
1499
|
-
if (token = this.tokenizer.code(src
|
|
1477
|
+
if (token = this.tokenizer.code(src)) {
|
|
1500
1478
|
src = src.substring(token.raw.length);
|
|
1479
|
+
lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.
|
|
1501
1480
|
|
|
1502
|
-
if (
|
|
1503
|
-
tokens.push(token);
|
|
1504
|
-
} else {
|
|
1505
|
-
lastToken = tokens[tokens.length - 1];
|
|
1481
|
+
if (lastToken && lastToken.type === 'paragraph') {
|
|
1506
1482
|
lastToken.raw += '\n' + token.raw;
|
|
1507
1483
|
lastToken.text += '\n' + token.text;
|
|
1484
|
+
} else {
|
|
1485
|
+
tokens.push(token);
|
|
1508
1486
|
}
|
|
1509
1487
|
|
|
1510
1488
|
continue;
|
|
@@ -1602,15 +1580,15 @@
|
|
|
1602
1580
|
} // text
|
|
1603
1581
|
|
|
1604
1582
|
|
|
1605
|
-
if (token = this.tokenizer.text(src
|
|
1583
|
+
if (token = this.tokenizer.text(src)) {
|
|
1606
1584
|
src = src.substring(token.raw.length);
|
|
1585
|
+
lastToken = tokens[tokens.length - 1];
|
|
1607
1586
|
|
|
1608
|
-
if (
|
|
1609
|
-
tokens.push(token);
|
|
1610
|
-
} else {
|
|
1611
|
-
lastToken = tokens[tokens.length - 1];
|
|
1587
|
+
if (lastToken && lastToken.type === 'text') {
|
|
1612
1588
|
lastToken.raw += '\n' + token.raw;
|
|
1613
1589
|
lastToken.text += '\n' + token.text;
|
|
1590
|
+
} else {
|
|
1591
|
+
tokens.push(token);
|
|
1614
1592
|
}
|
|
1615
1593
|
|
|
1616
1594
|
continue;
|
|
@@ -1717,7 +1695,7 @@
|
|
|
1717
1695
|
inRawBlock = false;
|
|
1718
1696
|
}
|
|
1719
1697
|
|
|
1720
|
-
var token; // String with links masked to avoid interference with em and strong
|
|
1698
|
+
var token, lastToken; // String with links masked to avoid interference with em and strong
|
|
1721
1699
|
|
|
1722
1700
|
var maskedSrc = src;
|
|
1723
1701
|
var match;
|
|
@@ -1738,6 +1716,11 @@
|
|
|
1738
1716
|
|
|
1739
1717
|
while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {
|
|
1740
1718
|
maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString$1('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
|
|
1719
|
+
} // Mask out escaped em & strong delimiters
|
|
1720
|
+
|
|
1721
|
+
|
|
1722
|
+
while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {
|
|
1723
|
+
maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
|
|
1741
1724
|
}
|
|
1742
1725
|
|
|
1743
1726
|
while (src) {
|
|
@@ -1758,7 +1741,15 @@
|
|
|
1758
1741
|
src = src.substring(token.raw.length);
|
|
1759
1742
|
inLink = token.inLink;
|
|
1760
1743
|
inRawBlock = token.inRawBlock;
|
|
1761
|
-
tokens.
|
|
1744
|
+
var _lastToken = tokens[tokens.length - 1];
|
|
1745
|
+
|
|
1746
|
+
if (_lastToken && token.type === 'text' && _lastToken.type === 'text') {
|
|
1747
|
+
_lastToken.raw += token.raw;
|
|
1748
|
+
_lastToken.text += token.text;
|
|
1749
|
+
} else {
|
|
1750
|
+
tokens.push(token);
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1762
1753
|
continue;
|
|
1763
1754
|
} // link
|
|
1764
1755
|
|
|
@@ -1777,25 +1768,23 @@
|
|
|
1777
1768
|
|
|
1778
1769
|
if (token = this.tokenizer.reflink(src, this.tokens.links)) {
|
|
1779
1770
|
src = src.substring(token.raw.length);
|
|
1771
|
+
var _lastToken2 = tokens[tokens.length - 1];
|
|
1780
1772
|
|
|
1781
1773
|
if (token.type === 'link') {
|
|
1782
1774
|
token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);
|
|
1775
|
+
tokens.push(token);
|
|
1776
|
+
} else if (_lastToken2 && token.type === 'text' && _lastToken2.type === 'text') {
|
|
1777
|
+
_lastToken2.raw += token.raw;
|
|
1778
|
+
_lastToken2.text += token.text;
|
|
1779
|
+
} else {
|
|
1780
|
+
tokens.push(token);
|
|
1783
1781
|
}
|
|
1784
1782
|
|
|
1785
|
-
tokens.push(token);
|
|
1786
|
-
continue;
|
|
1787
|
-
} // strong
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
if (token = this.tokenizer.strong(src, maskedSrc, prevChar)) {
|
|
1791
|
-
src = src.substring(token.raw.length);
|
|
1792
|
-
token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);
|
|
1793
|
-
tokens.push(token);
|
|
1794
1783
|
continue;
|
|
1795
|
-
} // em
|
|
1784
|
+
} // em & strong
|
|
1796
1785
|
|
|
1797
1786
|
|
|
1798
|
-
if (token = this.tokenizer.
|
|
1787
|
+
if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
|
|
1799
1788
|
src = src.substring(token.raw.length);
|
|
1800
1789
|
token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);
|
|
1801
1790
|
tokens.push(token);
|
|
@@ -1841,9 +1830,22 @@
|
|
|
1841
1830
|
|
|
1842
1831
|
if (token = this.tokenizer.inlineText(src, inRawBlock, smartypants)) {
|
|
1843
1832
|
src = src.substring(token.raw.length);
|
|
1844
|
-
|
|
1833
|
+
|
|
1834
|
+
if (token.raw.slice(-1) !== '_') {
|
|
1835
|
+
// Track prevChar before string of ____ started
|
|
1836
|
+
prevChar = token.raw.slice(-1);
|
|
1837
|
+
}
|
|
1838
|
+
|
|
1845
1839
|
keepPrevChar = true;
|
|
1846
|
-
tokens.
|
|
1840
|
+
lastToken = tokens[tokens.length - 1];
|
|
1841
|
+
|
|
1842
|
+
if (lastToken && lastToken.type === 'text') {
|
|
1843
|
+
lastToken.raw += token.raw;
|
|
1844
|
+
lastToken.text += token.text;
|
|
1845
|
+
} else {
|
|
1846
|
+
tokens.push(token);
|
|
1847
|
+
}
|
|
1848
|
+
|
|
1847
1849
|
continue;
|
|
1848
1850
|
}
|
|
1849
1851
|
|
|
@@ -1901,6 +1903,8 @@
|
|
|
1901
1903
|
}
|
|
1902
1904
|
}
|
|
1903
1905
|
|
|
1906
|
+
_code = _code.replace(/\n$/, '') + '\n';
|
|
1907
|
+
|
|
1904
1908
|
if (!lang) {
|
|
1905
1909
|
return '<pre><code>' + (escaped ? _code : escape$1(_code, true)) + '</code></pre>\n';
|
|
1906
1910
|
}
|