marked 2.0.5 → 2.1.1
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 +223 -64
- package/lib/marked.js +293 -94
- package/marked.min.js +1 -1
- package/package.json +14 -14
- package/src/Lexer.js +69 -7
- package/src/Parser.js +25 -2
- package/src/Tokenizer.js +15 -14
- package/src/defaults.js +1 -0
- package/src/marked.js +108 -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,22 @@
|
|
|
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
|
+
if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {
|
|
1480
|
+
if (token = extTokenizer.call(_this, src, tokens)) {
|
|
1481
|
+
src = src.substring(token.raw.length);
|
|
1482
|
+
tokens.push(token);
|
|
1483
|
+
return true;
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
return false;
|
|
1487
|
+
})) {
|
|
1488
|
+
continue;
|
|
1489
|
+
} // newline
|
|
1490
|
+
|
|
1491
|
+
|
|
1479
1492
|
if (token = this.tokenizer.space(src)) {
|
|
1480
1493
|
src = src.substring(token.raw.length);
|
|
1481
1494
|
|
|
@@ -1584,11 +1597,43 @@
|
|
|
1584
1597
|
tokens.push(token);
|
|
1585
1598
|
continue;
|
|
1586
1599
|
} // top-level paragraph
|
|
1600
|
+
// prevent paragraph consuming extensions by clipping 'src' to extension start
|
|
1601
|
+
|
|
1602
|
+
|
|
1603
|
+
cutSrc = src;
|
|
1604
|
+
|
|
1605
|
+
if (this.options.extensions && this.options.extensions.startBlock) {
|
|
1606
|
+
(function () {
|
|
1607
|
+
var startIndex = Infinity;
|
|
1608
|
+
var tempSrc = src.slice(1);
|
|
1609
|
+
var tempStart = void 0;
|
|
1610
|
+
|
|
1611
|
+
_this.options.extensions.startBlock.forEach(function (getStartIndex) {
|
|
1612
|
+
tempStart = getStartIndex.call(this, tempSrc);
|
|
1613
|
+
|
|
1614
|
+
if (typeof tempStart === 'number' && tempStart >= 0) {
|
|
1615
|
+
startIndex = Math.min(startIndex, tempStart);
|
|
1616
|
+
}
|
|
1617
|
+
});
|
|
1587
1618
|
|
|
1619
|
+
if (startIndex < Infinity && startIndex >= 0) {
|
|
1620
|
+
cutSrc = src.substring(0, startIndex + 1);
|
|
1621
|
+
}
|
|
1622
|
+
})();
|
|
1623
|
+
}
|
|
1624
|
+
|
|
1625
|
+
if (top && (token = this.tokenizer.paragraph(cutSrc))) {
|
|
1626
|
+
lastToken = tokens[tokens.length - 1];
|
|
1627
|
+
|
|
1628
|
+
if (lastParagraphClipped && lastToken.type === 'paragraph') {
|
|
1629
|
+
lastToken.raw += '\n' + token.raw;
|
|
1630
|
+
lastToken.text += '\n' + token.text;
|
|
1631
|
+
} else {
|
|
1632
|
+
tokens.push(token);
|
|
1633
|
+
}
|
|
1588
1634
|
|
|
1589
|
-
|
|
1635
|
+
lastParagraphClipped = cutSrc.length !== src.length;
|
|
1590
1636
|
src = src.substring(token.raw.length);
|
|
1591
|
-
tokens.push(token);
|
|
1592
1637
|
continue;
|
|
1593
1638
|
} // text
|
|
1594
1639
|
|
|
@@ -1696,6 +1741,8 @@
|
|
|
1696
1741
|
;
|
|
1697
1742
|
|
|
1698
1743
|
_proto.inlineTokens = function inlineTokens(src, tokens, inLink, inRawBlock) {
|
|
1744
|
+
var _this2 = this;
|
|
1745
|
+
|
|
1699
1746
|
if (tokens === void 0) {
|
|
1700
1747
|
tokens = [];
|
|
1701
1748
|
}
|
|
@@ -1708,7 +1755,7 @@
|
|
|
1708
1755
|
inRawBlock = false;
|
|
1709
1756
|
}
|
|
1710
1757
|
|
|
1711
|
-
var token, lastToken; // String with links masked to avoid interference with em and strong
|
|
1758
|
+
var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong
|
|
1712
1759
|
|
|
1713
1760
|
var maskedSrc = src;
|
|
1714
1761
|
var match;
|
|
@@ -1741,7 +1788,20 @@
|
|
|
1741
1788
|
prevChar = '';
|
|
1742
1789
|
}
|
|
1743
1790
|
|
|
1744
|
-
keepPrevChar = false; //
|
|
1791
|
+
keepPrevChar = false; // extensions
|
|
1792
|
+
|
|
1793
|
+
if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {
|
|
1794
|
+
if (token = extTokenizer.call(_this2, src, tokens)) {
|
|
1795
|
+
src = src.substring(token.raw.length);
|
|
1796
|
+
tokens.push(token);
|
|
1797
|
+
return true;
|
|
1798
|
+
}
|
|
1799
|
+
|
|
1800
|
+
return false;
|
|
1801
|
+
})) {
|
|
1802
|
+
continue;
|
|
1803
|
+
} // escape
|
|
1804
|
+
|
|
1745
1805
|
|
|
1746
1806
|
if (token = this.tokenizer.escape(src)) {
|
|
1747
1807
|
src = src.substring(token.raw.length);
|
|
@@ -1754,11 +1814,11 @@
|
|
|
1754
1814
|
src = src.substring(token.raw.length);
|
|
1755
1815
|
inLink = token.inLink;
|
|
1756
1816
|
inRawBlock = token.inRawBlock;
|
|
1757
|
-
|
|
1817
|
+
lastToken = tokens[tokens.length - 1];
|
|
1758
1818
|
|
|
1759
|
-
if (
|
|
1760
|
-
|
|
1761
|
-
|
|
1819
|
+
if (lastToken && token.type === 'text' && lastToken.type === 'text') {
|
|
1820
|
+
lastToken.raw += token.raw;
|
|
1821
|
+
lastToken.text += token.text;
|
|
1762
1822
|
} else {
|
|
1763
1823
|
tokens.push(token);
|
|
1764
1824
|
}
|
|
@@ -1781,14 +1841,14 @@
|
|
|
1781
1841
|
|
|
1782
1842
|
if (token = this.tokenizer.reflink(src, this.tokens.links)) {
|
|
1783
1843
|
src = src.substring(token.raw.length);
|
|
1784
|
-
|
|
1844
|
+
lastToken = tokens[tokens.length - 1];
|
|
1785
1845
|
|
|
1786
1846
|
if (token.type === 'link') {
|
|
1787
1847
|
token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);
|
|
1788
1848
|
tokens.push(token);
|
|
1789
|
-
} else if (
|
|
1790
|
-
|
|
1791
|
-
|
|
1849
|
+
} else if (lastToken && token.type === 'text' && lastToken.type === 'text') {
|
|
1850
|
+
lastToken.raw += token.raw;
|
|
1851
|
+
lastToken.text += token.text;
|
|
1792
1852
|
} else {
|
|
1793
1853
|
tokens.push(token);
|
|
1794
1854
|
}
|
|
@@ -1839,9 +1899,32 @@
|
|
|
1839
1899
|
tokens.push(token);
|
|
1840
1900
|
continue;
|
|
1841
1901
|
} // text
|
|
1902
|
+
// prevent inlineText consuming extensions by clipping 'src' to extension start
|
|
1842
1903
|
|
|
1843
1904
|
|
|
1844
|
-
|
|
1905
|
+
cutSrc = src;
|
|
1906
|
+
|
|
1907
|
+
if (this.options.extensions && this.options.extensions.startInline) {
|
|
1908
|
+
(function () {
|
|
1909
|
+
var startIndex = Infinity;
|
|
1910
|
+
var tempSrc = src.slice(1);
|
|
1911
|
+
var tempStart = void 0;
|
|
1912
|
+
|
|
1913
|
+
_this2.options.extensions.startInline.forEach(function (getStartIndex) {
|
|
1914
|
+
tempStart = getStartIndex.call(this, tempSrc);
|
|
1915
|
+
|
|
1916
|
+
if (typeof tempStart === 'number' && tempStart >= 0) {
|
|
1917
|
+
startIndex = Math.min(startIndex, tempStart);
|
|
1918
|
+
}
|
|
1919
|
+
});
|
|
1920
|
+
|
|
1921
|
+
if (startIndex < Infinity && startIndex >= 0) {
|
|
1922
|
+
cutSrc = src.substring(0, startIndex + 1);
|
|
1923
|
+
}
|
|
1924
|
+
})();
|
|
1925
|
+
}
|
|
1926
|
+
|
|
1927
|
+
if (token = this.tokenizer.inlineText(cutSrc, inRawBlock, smartypants)) {
|
|
1845
1928
|
src = src.substring(token.raw.length);
|
|
1846
1929
|
|
|
1847
1930
|
if (token.raw.slice(-1) !== '_') {
|
|
@@ -2217,11 +2300,21 @@
|
|
|
2217
2300
|
item,
|
|
2218
2301
|
checked,
|
|
2219
2302
|
task,
|
|
2220
|
-
checkbox
|
|
2303
|
+
checkbox,
|
|
2304
|
+
ret;
|
|
2221
2305
|
var l = tokens.length;
|
|
2222
2306
|
|
|
2223
2307
|
for (i = 0; i < l; i++) {
|
|
2224
|
-
token = tokens[i];
|
|
2308
|
+
token = tokens[i]; // Run any renderer extensions
|
|
2309
|
+
|
|
2310
|
+
if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
|
|
2311
|
+
ret = this.options.extensions.renderers[token.type].call(this, token);
|
|
2312
|
+
|
|
2313
|
+
if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {
|
|
2314
|
+
out += ret || '';
|
|
2315
|
+
continue;
|
|
2316
|
+
}
|
|
2317
|
+
}
|
|
2225
2318
|
|
|
2226
2319
|
switch (token.type) {
|
|
2227
2320
|
case 'space':
|
|
@@ -2385,11 +2478,21 @@
|
|
|
2385
2478
|
renderer = renderer || this.renderer;
|
|
2386
2479
|
var out = '',
|
|
2387
2480
|
i,
|
|
2388
|
-
token
|
|
2481
|
+
token,
|
|
2482
|
+
ret;
|
|
2389
2483
|
var l = tokens.length;
|
|
2390
2484
|
|
|
2391
2485
|
for (i = 0; i < l; i++) {
|
|
2392
|
-
token = tokens[i];
|
|
2486
|
+
token = tokens[i]; // Run any renderer extensions
|
|
2487
|
+
|
|
2488
|
+
if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
|
|
2489
|
+
ret = this.options.extensions.renderers[token.type].call(this, token);
|
|
2490
|
+
|
|
2491
|
+
if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {
|
|
2492
|
+
out += ret || '';
|
|
2493
|
+
continue;
|
|
2494
|
+
}
|
|
2495
|
+
}
|
|
2393
2496
|
|
|
2394
2497
|
switch (token.type) {
|
|
2395
2498
|
case 'escape':
|
|
@@ -2608,82 +2711,169 @@
|
|
|
2608
2711
|
* Use Extension
|
|
2609
2712
|
*/
|
|
2610
2713
|
|
|
2611
|
-
marked.use = function (
|
|
2612
|
-
var
|
|
2714
|
+
marked.use = function () {
|
|
2715
|
+
var _this = this;
|
|
2716
|
+
|
|
2717
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
2718
|
+
args[_key] = arguments[_key];
|
|
2719
|
+
}
|
|
2720
|
+
|
|
2721
|
+
var opts = merge.apply(void 0, [{}].concat(args));
|
|
2722
|
+
var extensions = marked.defaults.extensions || {
|
|
2723
|
+
renderers: {},
|
|
2724
|
+
childTokens: {}
|
|
2725
|
+
};
|
|
2726
|
+
var hasExtensions;
|
|
2727
|
+
args.forEach(function (pack) {
|
|
2728
|
+
// ==-- Parse "addon" extensions --== //
|
|
2729
|
+
if (pack.extensions) {
|
|
2730
|
+
hasExtensions = true;
|
|
2731
|
+
pack.extensions.forEach(function (ext) {
|
|
2732
|
+
if (!ext.name) {
|
|
2733
|
+
throw new Error('extension name required');
|
|
2734
|
+
}
|
|
2735
|
+
|
|
2736
|
+
if (ext.renderer) {
|
|
2737
|
+
// Renderer extensions
|
|
2738
|
+
var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;
|
|
2613
2739
|
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2740
|
+
if (prevRenderer) {
|
|
2741
|
+
// Replace extension with func to run new extension but fall back if false
|
|
2742
|
+
extensions.renderers[ext.name] = function () {
|
|
2743
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
2744
|
+
args[_key2] = arguments[_key2];
|
|
2745
|
+
}
|
|
2746
|
+
|
|
2747
|
+
var ret = ext.renderer.apply(this, args);
|
|
2748
|
+
|
|
2749
|
+
if (ret === false) {
|
|
2750
|
+
ret = prevRenderer.apply(this, args);
|
|
2751
|
+
}
|
|
2617
2752
|
|
|
2618
|
-
|
|
2619
|
-
|
|
2753
|
+
return ret;
|
|
2754
|
+
};
|
|
2755
|
+
} else {
|
|
2756
|
+
extensions.renderers[ext.name] = ext.renderer;
|
|
2757
|
+
}
|
|
2758
|
+
}
|
|
2620
2759
|
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2760
|
+
if (ext.tokenizer) {
|
|
2761
|
+
// Tokenizer Extensions
|
|
2762
|
+
if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
|
|
2763
|
+
throw new Error("extension level must be 'block' or 'inline'");
|
|
2624
2764
|
}
|
|
2625
2765
|
|
|
2626
|
-
|
|
2766
|
+
if (extensions[ext.level]) {
|
|
2767
|
+
extensions[ext.level].unshift(ext.tokenizer);
|
|
2768
|
+
} else {
|
|
2769
|
+
extensions[ext.level] = [ext.tokenizer];
|
|
2770
|
+
}
|
|
2627
2771
|
|
|
2628
|
-
if (
|
|
2629
|
-
|
|
2772
|
+
if (ext.start) {
|
|
2773
|
+
// Function to check for start of token
|
|
2774
|
+
if (ext.level === 'block') {
|
|
2775
|
+
if (extensions.startBlock) {
|
|
2776
|
+
extensions.startBlock.push(ext.start);
|
|
2777
|
+
} else {
|
|
2778
|
+
extensions.startBlock = [ext.start];
|
|
2779
|
+
}
|
|
2780
|
+
} else if (ext.level === 'inline') {
|
|
2781
|
+
if (extensions.startInline) {
|
|
2782
|
+
extensions.startInline.push(ext.start);
|
|
2783
|
+
} else {
|
|
2784
|
+
extensions.startInline = [ext.start];
|
|
2785
|
+
}
|
|
2786
|
+
}
|
|
2630
2787
|
}
|
|
2788
|
+
}
|
|
2789
|
+
|
|
2790
|
+
if (ext.childTokens) {
|
|
2791
|
+
// Child tokens to be visited by walkTokens
|
|
2792
|
+
extensions.childTokens[ext.name] = ext.childTokens;
|
|
2793
|
+
}
|
|
2794
|
+
});
|
|
2795
|
+
} // ==-- Parse "overwrite" extensions --== //
|
|
2796
|
+
|
|
2797
|
+
|
|
2798
|
+
if (pack.renderer) {
|
|
2799
|
+
(function () {
|
|
2800
|
+
var renderer = marked.defaults.renderer || new Renderer();
|
|
2801
|
+
|
|
2802
|
+
var _loop = function _loop(prop) {
|
|
2803
|
+
var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false
|
|
2804
|
+
|
|
2805
|
+
renderer[prop] = function () {
|
|
2806
|
+
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
2807
|
+
args[_key3] = arguments[_key3];
|
|
2808
|
+
}
|
|
2631
2809
|
|
|
2632
|
-
|
|
2810
|
+
var ret = pack.renderer[prop].apply(renderer, args);
|
|
2811
|
+
|
|
2812
|
+
if (ret === false) {
|
|
2813
|
+
ret = prevRenderer.apply(renderer, args);
|
|
2814
|
+
}
|
|
2815
|
+
|
|
2816
|
+
return ret;
|
|
2817
|
+
};
|
|
2633
2818
|
};
|
|
2634
|
-
};
|
|
2635
2819
|
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2820
|
+
for (var prop in pack.renderer) {
|
|
2821
|
+
_loop(prop);
|
|
2822
|
+
}
|
|
2639
2823
|
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2824
|
+
opts.renderer = renderer;
|
|
2825
|
+
})();
|
|
2826
|
+
}
|
|
2643
2827
|
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2828
|
+
if (pack.tokenizer) {
|
|
2829
|
+
(function () {
|
|
2830
|
+
var tokenizer = marked.defaults.tokenizer || new Tokenizer();
|
|
2647
2831
|
|
|
2648
|
-
|
|
2649
|
-
|
|
2832
|
+
var _loop2 = function _loop2(prop) {
|
|
2833
|
+
var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false
|
|
2650
2834
|
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2835
|
+
tokenizer[prop] = function () {
|
|
2836
|
+
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
|
2837
|
+
args[_key4] = arguments[_key4];
|
|
2838
|
+
}
|
|
2655
2839
|
|
|
2656
|
-
|
|
2840
|
+
var ret = pack.tokenizer[prop].apply(tokenizer, args);
|
|
2657
2841
|
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2842
|
+
if (ret === false) {
|
|
2843
|
+
ret = prevTokenizer.apply(tokenizer, args);
|
|
2844
|
+
}
|
|
2661
2845
|
|
|
2662
|
-
|
|
2846
|
+
return ret;
|
|
2847
|
+
};
|
|
2663
2848
|
};
|
|
2664
|
-
};
|
|
2665
2849
|
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2850
|
+
for (var prop in pack.tokenizer) {
|
|
2851
|
+
_loop2(prop);
|
|
2852
|
+
}
|
|
2669
2853
|
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2854
|
+
opts.tokenizer = tokenizer;
|
|
2855
|
+
})();
|
|
2856
|
+
} // ==-- Parse WalkTokens extensions --== //
|
|
2673
2857
|
|
|
2674
|
-
if (extension.walkTokens) {
|
|
2675
|
-
var walkTokens = marked.defaults.walkTokens;
|
|
2676
2858
|
|
|
2677
|
-
|
|
2678
|
-
|
|
2859
|
+
if (pack.walkTokens) {
|
|
2860
|
+
var walkTokens = marked.defaults.walkTokens;
|
|
2679
2861
|
|
|
2680
|
-
|
|
2681
|
-
walkTokens(token);
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2862
|
+
opts.walkTokens = function (token) {
|
|
2863
|
+
pack.walkTokens.call(_this, token);
|
|
2864
|
+
|
|
2865
|
+
if (walkTokens) {
|
|
2866
|
+
walkTokens(token);
|
|
2867
|
+
}
|
|
2868
|
+
};
|
|
2869
|
+
}
|
|
2870
|
+
|
|
2871
|
+
if (hasExtensions) {
|
|
2872
|
+
opts.extensions = extensions;
|
|
2873
|
+
}
|
|
2685
2874
|
|
|
2686
|
-
|
|
2875
|
+
marked.setOptions(opts);
|
|
2876
|
+
});
|
|
2687
2877
|
};
|
|
2688
2878
|
/**
|
|
2689
2879
|
* Run callback for every token
|
|
@@ -2691,7 +2881,7 @@
|
|
|
2691
2881
|
|
|
2692
2882
|
|
|
2693
2883
|
marked.walkTokens = function (tokens, callback) {
|
|
2694
|
-
|
|
2884
|
+
var _loop3 = function _loop3() {
|
|
2695
2885
|
var token = _step.value;
|
|
2696
2886
|
callback(token);
|
|
2697
2887
|
|
|
@@ -2723,11 +2913,20 @@
|
|
|
2723
2913
|
|
|
2724
2914
|
default:
|
|
2725
2915
|
{
|
|
2726
|
-
if (token.
|
|
2916
|
+
if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {
|
|
2917
|
+
// Walk any extensions
|
|
2918
|
+
marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {
|
|
2919
|
+
marked.walkTokens(token[childTokens], callback);
|
|
2920
|
+
});
|
|
2921
|
+
} else if (token.tokens) {
|
|
2727
2922
|
marked.walkTokens(token.tokens, callback);
|
|
2728
2923
|
}
|
|
2729
2924
|
}
|
|
2730
2925
|
}
|
|
2926
|
+
};
|
|
2927
|
+
|
|
2928
|
+
for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
|
|
2929
|
+
_loop3();
|
|
2731
2930
|
}
|
|
2732
2931
|
};
|
|
2733
2932
|
/**
|