marked 2.0.4 → 2.1.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 +225 -64
- package/lib/marked.js +313 -94
- package/marked.min.js +1 -1
- package/package.json +13 -13
- package/src/Lexer.js +67 -7
- package/src/Parser.js +25 -2
- package/src/Tokenizer.js +15 -14
- package/src/defaults.js +1 -0
- package/src/marked.js +112 -36
- package/src/rules.js +4 -4
package/lib/marked.js
CHANGED
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
return {
|
|
76
76
|
baseUrl: null,
|
|
77
77
|
breaks: false,
|
|
78
|
+
extensions: null,
|
|
78
79
|
gfm: true,
|
|
79
80
|
headerIds: true,
|
|
80
81
|
headerPrefix: '',
|
|
@@ -955,9 +956,9 @@
|
|
|
955
956
|
}
|
|
956
957
|
|
|
957
958
|
var match = this.rules.inline.emStrong.lDelim.exec(src);
|
|
958
|
-
if (!match) return;
|
|
959
|
-
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
|
|
959
|
+
if (!match) return; // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
|
|
960
960
|
|
|
961
|
+
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;
|
|
961
962
|
var nextChar = match[1] || match[2] || '';
|
|
962
963
|
|
|
963
964
|
if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
|
|
@@ -967,12 +968,13 @@
|
|
|
967
968
|
delimTotal = lLength,
|
|
968
969
|
midDelimTotal = 0;
|
|
969
970
|
var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;
|
|
970
|
-
endReg.lastIndex = 0;
|
|
971
|
-
|
|
971
|
+
endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)
|
|
972
|
+
|
|
973
|
+
maskedSrc = maskedSrc.slice(-1 * src.length + lLength);
|
|
972
974
|
|
|
973
975
|
while ((match = endReg.exec(maskedSrc)) != null) {
|
|
974
976
|
rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
|
|
975
|
-
if (!rDelim) continue; //
|
|
977
|
+
if (!rDelim) continue; // skip single * in __abc*abc__
|
|
976
978
|
|
|
977
979
|
rLength = rDelim.length;
|
|
978
980
|
|
|
@@ -990,11 +992,9 @@
|
|
|
990
992
|
|
|
991
993
|
delimTotal -= rLength;
|
|
992
994
|
if (delimTotal > 0) continue; // Haven't found enough closing delimiters
|
|
993
|
-
//
|
|
995
|
+
// Remove extra characters. *a*** -> *a*
|
|
994
996
|
|
|
995
|
-
|
|
996
|
-
rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
|
|
997
|
-
}
|
|
997
|
+
rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***
|
|
998
998
|
|
|
999
999
|
if (Math.min(lLength, rLength) % 2) {
|
|
1000
1000
|
return {
|
|
@@ -1002,15 +1002,14 @@
|
|
|
1002
1002
|
raw: src.slice(0, lLength + match.index + rLength + 1),
|
|
1003
1003
|
text: src.slice(1, lLength + match.index + rLength)
|
|
1004
1004
|
};
|
|
1005
|
-
}
|
|
1005
|
+
} // Create 'strong' if smallest delimiter has even char count. **a***
|
|
1006
1006
|
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
}
|
|
1007
|
+
|
|
1008
|
+
return {
|
|
1009
|
+
type: 'strong',
|
|
1010
|
+
raw: src.slice(0, lLength + match.index + rLength + 1),
|
|
1011
|
+
text: src.slice(2, lLength + match.index + rLength - 1)
|
|
1012
|
+
};
|
|
1014
1013
|
}
|
|
1015
1014
|
}
|
|
1016
1015
|
};
|
|
@@ -1260,9 +1259,9 @@
|
|
|
1260
1259
|
emStrong: {
|
|
1261
1260
|
lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
|
|
1262
1261
|
// (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.
|
|
1263
|
-
// () Skip other delimiter (1) #***
|
|
1264
|
-
rDelimAst: /\_\_[^_]*?\*[^_]*?\_\_|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,
|
|
1265
|
-
rDelimUnd: /\*\*[
|
|
1262
|
+
// () Skip other delimiter (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
|
|
1263
|
+
rDelimAst: /\_\_[^_*]*?\*[^_*]*?\_\_|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,
|
|
1264
|
+
rDelimUnd: /\*\*[^_*]*?\_[^_*]*?\*\*|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/ // ^- Not allowed for _
|
|
1266
1265
|
|
|
1267
1266
|
},
|
|
1268
1267
|
code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
|
|
@@ -1329,7 +1328,7 @@
|
|
|
1329
1328
|
url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
|
|
1330
1329
|
_backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
|
|
1331
1330
|
del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
|
|
1332
|
-
text: /^([`~]+|[^`~])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))
|
|
1331
|
+
text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
|
|
1333
1332
|
});
|
|
1334
1333
|
inline$1.gfm.url = edit(inline$1.gfm.url, 'i').replace('email', inline$1.gfm._extended_email).getRegex();
|
|
1335
1334
|
/**
|
|
@@ -1460,6 +1459,8 @@
|
|
|
1460
1459
|
;
|
|
1461
1460
|
|
|
1462
1461
|
_proto.blockTokens = function blockTokens(src, tokens, top) {
|
|
1462
|
+
var _this = this;
|
|
1463
|
+
|
|
1463
1464
|
if (tokens === void 0) {
|
|
1464
1465
|
tokens = [];
|
|
1465
1466
|
}
|
|
@@ -1472,10 +1473,24 @@
|
|
|
1472
1473
|
src = src.replace(/^ +$/gm, '');
|
|
1473
1474
|
}
|
|
1474
1475
|
|
|
1475
|
-
var token, i, l, lastToken;
|
|
1476
|
+
var token, i, l, lastToken, cutSrc, lastParagraphClipped;
|
|
1476
1477
|
|
|
1477
1478
|
while (src) {
|
|
1478
|
-
|
|
1479
|
+
var _this$options, _this$options$extensi, _this$options$extensi2;
|
|
1480
|
+
|
|
1481
|
+
if ((_this$options = this.options) != null && (_this$options$extensi = _this$options.extensions) != null && _this$options$extensi.block && this.options.extensions.block.some(function (extTokenizer) {
|
|
1482
|
+
if (token = extTokenizer.call(_this, src, tokens)) {
|
|
1483
|
+
src = src.substring(token.raw.length);
|
|
1484
|
+
tokens.push(token);
|
|
1485
|
+
return true;
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1488
|
+
return false;
|
|
1489
|
+
})) {
|
|
1490
|
+
continue;
|
|
1491
|
+
} // newline
|
|
1492
|
+
|
|
1493
|
+
|
|
1479
1494
|
if (token = this.tokenizer.space(src)) {
|
|
1480
1495
|
src = src.substring(token.raw.length);
|
|
1481
1496
|
|
|
@@ -1584,11 +1599,43 @@
|
|
|
1584
1599
|
tokens.push(token);
|
|
1585
1600
|
continue;
|
|
1586
1601
|
} // top-level paragraph
|
|
1602
|
+
// prevent paragraph consuming extensions by clipping 'src' to extension start
|
|
1587
1603
|
|
|
1588
1604
|
|
|
1589
|
-
|
|
1605
|
+
cutSrc = src;
|
|
1606
|
+
|
|
1607
|
+
if ((_this$options$extensi2 = this.options.extensions) != null && _this$options$extensi2.startBlock) {
|
|
1608
|
+
(function () {
|
|
1609
|
+
var startIndex = Infinity;
|
|
1610
|
+
var tempSrc = src.slice(1);
|
|
1611
|
+
var tempStart = void 0;
|
|
1612
|
+
|
|
1613
|
+
_this.options.extensions.startBlock.forEach(function (getStartIndex) {
|
|
1614
|
+
tempStart = getStartIndex.call(this, tempSrc);
|
|
1615
|
+
|
|
1616
|
+
if (typeof tempStart === 'number' && tempStart >= 0) {
|
|
1617
|
+
startIndex = Math.min(startIndex, tempStart);
|
|
1618
|
+
}
|
|
1619
|
+
});
|
|
1620
|
+
|
|
1621
|
+
if (startIndex < Infinity && startIndex >= 0) {
|
|
1622
|
+
cutSrc = src.substring(0, startIndex + 1);
|
|
1623
|
+
}
|
|
1624
|
+
})();
|
|
1625
|
+
}
|
|
1626
|
+
|
|
1627
|
+
if (top && (token = this.tokenizer.paragraph(cutSrc))) {
|
|
1628
|
+
lastToken = tokens[tokens.length - 1];
|
|
1629
|
+
|
|
1630
|
+
if (lastParagraphClipped && lastToken.type === 'paragraph') {
|
|
1631
|
+
lastToken.raw += '\n' + token.raw;
|
|
1632
|
+
lastToken.text += '\n' + token.text;
|
|
1633
|
+
} else {
|
|
1634
|
+
tokens.push(token);
|
|
1635
|
+
}
|
|
1636
|
+
|
|
1637
|
+
lastParagraphClipped = cutSrc.length !== src.length;
|
|
1590
1638
|
src = src.substring(token.raw.length);
|
|
1591
|
-
tokens.push(token);
|
|
1592
1639
|
continue;
|
|
1593
1640
|
} // text
|
|
1594
1641
|
|
|
@@ -1696,6 +1743,8 @@
|
|
|
1696
1743
|
;
|
|
1697
1744
|
|
|
1698
1745
|
_proto.inlineTokens = function inlineTokens(src, tokens, inLink, inRawBlock) {
|
|
1746
|
+
var _this2 = this;
|
|
1747
|
+
|
|
1699
1748
|
if (tokens === void 0) {
|
|
1700
1749
|
tokens = [];
|
|
1701
1750
|
}
|
|
@@ -1708,7 +1757,7 @@
|
|
|
1708
1757
|
inRawBlock = false;
|
|
1709
1758
|
}
|
|
1710
1759
|
|
|
1711
|
-
var token, lastToken; // String with links masked to avoid interference with em and strong
|
|
1760
|
+
var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong
|
|
1712
1761
|
|
|
1713
1762
|
var maskedSrc = src;
|
|
1714
1763
|
var match;
|
|
@@ -1737,11 +1786,26 @@
|
|
|
1737
1786
|
}
|
|
1738
1787
|
|
|
1739
1788
|
while (src) {
|
|
1789
|
+
var _this$options2, _this$options2$extens, _this$options$extensi3;
|
|
1790
|
+
|
|
1740
1791
|
if (!keepPrevChar) {
|
|
1741
1792
|
prevChar = '';
|
|
1742
1793
|
}
|
|
1743
1794
|
|
|
1744
|
-
keepPrevChar = false; //
|
|
1795
|
+
keepPrevChar = false; // extensions
|
|
1796
|
+
|
|
1797
|
+
if ((_this$options2 = this.options) != null && (_this$options2$extens = _this$options2.extensions) != null && _this$options2$extens.inline && this.options.extensions.inline.some(function (extTokenizer) {
|
|
1798
|
+
if (token = extTokenizer.call(_this2, src, tokens)) {
|
|
1799
|
+
src = src.substring(token.raw.length);
|
|
1800
|
+
tokens.push(token);
|
|
1801
|
+
return true;
|
|
1802
|
+
}
|
|
1803
|
+
|
|
1804
|
+
return false;
|
|
1805
|
+
})) {
|
|
1806
|
+
continue;
|
|
1807
|
+
} // escape
|
|
1808
|
+
|
|
1745
1809
|
|
|
1746
1810
|
if (token = this.tokenizer.escape(src)) {
|
|
1747
1811
|
src = src.substring(token.raw.length);
|
|
@@ -1754,11 +1818,11 @@
|
|
|
1754
1818
|
src = src.substring(token.raw.length);
|
|
1755
1819
|
inLink = token.inLink;
|
|
1756
1820
|
inRawBlock = token.inRawBlock;
|
|
1757
|
-
|
|
1821
|
+
lastToken = tokens[tokens.length - 1];
|
|
1758
1822
|
|
|
1759
|
-
if (
|
|
1760
|
-
|
|
1761
|
-
|
|
1823
|
+
if (lastToken && token.type === 'text' && lastToken.type === 'text') {
|
|
1824
|
+
lastToken.raw += token.raw;
|
|
1825
|
+
lastToken.text += token.text;
|
|
1762
1826
|
} else {
|
|
1763
1827
|
tokens.push(token);
|
|
1764
1828
|
}
|
|
@@ -1781,14 +1845,14 @@
|
|
|
1781
1845
|
|
|
1782
1846
|
if (token = this.tokenizer.reflink(src, this.tokens.links)) {
|
|
1783
1847
|
src = src.substring(token.raw.length);
|
|
1784
|
-
|
|
1848
|
+
lastToken = tokens[tokens.length - 1];
|
|
1785
1849
|
|
|
1786
1850
|
if (token.type === 'link') {
|
|
1787
1851
|
token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);
|
|
1788
1852
|
tokens.push(token);
|
|
1789
|
-
} else if (
|
|
1790
|
-
|
|
1791
|
-
|
|
1853
|
+
} else if (lastToken && token.type === 'text' && lastToken.type === 'text') {
|
|
1854
|
+
lastToken.raw += token.raw;
|
|
1855
|
+
lastToken.text += token.text;
|
|
1792
1856
|
} else {
|
|
1793
1857
|
tokens.push(token);
|
|
1794
1858
|
}
|
|
@@ -1839,9 +1903,32 @@
|
|
|
1839
1903
|
tokens.push(token);
|
|
1840
1904
|
continue;
|
|
1841
1905
|
} // text
|
|
1906
|
+
// prevent inlineText consuming extensions by clipping 'src' to extension start
|
|
1907
|
+
|
|
1908
|
+
|
|
1909
|
+
cutSrc = src;
|
|
1910
|
+
|
|
1911
|
+
if ((_this$options$extensi3 = this.options.extensions) != null && _this$options$extensi3.startInline) {
|
|
1912
|
+
(function () {
|
|
1913
|
+
var startIndex = Infinity;
|
|
1914
|
+
var tempSrc = src.slice(1);
|
|
1915
|
+
var tempStart = void 0;
|
|
1842
1916
|
|
|
1917
|
+
_this2.options.extensions.startInline.forEach(function (getStartIndex) {
|
|
1918
|
+
tempStart = getStartIndex.call(this, tempSrc);
|
|
1843
1919
|
|
|
1844
|
-
|
|
1920
|
+
if (typeof tempStart === 'number' && tempStart >= 0) {
|
|
1921
|
+
startIndex = Math.min(startIndex, tempStart);
|
|
1922
|
+
}
|
|
1923
|
+
});
|
|
1924
|
+
|
|
1925
|
+
if (startIndex < Infinity && startIndex >= 0) {
|
|
1926
|
+
cutSrc = src.substring(0, startIndex + 1);
|
|
1927
|
+
}
|
|
1928
|
+
})();
|
|
1929
|
+
}
|
|
1930
|
+
|
|
1931
|
+
if (token = this.tokenizer.inlineText(cutSrc, inRawBlock, smartypants)) {
|
|
1845
1932
|
src = src.substring(token.raw.length);
|
|
1846
1933
|
|
|
1847
1934
|
if (token.raw.slice(-1) !== '_') {
|
|
@@ -2217,11 +2304,23 @@
|
|
|
2217
2304
|
item,
|
|
2218
2305
|
checked,
|
|
2219
2306
|
task,
|
|
2220
|
-
checkbox
|
|
2307
|
+
checkbox,
|
|
2308
|
+
ret;
|
|
2221
2309
|
var l = tokens.length;
|
|
2222
2310
|
|
|
2223
2311
|
for (i = 0; i < l; i++) {
|
|
2224
|
-
|
|
2312
|
+
var _this$options$extensi, _this$options$extensi2;
|
|
2313
|
+
|
|
2314
|
+
token = tokens[i]; // Run any renderer extensions
|
|
2315
|
+
|
|
2316
|
+
if ((_this$options$extensi = this.options.extensions) != null && (_this$options$extensi2 = _this$options$extensi.renderers) != null && _this$options$extensi2[token.type]) {
|
|
2317
|
+
ret = this.options.extensions.renderers[token.type].call(this, token);
|
|
2318
|
+
|
|
2319
|
+
if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {
|
|
2320
|
+
out += ret || '';
|
|
2321
|
+
continue;
|
|
2322
|
+
}
|
|
2323
|
+
}
|
|
2225
2324
|
|
|
2226
2325
|
switch (token.type) {
|
|
2227
2326
|
case 'space':
|
|
@@ -2385,11 +2484,23 @@
|
|
|
2385
2484
|
renderer = renderer || this.renderer;
|
|
2386
2485
|
var out = '',
|
|
2387
2486
|
i,
|
|
2388
|
-
token
|
|
2487
|
+
token,
|
|
2488
|
+
ret;
|
|
2389
2489
|
var l = tokens.length;
|
|
2390
2490
|
|
|
2391
2491
|
for (i = 0; i < l; i++) {
|
|
2392
|
-
|
|
2492
|
+
var _this$options$extensi3, _this$options$extensi4;
|
|
2493
|
+
|
|
2494
|
+
token = tokens[i]; // Run any renderer extensions
|
|
2495
|
+
|
|
2496
|
+
if ((_this$options$extensi3 = this.options.extensions) != null && (_this$options$extensi4 = _this$options$extensi3.renderers) != null && _this$options$extensi4[token.type]) {
|
|
2497
|
+
ret = this.options.extensions.renderers[token.type].call(this, token);
|
|
2498
|
+
|
|
2499
|
+
if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {
|
|
2500
|
+
out += ret || '';
|
|
2501
|
+
continue;
|
|
2502
|
+
}
|
|
2503
|
+
}
|
|
2393
2504
|
|
|
2394
2505
|
switch (token.type) {
|
|
2395
2506
|
case 'escape':
|
|
@@ -2521,6 +2632,10 @@
|
|
|
2521
2632
|
|
|
2522
2633
|
if (!err) {
|
|
2523
2634
|
try {
|
|
2635
|
+
if (opt.walkTokens) {
|
|
2636
|
+
marked.walkTokens(tokens, opt.walkTokens);
|
|
2637
|
+
}
|
|
2638
|
+
|
|
2524
2639
|
out = Parser.parse(tokens, opt);
|
|
2525
2640
|
} catch (e) {
|
|
2526
2641
|
err = e;
|
|
@@ -2604,82 +2719,171 @@
|
|
|
2604
2719
|
* Use Extension
|
|
2605
2720
|
*/
|
|
2606
2721
|
|
|
2607
|
-
marked.use = function (
|
|
2608
|
-
var
|
|
2722
|
+
marked.use = function () {
|
|
2723
|
+
var _this = this;
|
|
2724
|
+
|
|
2725
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
2726
|
+
args[_key] = arguments[_key];
|
|
2727
|
+
}
|
|
2728
|
+
|
|
2729
|
+
var opts = merge.apply(void 0, [{}].concat(args));
|
|
2730
|
+
var extensions = marked.defaults.extensions || {
|
|
2731
|
+
renderers: {},
|
|
2732
|
+
childTokens: {}
|
|
2733
|
+
};
|
|
2734
|
+
var hasExtensions;
|
|
2735
|
+
args.forEach(function (pack) {
|
|
2736
|
+
// ==-- Parse "addon" extensions --== //
|
|
2737
|
+
if (pack.extensions) {
|
|
2738
|
+
hasExtensions = true;
|
|
2739
|
+
pack.extensions.forEach(function (ext) {
|
|
2740
|
+
if (!ext.name) {
|
|
2741
|
+
throw new Error('extension name required');
|
|
2742
|
+
}
|
|
2743
|
+
|
|
2744
|
+
if (ext.renderer) {
|
|
2745
|
+
var _extensions$renderers;
|
|
2609
2746
|
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2747
|
+
// Renderer extensions
|
|
2748
|
+
var prevRenderer = (_extensions$renderers = extensions.renderers) == null ? void 0 : _extensions$renderers[ext.name];
|
|
2749
|
+
|
|
2750
|
+
if (prevRenderer) {
|
|
2751
|
+
// Replace extension with func to run new extension but fall back if false
|
|
2752
|
+
extensions.renderers[ext.name] = function () {
|
|
2753
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
2754
|
+
args[_key2] = arguments[_key2];
|
|
2755
|
+
}
|
|
2613
2756
|
|
|
2614
|
-
|
|
2615
|
-
var prevRenderer = renderer[prop];
|
|
2757
|
+
var ret = ext.renderer.apply(this, args);
|
|
2616
2758
|
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2759
|
+
if (ret === false) {
|
|
2760
|
+
ret = prevRenderer.apply(this, args);
|
|
2761
|
+
}
|
|
2762
|
+
|
|
2763
|
+
return ret;
|
|
2764
|
+
};
|
|
2765
|
+
} else {
|
|
2766
|
+
extensions.renderers[ext.name] = ext.renderer;
|
|
2620
2767
|
}
|
|
2768
|
+
}
|
|
2621
2769
|
|
|
2622
|
-
|
|
2770
|
+
if (ext.tokenizer) {
|
|
2771
|
+
// Tokenizer Extensions
|
|
2772
|
+
if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
|
|
2773
|
+
throw new Error("extension level must be 'block' or 'inline'");
|
|
2774
|
+
}
|
|
2623
2775
|
|
|
2624
|
-
if (
|
|
2625
|
-
|
|
2776
|
+
if (extensions[ext.level]) {
|
|
2777
|
+
extensions[ext.level].unshift(ext.tokenizer);
|
|
2778
|
+
} else {
|
|
2779
|
+
extensions[ext.level] = [ext.tokenizer];
|
|
2626
2780
|
}
|
|
2627
2781
|
|
|
2628
|
-
|
|
2782
|
+
if (ext.start) {
|
|
2783
|
+
// Function to check for start of token
|
|
2784
|
+
if (ext.level === 'block') {
|
|
2785
|
+
if (extensions.startBlock) {
|
|
2786
|
+
extensions.startBlock.push(ext.start);
|
|
2787
|
+
} else {
|
|
2788
|
+
extensions.startBlock = [ext.start];
|
|
2789
|
+
}
|
|
2790
|
+
} else if (ext.level === 'inline') {
|
|
2791
|
+
if (extensions.startInline) {
|
|
2792
|
+
extensions.startInline.push(ext.start);
|
|
2793
|
+
} else {
|
|
2794
|
+
extensions.startInline = [ext.start];
|
|
2795
|
+
}
|
|
2796
|
+
}
|
|
2797
|
+
}
|
|
2798
|
+
}
|
|
2799
|
+
|
|
2800
|
+
if (ext.childTokens) {
|
|
2801
|
+
// Child tokens to be visited by walkTokens
|
|
2802
|
+
extensions.childTokens[ext.name] = ext.childTokens;
|
|
2803
|
+
}
|
|
2804
|
+
});
|
|
2805
|
+
} // ==-- Parse "overwrite" extensions --== //
|
|
2806
|
+
|
|
2807
|
+
|
|
2808
|
+
if (pack.renderer) {
|
|
2809
|
+
(function () {
|
|
2810
|
+
var renderer = marked.defaults.renderer || new Renderer();
|
|
2811
|
+
|
|
2812
|
+
var _loop = function _loop(prop) {
|
|
2813
|
+
var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false
|
|
2814
|
+
|
|
2815
|
+
renderer[prop] = function () {
|
|
2816
|
+
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
2817
|
+
args[_key3] = arguments[_key3];
|
|
2818
|
+
}
|
|
2819
|
+
|
|
2820
|
+
var ret = pack.renderer[prop].apply(renderer, args);
|
|
2821
|
+
|
|
2822
|
+
if (ret === false) {
|
|
2823
|
+
ret = prevRenderer.apply(renderer, args);
|
|
2824
|
+
}
|
|
2825
|
+
|
|
2826
|
+
return ret;
|
|
2827
|
+
};
|
|
2629
2828
|
};
|
|
2630
|
-
};
|
|
2631
2829
|
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2830
|
+
for (var prop in pack.renderer) {
|
|
2831
|
+
_loop(prop);
|
|
2832
|
+
}
|
|
2635
2833
|
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2834
|
+
opts.renderer = renderer;
|
|
2835
|
+
})();
|
|
2836
|
+
}
|
|
2639
2837
|
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2838
|
+
if (pack.tokenizer) {
|
|
2839
|
+
(function () {
|
|
2840
|
+
var tokenizer = marked.defaults.tokenizer || new Tokenizer();
|
|
2643
2841
|
|
|
2644
|
-
|
|
2645
|
-
|
|
2842
|
+
var _loop2 = function _loop2(prop) {
|
|
2843
|
+
var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false
|
|
2646
2844
|
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2845
|
+
tokenizer[prop] = function () {
|
|
2846
|
+
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
2847
|
+
args[_key4] = arguments[_key4];
|
|
2848
|
+
}
|
|
2651
2849
|
|
|
2652
|
-
|
|
2850
|
+
var ret = pack.tokenizer[prop].apply(tokenizer, args);
|
|
2653
2851
|
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2852
|
+
if (ret === false) {
|
|
2853
|
+
ret = prevTokenizer.apply(tokenizer, args);
|
|
2854
|
+
}
|
|
2657
2855
|
|
|
2658
|
-
|
|
2856
|
+
return ret;
|
|
2857
|
+
};
|
|
2659
2858
|
};
|
|
2660
|
-
};
|
|
2661
2859
|
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2860
|
+
for (var prop in pack.tokenizer) {
|
|
2861
|
+
_loop2(prop);
|
|
2862
|
+
}
|
|
2665
2863
|
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2864
|
+
opts.tokenizer = tokenizer;
|
|
2865
|
+
})();
|
|
2866
|
+
} // ==-- Parse WalkTokens extensions --== //
|
|
2669
2867
|
|
|
2670
|
-
if (extension.walkTokens) {
|
|
2671
|
-
var walkTokens = marked.defaults.walkTokens;
|
|
2672
2868
|
|
|
2673
|
-
|
|
2674
|
-
|
|
2869
|
+
if (pack.walkTokens) {
|
|
2870
|
+
var walkTokens = marked.defaults.walkTokens;
|
|
2675
2871
|
|
|
2676
|
-
|
|
2677
|
-
walkTokens(token);
|
|
2678
|
-
}
|
|
2679
|
-
};
|
|
2680
|
-
}
|
|
2872
|
+
opts.walkTokens = function (token) {
|
|
2873
|
+
pack.walkTokens.call(_this, token);
|
|
2681
2874
|
|
|
2682
|
-
|
|
2875
|
+
if (walkTokens) {
|
|
2876
|
+
walkTokens(token);
|
|
2877
|
+
}
|
|
2878
|
+
};
|
|
2879
|
+
}
|
|
2880
|
+
|
|
2881
|
+
if (hasExtensions) {
|
|
2882
|
+
opts.extensions = extensions;
|
|
2883
|
+
}
|
|
2884
|
+
|
|
2885
|
+
marked.setOptions(opts);
|
|
2886
|
+
});
|
|
2683
2887
|
};
|
|
2684
2888
|
/**
|
|
2685
2889
|
* Run callback for every token
|
|
@@ -2687,7 +2891,7 @@
|
|
|
2687
2891
|
|
|
2688
2892
|
|
|
2689
2893
|
marked.walkTokens = function (tokens, callback) {
|
|
2690
|
-
|
|
2894
|
+
var _loop3 = function _loop3() {
|
|
2691
2895
|
var token = _step.value;
|
|
2692
2896
|
callback(token);
|
|
2693
2897
|
|
|
@@ -2719,11 +2923,26 @@
|
|
|
2719
2923
|
|
|
2720
2924
|
default:
|
|
2721
2925
|
{
|
|
2722
|
-
|
|
2926
|
+
var _marked$defaults, _marked$defaults$exte, _marked$defaults$exte2, _marked$defaults3, _marked$defaults3$ext;
|
|
2927
|
+
|
|
2928
|
+
if ((_marked$defaults = marked.defaults) != null && (_marked$defaults$exte = _marked$defaults.extensions) != null && (_marked$defaults$exte2 = _marked$defaults$exte.childTokens) != null && _marked$defaults$exte2[token.type]) {
|
|
2929
|
+
var _marked$defaults2;
|
|
2930
|
+
|
|
2931
|
+
// Walk any extensions
|
|
2932
|
+
(_marked$defaults2 = marked.defaults) == null ? void 0 : _marked$defaults2.extensions.childTokens[token.type].forEach(function (childTokens) {
|
|
2933
|
+
marked.walkTokens(token[childTokens], callback);
|
|
2934
|
+
});
|
|
2935
|
+
}
|
|
2936
|
+
|
|
2937
|
+
if (token.tokens && !((_marked$defaults3 = marked.defaults) != null && (_marked$defaults3$ext = _marked$defaults3.extensions) != null && _marked$defaults3$ext.childTokens[token.type])) {
|
|
2723
2938
|
marked.walkTokens(token.tokens, callback);
|
|
2724
2939
|
}
|
|
2725
2940
|
}
|
|
2726
2941
|
}
|
|
2942
|
+
};
|
|
2943
|
+
|
|
2944
|
+
for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
|
|
2945
|
+
_loop3();
|
|
2727
2946
|
}
|
|
2728
2947
|
};
|
|
2729
2948
|
/**
|