marked 5.0.5 → 5.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.umd.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * marked v5.0.5 - a markdown parser
2
+ * marked v5.1.1 - a markdown parser
3
3
  * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)
4
4
  * https://github.com/markedjs/marked
5
5
  */
@@ -91,6 +91,16 @@
91
91
  var key = _toPrimitive(arg, "string");
92
92
  return typeof key === "symbol" ? key : String(key);
93
93
  }
94
+ var id = 0;
95
+ function _classPrivateFieldLooseKey(name) {
96
+ return "__private_" + id++ + "_" + name;
97
+ }
98
+ function _classPrivateFieldLooseBase(receiver, privateKey) {
99
+ if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
100
+ throw new TypeError("attempted to use private field on non-instance");
101
+ }
102
+ return receiver;
103
+ }
94
104
 
95
105
  function getDefaults() {
96
106
  return {
@@ -931,7 +941,7 @@
931
941
  // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
932
942
  if (match[3] && prevChar.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])/)) return;
933
943
  var nextChar = match[1] || match[2] || '';
934
- if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
944
+ if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {
935
945
  var lLength = match[0].length - 1;
936
946
  var rDelim,
937
947
  rLength,
@@ -1205,35 +1215,34 @@
1205
1215
  nolink: /^!?\[(ref)\](?:\[\])?/,
1206
1216
  reflinkSearch: 'reflink|nolink(?!\\()',
1207
1217
  emStrong: {
1208
- lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
1209
- // (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.
1210
- // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
1211
- rDelimAst: /^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[^*]+(?=[^*])|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,
1212
- rDelimUnd: /^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/ // ^- Not allowed for _
1218
+ lDelim: /^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,
1219
+ // (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.
1220
+ // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a
1221
+ rDelimAst: /^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,
1222
+ rDelimUnd: /^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _
1213
1223
  },
1214
1224
 
1215
1225
  code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
1216
1226
  br: /^( {2,}|\\)\n(?!\s*$)/,
1217
1227
  del: noopTest,
1218
1228
  text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,
1219
- punctuation: /^([\spunctuation])/
1229
+ punctuation: /^((?![*_])[\spunctuation])/
1220
1230
  };
1221
1231
 
1222
- // list of punctuation marks from CommonMark spec
1223
- // without * and _ to handle the different emphasis markers * and _
1224
- inline._uc_punctuation = "\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65";
1225
- inline._punctuation = '!"#$%&\'()+\\-.,/:;<=>?@\\[\\]`^{|}~\\\\' + inline._uc_punctuation;
1226
- inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();
1232
+ // list of unicode punctuation marks, plus any missing characters from CommonMark spec
1233
+ inline._punctuation = '\\p{P}$+<=>`^|~';
1234
+ inline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();
1227
1235
 
1228
1236
  // sequences em should skip over [title](link), `code`, <html>
1229
1237
  inline.blockSkip = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g;
1230
- inline.escapedPunct = /\\[punct_*]/g;
1238
+ inline.anyPunctuation = /\\[punct]/g;
1239
+ inline._escapes = /\\([punct])/g;
1231
1240
  inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();
1232
- inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();
1233
- inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();
1234
- inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();
1235
- inline.escapedPunct = edit(inline.escapedPunct, 'g').replace(/punct/g, inline._punctuation).getRegex();
1236
- inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
1241
+ inline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u').replace(/punct/g, inline._punctuation).getRegex();
1242
+ inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1243
+ inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1244
+ inline.anyPunctuation = edit(inline.anyPunctuation, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1245
+ inline._escapes = edit(inline._escapes, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1237
1246
  inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
1238
1247
  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])?)+(?![-_])/;
1239
1248
  inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();
@@ -1646,8 +1655,8 @@
1646
1655
  }
1647
1656
 
1648
1657
  // Mask out escaped characters
1649
- while ((match = this.tokenizer.rules.inline.escapedPunct.exec(maskedSrc)) != null) {
1650
- maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedPunct.lastIndex);
1658
+ while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {
1659
+ maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);
1651
1660
  }
1652
1661
  var _loop2 = function _loop2() {
1653
1662
  if (!keepPrevChar) {
@@ -2392,39 +2401,263 @@
2392
2401
  }();
2393
2402
  Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);
2394
2403
 
2395
- function onError(silent, async, callback) {
2396
- return function (e) {
2397
- e.message += '\nPlease report this to https://github.com/markedjs/marked.';
2398
- if (silent) {
2399
- var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2400
- if (async) {
2401
- return Promise.resolve(msg);
2402
- }
2403
- if (callback) {
2404
- callback(null, msg);
2405
- return;
2404
+ var _parseMarkdown = /*#__PURE__*/_classPrivateFieldLooseKey("parseMarkdown");
2405
+ var _onError = /*#__PURE__*/_classPrivateFieldLooseKey("onError");
2406
+ var Marked = /*#__PURE__*/function () {
2407
+ function Marked() {
2408
+ Object.defineProperty(this, _onError, {
2409
+ value: _onError2
2410
+ });
2411
+ Object.defineProperty(this, _parseMarkdown, {
2412
+ value: _parseMarkdown2
2413
+ });
2414
+ this.defaults = getDefaults();
2415
+ this.options = this.setOptions;
2416
+ this.parse = _classPrivateFieldLooseBase(this, _parseMarkdown)[_parseMarkdown](Lexer.lex, Parser.parse);
2417
+ this.parseInline = _classPrivateFieldLooseBase(this, _parseMarkdown)[_parseMarkdown](Lexer.lexInline, Parser.parseInline);
2418
+ this.Parser = Parser;
2419
+ this.parser = Parser.parse;
2420
+ this.Renderer = Renderer;
2421
+ this.TextRenderer = TextRenderer;
2422
+ this.Lexer = Lexer;
2423
+ this.lexer = Lexer.lex;
2424
+ this.Tokenizer = Tokenizer;
2425
+ this.Slugger = Slugger;
2426
+ this.Hooks = Hooks;
2427
+ this.use.apply(this, arguments);
2428
+ }
2429
+ var _proto = Marked.prototype;
2430
+ _proto.walkTokens = function walkTokens(tokens, callback) {
2431
+ var _this = this;
2432
+ var values = [];
2433
+ var _loop = function _loop() {
2434
+ var token = _step.value;
2435
+ values = values.concat(callback.call(_this, token));
2436
+ switch (token.type) {
2437
+ case 'table':
2438
+ {
2439
+ for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {
2440
+ var cell = _step2.value;
2441
+ values = values.concat(_this.walkTokens(cell.tokens, callback));
2442
+ }
2443
+ for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {
2444
+ var row = _step3.value;
2445
+ for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {
2446
+ var _cell = _step4.value;
2447
+ values = values.concat(_this.walkTokens(_cell.tokens, callback));
2448
+ }
2449
+ }
2450
+ break;
2451
+ }
2452
+ case 'list':
2453
+ {
2454
+ values = values.concat(_this.walkTokens(token.items, callback));
2455
+ break;
2456
+ }
2457
+ default:
2458
+ {
2459
+ if (_this.defaults.extensions && _this.defaults.extensions.childTokens && _this.defaults.extensions.childTokens[token.type]) {
2460
+ // Walk any extensions
2461
+ _this.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {
2462
+ values = values.concat(_this.walkTokens(token[childTokens], callback));
2463
+ });
2464
+ } else if (token.tokens) {
2465
+ values = values.concat(_this.walkTokens(token.tokens, callback));
2466
+ }
2467
+ }
2406
2468
  }
2407
- return msg;
2408
- }
2409
- if (async) {
2410
- return Promise.reject(e);
2469
+ };
2470
+ for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
2471
+ _loop();
2411
2472
  }
2412
- if (callback) {
2413
- callback(e);
2414
- return;
2473
+ return values;
2474
+ };
2475
+ _proto.use = function use() {
2476
+ var _this2 = this;
2477
+ var extensions = this.defaults.extensions || {
2478
+ renderers: {},
2479
+ childTokens: {}
2480
+ };
2481
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2482
+ args[_key] = arguments[_key];
2415
2483
  }
2416
- throw e;
2484
+ args.forEach(function (pack) {
2485
+ // copy options to new object
2486
+ var opts = _extends({}, pack);
2487
+
2488
+ // set async to true if it was set to true before
2489
+ opts.async = _this2.defaults.async || opts.async || false;
2490
+
2491
+ // ==-- Parse "addon" extensions --== //
2492
+ if (pack.extensions) {
2493
+ pack.extensions.forEach(function (ext) {
2494
+ if (!ext.name) {
2495
+ throw new Error('extension name required');
2496
+ }
2497
+ if (ext.renderer) {
2498
+ // Renderer extensions
2499
+ var prevRenderer = extensions.renderers[ext.name];
2500
+ if (prevRenderer) {
2501
+ // Replace extension with func to run new extension but fall back if false
2502
+ extensions.renderers[ext.name] = function () {
2503
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2504
+ args[_key2] = arguments[_key2];
2505
+ }
2506
+ var ret = ext.renderer.apply(this, args);
2507
+ if (ret === false) {
2508
+ ret = prevRenderer.apply(this, args);
2509
+ }
2510
+ return ret;
2511
+ };
2512
+ } else {
2513
+ extensions.renderers[ext.name] = ext.renderer;
2514
+ }
2515
+ }
2516
+ if (ext.tokenizer) {
2517
+ // Tokenizer Extensions
2518
+ if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
2519
+ throw new Error("extension level must be 'block' or 'inline'");
2520
+ }
2521
+ if (extensions[ext.level]) {
2522
+ extensions[ext.level].unshift(ext.tokenizer);
2523
+ } else {
2524
+ extensions[ext.level] = [ext.tokenizer];
2525
+ }
2526
+ if (ext.start) {
2527
+ // Function to check for start of token
2528
+ if (ext.level === 'block') {
2529
+ if (extensions.startBlock) {
2530
+ extensions.startBlock.push(ext.start);
2531
+ } else {
2532
+ extensions.startBlock = [ext.start];
2533
+ }
2534
+ } else if (ext.level === 'inline') {
2535
+ if (extensions.startInline) {
2536
+ extensions.startInline.push(ext.start);
2537
+ } else {
2538
+ extensions.startInline = [ext.start];
2539
+ }
2540
+ }
2541
+ }
2542
+ }
2543
+ if (ext.childTokens) {
2544
+ // Child tokens to be visited by walkTokens
2545
+ extensions.childTokens[ext.name] = ext.childTokens;
2546
+ }
2547
+ });
2548
+ opts.extensions = extensions;
2549
+ }
2550
+
2551
+ // ==-- Parse "overwrite" extensions --== //
2552
+ if (pack.renderer) {
2553
+ var renderer = _this2.defaults.renderer || new Renderer(_this2.defaults);
2554
+ var _loop2 = function _loop2(prop) {
2555
+ var prevRenderer = renderer[prop];
2556
+ // Replace renderer with func to run extension, but fall back if false
2557
+ renderer[prop] = function () {
2558
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
2559
+ args[_key3] = arguments[_key3];
2560
+ }
2561
+ var ret = pack.renderer[prop].apply(renderer, args);
2562
+ if (ret === false) {
2563
+ ret = prevRenderer.apply(renderer, args);
2564
+ }
2565
+ return ret;
2566
+ };
2567
+ };
2568
+ for (var prop in pack.renderer) {
2569
+ _loop2(prop);
2570
+ }
2571
+ opts.renderer = renderer;
2572
+ }
2573
+ if (pack.tokenizer) {
2574
+ var tokenizer = _this2.defaults.tokenizer || new Tokenizer(_this2.defaults);
2575
+ var _loop3 = function _loop3(_prop) {
2576
+ var prevTokenizer = tokenizer[_prop];
2577
+ // Replace tokenizer with func to run extension, but fall back if false
2578
+ tokenizer[_prop] = function () {
2579
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2580
+ args[_key4] = arguments[_key4];
2581
+ }
2582
+ var ret = pack.tokenizer[_prop].apply(tokenizer, args);
2583
+ if (ret === false) {
2584
+ ret = prevTokenizer.apply(tokenizer, args);
2585
+ }
2586
+ return ret;
2587
+ };
2588
+ };
2589
+ for (var _prop in pack.tokenizer) {
2590
+ _loop3(_prop);
2591
+ }
2592
+ opts.tokenizer = tokenizer;
2593
+ }
2594
+
2595
+ // ==-- Parse Hooks extensions --== //
2596
+ if (pack.hooks) {
2597
+ var hooks = _this2.defaults.hooks || new Hooks();
2598
+ var _loop4 = function _loop4(_prop2) {
2599
+ var prevHook = hooks[_prop2];
2600
+ if (Hooks.passThroughHooks.has(_prop2)) {
2601
+ hooks[_prop2] = function (arg) {
2602
+ if (_this2.defaults.async) {
2603
+ return Promise.resolve(pack.hooks[_prop2].call(hooks, arg)).then(function (ret) {
2604
+ return prevHook.call(hooks, ret);
2605
+ });
2606
+ }
2607
+ var ret = pack.hooks[_prop2].call(hooks, arg);
2608
+ return prevHook.call(hooks, ret);
2609
+ };
2610
+ } else {
2611
+ hooks[_prop2] = function () {
2612
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
2613
+ args[_key5] = arguments[_key5];
2614
+ }
2615
+ var ret = pack.hooks[_prop2].apply(hooks, args);
2616
+ if (ret === false) {
2617
+ ret = prevHook.apply(hooks, args);
2618
+ }
2619
+ return ret;
2620
+ };
2621
+ }
2622
+ };
2623
+ for (var _prop2 in pack.hooks) {
2624
+ _loop4(_prop2);
2625
+ }
2626
+ opts.hooks = hooks;
2627
+ }
2628
+
2629
+ // ==-- Parse WalkTokens extensions --== //
2630
+ if (pack.walkTokens) {
2631
+ var walkTokens = _this2.defaults.walkTokens;
2632
+ opts.walkTokens = function (token) {
2633
+ var values = [];
2634
+ values.push(pack.walkTokens.call(this, token));
2635
+ if (walkTokens) {
2636
+ values = values.concat(walkTokens.call(this, token));
2637
+ }
2638
+ return values;
2639
+ };
2640
+ }
2641
+ _this2.defaults = _extends({}, _this2.defaults, opts);
2642
+ });
2643
+ return this;
2417
2644
  };
2418
- }
2419
- function parseMarkdown(lexer, parser) {
2645
+ _proto.setOptions = function setOptions(opt) {
2646
+ this.defaults = _extends({}, this.defaults, opt);
2647
+ return this;
2648
+ };
2649
+ return Marked;
2650
+ }();
2651
+ function _parseMarkdown2(lexer, parser) {
2652
+ var _this3 = this;
2420
2653
  return function (src, opt, callback) {
2421
2654
  if (typeof opt === 'function') {
2422
2655
  callback = opt;
2423
2656
  opt = null;
2424
2657
  }
2425
2658
  var origOpt = _extends({}, opt);
2426
- opt = _extends({}, marked.defaults, origOpt);
2427
- var throwError = onError(opt.silent, opt.async, callback);
2659
+ opt = _extends({}, _this3.defaults, origOpt);
2660
+ var throwError = _classPrivateFieldLooseBase(_this3, _onError)[_onError](opt.silent, opt.async, callback);
2428
2661
 
2429
2662
  // throw error in case of non string input
2430
2663
  if (typeof src === 'undefined' || src === null) {
@@ -2453,7 +2686,7 @@
2453
2686
  if (!err) {
2454
2687
  try {
2455
2688
  if (opt.walkTokens) {
2456
- marked.walkTokens(tokens, opt.walkTokens);
2689
+ _this3.walkTokens(tokens, opt.walkTokens);
2457
2690
  }
2458
2691
  out = parser(tokens, opt);
2459
2692
  if (opt.hooks) {
@@ -2472,7 +2705,7 @@
2472
2705
  delete opt.highlight;
2473
2706
  if (!tokens.length) return done();
2474
2707
  var pending = 0;
2475
- marked.walkTokens(tokens, function (token) {
2708
+ _this3.walkTokens(tokens, function (token) {
2476
2709
  if (token.type === 'code') {
2477
2710
  pending++;
2478
2711
  setTimeout(function () {
@@ -2501,7 +2734,7 @@
2501
2734
  return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {
2502
2735
  return lexer(src, opt);
2503
2736
  }).then(function (tokens) {
2504
- return opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(function () {
2737
+ return opt.walkTokens ? Promise.all(_this3.walkTokens(tokens, opt.walkTokens)).then(function () {
2505
2738
  return tokens;
2506
2739
  }) : tokens;
2507
2740
  }).then(function (tokens) {
@@ -2516,7 +2749,7 @@
2516
2749
  }
2517
2750
  var _tokens = lexer(src, opt);
2518
2751
  if (opt.walkTokens) {
2519
- marked.walkTokens(_tokens, opt.walkTokens);
2752
+ _this3.walkTokens(_tokens, opt.walkTokens);
2520
2753
  }
2521
2754
  var html = parser(_tokens, opt);
2522
2755
  if (opt.hooks) {
@@ -2528,12 +2761,38 @@
2528
2761
  }
2529
2762
  };
2530
2763
  }
2764
+ function _onError2(silent, async, callback) {
2765
+ return function (e) {
2766
+ e.message += '\nPlease report this to https://github.com/markedjs/marked.';
2767
+ if (silent) {
2768
+ var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2769
+ if (async) {
2770
+ return Promise.resolve(msg);
2771
+ }
2772
+ if (callback) {
2773
+ callback(null, msg);
2774
+ return;
2775
+ }
2776
+ return msg;
2777
+ }
2778
+ if (async) {
2779
+ return Promise.reject(e);
2780
+ }
2781
+ if (callback) {
2782
+ callback(e);
2783
+ return;
2784
+ }
2785
+ throw e;
2786
+ };
2787
+ }
2788
+
2789
+ var markedInstance = new Marked(exports.defaults);
2531
2790
 
2532
2791
  /**
2533
2792
  * Marked
2534
2793
  */
2535
2794
  function marked(src, opt, callback) {
2536
- return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);
2795
+ return markedInstance.parse(src, opt, callback);
2537
2796
  }
2538
2797
 
2539
2798
  /**
@@ -2541,7 +2800,8 @@
2541
2800
  */
2542
2801
 
2543
2802
  marked.options = marked.setOptions = function (opt) {
2544
- marked.defaults = _extends({}, marked.defaults, opt);
2803
+ markedInstance.setOptions(opt);
2804
+ marked.defaults = markedInstance.defaults;
2545
2805
  changeDefaults(marked.defaults);
2546
2806
  return marked;
2547
2807
  };
@@ -2553,172 +2813,10 @@
2553
2813
  */
2554
2814
 
2555
2815
  marked.use = function () {
2556
- var extensions = marked.defaults.extensions || {
2557
- renderers: {},
2558
- childTokens: {}
2559
- };
2560
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2561
- args[_key] = arguments[_key];
2562
- }
2563
- args.forEach(function (pack) {
2564
- // copy options to new object
2565
- var opts = _extends({}, pack);
2566
-
2567
- // set async to true if it was set to true before
2568
- opts.async = marked.defaults.async || opts.async || false;
2569
-
2570
- // ==-- Parse "addon" extensions --== //
2571
- if (pack.extensions) {
2572
- pack.extensions.forEach(function (ext) {
2573
- if (!ext.name) {
2574
- throw new Error('extension name required');
2575
- }
2576
- if (ext.renderer) {
2577
- // Renderer extensions
2578
- var prevRenderer = extensions.renderers[ext.name];
2579
- if (prevRenderer) {
2580
- // Replace extension with func to run new extension but fall back if false
2581
- extensions.renderers[ext.name] = function () {
2582
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2583
- args[_key2] = arguments[_key2];
2584
- }
2585
- var ret = ext.renderer.apply(this, args);
2586
- if (ret === false) {
2587
- ret = prevRenderer.apply(this, args);
2588
- }
2589
- return ret;
2590
- };
2591
- } else {
2592
- extensions.renderers[ext.name] = ext.renderer;
2593
- }
2594
- }
2595
- if (ext.tokenizer) {
2596
- // Tokenizer Extensions
2597
- if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
2598
- throw new Error("extension level must be 'block' or 'inline'");
2599
- }
2600
- if (extensions[ext.level]) {
2601
- extensions[ext.level].unshift(ext.tokenizer);
2602
- } else {
2603
- extensions[ext.level] = [ext.tokenizer];
2604
- }
2605
- if (ext.start) {
2606
- // Function to check for start of token
2607
- if (ext.level === 'block') {
2608
- if (extensions.startBlock) {
2609
- extensions.startBlock.push(ext.start);
2610
- } else {
2611
- extensions.startBlock = [ext.start];
2612
- }
2613
- } else if (ext.level === 'inline') {
2614
- if (extensions.startInline) {
2615
- extensions.startInline.push(ext.start);
2616
- } else {
2617
- extensions.startInline = [ext.start];
2618
- }
2619
- }
2620
- }
2621
- }
2622
- if (ext.childTokens) {
2623
- // Child tokens to be visited by walkTokens
2624
- extensions.childTokens[ext.name] = ext.childTokens;
2625
- }
2626
- });
2627
- opts.extensions = extensions;
2628
- }
2629
-
2630
- // ==-- Parse "overwrite" extensions --== //
2631
- if (pack.renderer) {
2632
- var renderer = marked.defaults.renderer || new Renderer();
2633
- var _loop = function _loop(prop) {
2634
- var prevRenderer = renderer[prop];
2635
- // Replace renderer with func to run extension, but fall back if false
2636
- renderer[prop] = function () {
2637
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
2638
- args[_key3] = arguments[_key3];
2639
- }
2640
- var ret = pack.renderer[prop].apply(renderer, args);
2641
- if (ret === false) {
2642
- ret = prevRenderer.apply(renderer, args);
2643
- }
2644
- return ret;
2645
- };
2646
- };
2647
- for (var prop in pack.renderer) {
2648
- _loop(prop);
2649
- }
2650
- opts.renderer = renderer;
2651
- }
2652
- if (pack.tokenizer) {
2653
- var tokenizer = marked.defaults.tokenizer || new Tokenizer();
2654
- var _loop2 = function _loop2(_prop) {
2655
- var prevTokenizer = tokenizer[_prop];
2656
- // Replace tokenizer with func to run extension, but fall back if false
2657
- tokenizer[_prop] = function () {
2658
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2659
- args[_key4] = arguments[_key4];
2660
- }
2661
- var ret = pack.tokenizer[_prop].apply(tokenizer, args);
2662
- if (ret === false) {
2663
- ret = prevTokenizer.apply(tokenizer, args);
2664
- }
2665
- return ret;
2666
- };
2667
- };
2668
- for (var _prop in pack.tokenizer) {
2669
- _loop2(_prop);
2670
- }
2671
- opts.tokenizer = tokenizer;
2672
- }
2673
-
2674
- // ==-- Parse Hooks extensions --== //
2675
- if (pack.hooks) {
2676
- var hooks = marked.defaults.hooks || new Hooks();
2677
- var _loop3 = function _loop3(_prop2) {
2678
- var prevHook = hooks[_prop2];
2679
- if (Hooks.passThroughHooks.has(_prop2)) {
2680
- hooks[_prop2] = function (arg) {
2681
- if (marked.defaults.async) {
2682
- return Promise.resolve(pack.hooks[_prop2].call(hooks, arg)).then(function (ret) {
2683
- return prevHook.call(hooks, ret);
2684
- });
2685
- }
2686
- var ret = pack.hooks[_prop2].call(hooks, arg);
2687
- return prevHook.call(hooks, ret);
2688
- };
2689
- } else {
2690
- hooks[_prop2] = function () {
2691
- for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
2692
- args[_key5] = arguments[_key5];
2693
- }
2694
- var ret = pack.hooks[_prop2].apply(hooks, args);
2695
- if (ret === false) {
2696
- ret = prevHook.apply(hooks, args);
2697
- }
2698
- return ret;
2699
- };
2700
- }
2701
- };
2702
- for (var _prop2 in pack.hooks) {
2703
- _loop3(_prop2);
2704
- }
2705
- opts.hooks = hooks;
2706
- }
2707
-
2708
- // ==-- Parse WalkTokens extensions --== //
2709
- if (pack.walkTokens) {
2710
- var _walkTokens = marked.defaults.walkTokens;
2711
- opts.walkTokens = function (token) {
2712
- var values = [];
2713
- values.push(pack.walkTokens.call(this, token));
2714
- if (_walkTokens) {
2715
- values = values.concat(_walkTokens.call(this, token));
2716
- }
2717
- return values;
2718
- };
2719
- }
2720
- marked.setOptions(opts);
2721
- });
2816
+ markedInstance.use.apply(markedInstance, arguments);
2817
+ marked.defaults = markedInstance.defaults;
2818
+ changeDefaults(marked.defaults);
2819
+ return marked;
2722
2820
  };
2723
2821
 
2724
2822
  /**
@@ -2726,55 +2824,14 @@
2726
2824
  */
2727
2825
 
2728
2826
  marked.walkTokens = function (tokens, callback) {
2729
- var values = [];
2730
- var _loop4 = function _loop4() {
2731
- var token = _step.value;
2732
- values = values.concat(callback.call(marked, token));
2733
- switch (token.type) {
2734
- case 'table':
2735
- {
2736
- for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {
2737
- var cell = _step2.value;
2738
- values = values.concat(marked.walkTokens(cell.tokens, callback));
2739
- }
2740
- for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {
2741
- var row = _step3.value;
2742
- for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {
2743
- var _cell = _step4.value;
2744
- values = values.concat(marked.walkTokens(_cell.tokens, callback));
2745
- }
2746
- }
2747
- break;
2748
- }
2749
- case 'list':
2750
- {
2751
- values = values.concat(marked.walkTokens(token.items, callback));
2752
- break;
2753
- }
2754
- default:
2755
- {
2756
- if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {
2757
- // Walk any extensions
2758
- marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {
2759
- values = values.concat(marked.walkTokens(token[childTokens], callback));
2760
- });
2761
- } else if (token.tokens) {
2762
- values = values.concat(marked.walkTokens(token.tokens, callback));
2763
- }
2764
- }
2765
- }
2766
- };
2767
- for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
2768
- _loop4();
2769
- }
2770
- return values;
2827
+ return markedInstance.walkTokens(tokens, callback);
2771
2828
  };
2772
2829
 
2773
2830
  /**
2774
2831
  * Parse Inline
2775
2832
  * @param {string} src
2776
2833
  */
2777
- marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);
2834
+ marked.parseInline = markedInstance.parseInline;
2778
2835
 
2779
2836
  /**
2780
2837
  * Expose
@@ -2800,6 +2857,7 @@
2800
2857
 
2801
2858
  exports.Hooks = Hooks;
2802
2859
  exports.Lexer = Lexer;
2860
+ exports.Marked = Marked;
2803
2861
  exports.Parser = Parser;
2804
2862
  exports.Renderer = Renderer;
2805
2863
  exports.Slugger = Slugger;