prism.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. /* PrismJS 1.22.0
  2. https://prismjs.com/download.html#themes=prism-tomorrow&languages=clike+javascript */
  3. var Prism = (function (u) {
  4. var c = /\blang(?:uage)?-([\w-]+)\b/i,
  5. n = 0,
  6. M = {
  7. manual: u.Prism && u.Prism.manual,
  8. disableWorkerMessageHandler:
  9. u.Prism && u.Prism.disableWorkerMessageHandler,
  10. util: {
  11. encode: function e(n) {
  12. return n instanceof W
  13. ? new W(n.type, e(n.content), n.alias)
  14. : Array.isArray(n)
  15. ? n.map(e)
  16. : n
  17. .replace(/&/g, "&")
  18. .replace(/</g, "&lt;")
  19. .replace(/\u00a0/g, " ");
  20. },
  21. type: function (e) {
  22. return Object.prototype.toString.call(e).slice(8, -1);
  23. },
  24. objId: function (e) {
  25. return (
  26. e.__id || Object.defineProperty(e, "__id", { value: ++n }), e.__id
  27. );
  28. },
  29. clone: function t(e, r) {
  30. var a, n;
  31. switch (((r = r || {}), M.util.type(e))) {
  32. case "Object":
  33. if (((n = M.util.objId(e)), r[n])) return r[n];
  34. for (var i in ((a = {}), (r[n] = a), e))
  35. e.hasOwnProperty(i) && (a[i] = t(e[i], r));
  36. return a;
  37. case "Array":
  38. return (
  39. (n = M.util.objId(e)),
  40. r[n]
  41. ? r[n]
  42. : ((a = []),
  43. (r[n] = a),
  44. e.forEach(function (e, n) {
  45. a[n] = t(e, r);
  46. }),
  47. a)
  48. );
  49. default:
  50. return e;
  51. }
  52. },
  53. getLanguage: function (e) {
  54. for (; e && !c.test(e.className); ) e = e.parentElement;
  55. return e
  56. ? (e.className.match(c) || [, "none"])[1].toLowerCase()
  57. : "none";
  58. },
  59. currentScript: function () {
  60. if ("undefined" == typeof document) return null;
  61. if ("currentScript" in document) return document.currentScript;
  62. try {
  63. throw new Error();
  64. } catch (e) {
  65. var n = (/at [^(\r\n]*\((.*):.+:.+\)$/i.exec(e.stack) || [])[1];
  66. if (n) {
  67. var t = document.getElementsByTagName("script");
  68. for (var r in t) if (t[r].src == n) return t[r];
  69. }
  70. return null;
  71. }
  72. },
  73. isActive: function (e, n, t) {
  74. for (var r = "no-" + n; e; ) {
  75. var a = e.classList;
  76. if (a.contains(n)) return !0;
  77. if (a.contains(r)) return !1;
  78. e = e.parentElement;
  79. }
  80. return !!t;
  81. },
  82. },
  83. languages: {
  84. extend: function (e, n) {
  85. var t = M.util.clone(M.languages[e]);
  86. for (var r in n) t[r] = n[r];
  87. return t;
  88. },
  89. insertBefore: function (t, e, n, r) {
  90. var a = (r = r || M.languages)[t],
  91. i = {};
  92. for (var l in a)
  93. if (a.hasOwnProperty(l)) {
  94. if (l == e) for (var o in n) n.hasOwnProperty(o) && (i[o] = n[o]);
  95. n.hasOwnProperty(l) || (i[l] = a[l]);
  96. }
  97. var s = r[t];
  98. return (
  99. (r[t] = i),
  100. M.languages.DFS(M.languages, function (e, n) {
  101. n === s && e != t && (this[e] = i);
  102. }),
  103. i
  104. );
  105. },
  106. DFS: function e(n, t, r, a) {
  107. a = a || {};
  108. var i = M.util.objId;
  109. for (var l in n)
  110. if (n.hasOwnProperty(l)) {
  111. t.call(n, l, n[l], r || l);
  112. var o = n[l],
  113. s = M.util.type(o);
  114. "Object" !== s || a[i(o)]
  115. ? "Array" !== s || a[i(o)] || ((a[i(o)] = !0), e(o, t, l, a))
  116. : ((a[i(o)] = !0), e(o, t, null, a));
  117. }
  118. },
  119. },
  120. plugins: {},
  121. highlightAll: function (e, n) {
  122. M.highlightAllUnder(document, e, n);
  123. },
  124. highlightAllUnder: function (e, n, t) {
  125. var r = {
  126. callback: t,
  127. container: e,
  128. selector:
  129. 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code',
  130. };
  131. M.hooks.run("before-highlightall", r),
  132. (r.elements = Array.prototype.slice.apply(
  133. r.container.querySelectorAll(r.selector)
  134. )),
  135. M.hooks.run("before-all-elements-highlight", r);
  136. for (var a, i = 0; (a = r.elements[i++]); )
  137. M.highlightElement(a, !0 === n, r.callback);
  138. },
  139. highlightElement: function (e, n, t) {
  140. var r = M.util.getLanguage(e),
  141. a = M.languages[r];
  142. e.className =
  143. e.className.replace(c, "").replace(/\s+/g, " ") + " language-" + r;
  144. var i = e.parentElement;
  145. i &&
  146. "pre" === i.nodeName.toLowerCase() &&
  147. (i.className =
  148. i.className.replace(c, "").replace(/\s+/g, " ") + " language-" + r);
  149. var l = { element: e, language: r, grammar: a, code: e.textContent };
  150. function o(e) {
  151. (l.highlightedCode = e),
  152. M.hooks.run("before-insert", l),
  153. (l.element.innerHTML = l.highlightedCode),
  154. M.hooks.run("after-highlight", l),
  155. M.hooks.run("complete", l),
  156. t && t.call(l.element);
  157. }
  158. if ((M.hooks.run("before-sanity-check", l), !l.code))
  159. return M.hooks.run("complete", l), void (t && t.call(l.element));
  160. if ((M.hooks.run("before-highlight", l), l.grammar))
  161. if (n && u.Worker) {
  162. var s = new Worker(M.filename);
  163. (s.onmessage = function (e) {
  164. o(e.data);
  165. }),
  166. s.postMessage(
  167. JSON.stringify({
  168. language: l.language,
  169. code: l.code,
  170. immediateClose: !0,
  171. })
  172. );
  173. } else o(M.highlight(l.code, l.grammar, l.language));
  174. else o(M.util.encode(l.code));
  175. },
  176. highlight: function (e, n, t) {
  177. var r = { code: e, grammar: n, language: t };
  178. return (
  179. M.hooks.run("before-tokenize", r),
  180. (r.tokens = M.tokenize(r.code, r.grammar)),
  181. M.hooks.run("after-tokenize", r),
  182. W.stringify(M.util.encode(r.tokens), r.language)
  183. );
  184. },
  185. tokenize: function (e, n) {
  186. var t = n.rest;
  187. if (t) {
  188. for (var r in t) n[r] = t[r];
  189. delete n.rest;
  190. }
  191. var a = new i();
  192. return (
  193. I(a, a.head, e),
  194. (function e(n, t, r, a, i, l) {
  195. for (var o in r)
  196. if (r.hasOwnProperty(o) && r[o]) {
  197. var s = r[o];
  198. s = Array.isArray(s) ? s : [s];
  199. for (var u = 0; u < s.length; ++u) {
  200. if (l && l.cause == o + "," + u) return;
  201. var c = s[u],
  202. g = c.inside,
  203. f = !!c.lookbehind,
  204. h = !!c.greedy,
  205. d = 0,
  206. v = c.alias;
  207. if (h && !c.pattern.global) {
  208. var p = c.pattern.toString().match(/[imsuy]*$/)[0];
  209. c.pattern = RegExp(c.pattern.source, p + "g");
  210. }
  211. for (
  212. var m = c.pattern || c, y = a.next, k = i;
  213. y !== t.tail && !(l && k >= l.reach);
  214. k += y.value.length, y = y.next
  215. ) {
  216. var b = y.value;
  217. if (t.length > n.length) return;
  218. if (!(b instanceof W)) {
  219. var x = 1;
  220. if (h && y != t.tail.prev) {
  221. m.lastIndex = k;
  222. var w = m.exec(n);
  223. if (!w) break;
  224. var A = w.index + (f && w[1] ? w[1].length : 0),
  225. P = w.index + w[0].length,
  226. S = k;
  227. for (S += y.value.length; S <= A; )
  228. (y = y.next), (S += y.value.length);
  229. if (
  230. ((S -= y.value.length), (k = S), y.value instanceof W)
  231. )
  232. continue;
  233. for (
  234. var E = y;
  235. E !== t.tail && (S < P || "string" == typeof E.value);
  236. E = E.next
  237. )
  238. x++, (S += E.value.length);
  239. x--, (b = n.slice(k, S)), (w.index -= k);
  240. } else {
  241. m.lastIndex = 0;
  242. var w = m.exec(b);
  243. }
  244. if (w) {
  245. f && (d = w[1] ? w[1].length : 0);
  246. var A = w.index + d,
  247. O = w[0].slice(d),
  248. P = A + O.length,
  249. L = b.slice(0, A),
  250. N = b.slice(P),
  251. j = k + b.length;
  252. l && j > l.reach && (l.reach = j);
  253. var C = y.prev;
  254. L && ((C = I(t, C, L)), (k += L.length)), z(t, C, x);
  255. var _ = new W(o, g ? M.tokenize(O, g) : O, v, O);
  256. (y = I(t, C, _)),
  257. N && I(t, y, N),
  258. 1 < x &&
  259. e(n, t, r, y.prev, k, {
  260. cause: o + "," + u,
  261. reach: j,
  262. });
  263. }
  264. }
  265. }
  266. }
  267. }
  268. })(e, a, n, a.head, 0),
  269. (function (e) {
  270. var n = [],
  271. t = e.head.next;
  272. for (; t !== e.tail; ) n.push(t.value), (t = t.next);
  273. return n;
  274. })(a)
  275. );
  276. },
  277. hooks: {
  278. all: {},
  279. add: function (e, n) {
  280. var t = M.hooks.all;
  281. (t[e] = t[e] || []), t[e].push(n);
  282. },
  283. run: function (e, n) {
  284. var t = M.hooks.all[e];
  285. if (t && t.length) for (var r, a = 0; (r = t[a++]); ) r(n);
  286. },
  287. },
  288. Token: W,
  289. };
  290. function W(e, n, t, r) {
  291. (this.type = e),
  292. (this.content = n),
  293. (this.alias = t),
  294. (this.length = 0 | (r || "").length);
  295. }
  296. function i() {
  297. var e = { value: null, prev: null, next: null },
  298. n = { value: null, prev: e, next: null };
  299. (e.next = n), (this.head = e), (this.tail = n), (this.length = 0);
  300. }
  301. function I(e, n, t) {
  302. var r = n.next,
  303. a = { value: t, prev: n, next: r };
  304. return (n.next = a), (r.prev = a), e.length++, a;
  305. }
  306. function z(e, n, t) {
  307. for (var r = n.next, a = 0; a < t && r !== e.tail; a++) r = r.next;
  308. ((n.next = r).prev = n), (e.length -= a);
  309. }
  310. if (
  311. ((u.Prism = M),
  312. (W.stringify = function n(e, t) {
  313. if ("string" == typeof e) return e;
  314. if (Array.isArray(e)) {
  315. var r = "";
  316. return (
  317. e.forEach(function (e) {
  318. r += n(e, t);
  319. }),
  320. r
  321. );
  322. }
  323. var a = {
  324. type: e.type,
  325. content: n(e.content, t),
  326. tag: "span",
  327. classes: ["token", e.type],
  328. attributes: {},
  329. language: t,
  330. },
  331. i = e.alias;
  332. i &&
  333. (Array.isArray(i)
  334. ? Array.prototype.push.apply(a.classes, i)
  335. : a.classes.push(i)),
  336. M.hooks.run("wrap", a);
  337. var l = "";
  338. for (var o in a.attributes)
  339. l +=
  340. " " +
  341. o +
  342. '="' +
  343. (a.attributes[o] || "").replace(/"/g, "&quot;") +
  344. '"';
  345. return (
  346. "<" +
  347. a.tag +
  348. ' class="' +
  349. a.classes.join(" ") +
  350. '"' +
  351. l +
  352. ">" +
  353. a.content +
  354. "</" +
  355. a.tag +
  356. ">"
  357. );
  358. }),
  359. !u.document)
  360. )
  361. return (
  362. u.addEventListener &&
  363. (M.disableWorkerMessageHandler ||
  364. u.addEventListener(
  365. "message",
  366. function (e) {
  367. var n = JSON.parse(e.data),
  368. t = n.language,
  369. r = n.code,
  370. a = n.immediateClose;
  371. u.postMessage(M.highlight(r, M.languages[t], t)), a && u.close();
  372. },
  373. !1
  374. )),
  375. M
  376. );
  377. var e = M.util.currentScript();
  378. function t() {
  379. M.manual || M.highlightAll();
  380. }
  381. if (
  382. (e &&
  383. ((M.filename = e.src), e.hasAttribute("data-manual") && (M.manual = !0)),
  384. !M.manual)
  385. ) {
  386. var r = document.readyState;
  387. "loading" === r || ("interactive" === r && e && e.defer)
  388. ? document.addEventListener("DOMContentLoaded", t)
  389. : window.requestAnimationFrame
  390. ? window.requestAnimationFrame(t)
  391. : window.setTimeout(t, 16);
  392. }
  393. return M;
  394. })(module.exports);
  395. Prism.languages.clike = {
  396. comment: [
  397. { pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, lookbehind: !0 },
  398. { pattern: /(^|[^\\:])\/\/.*/, lookbehind: !0, greedy: !0 },
  399. ],
  400. string: {
  401. pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
  402. greedy: !0,
  403. },
  404. "class-name": {
  405. pattern: /(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,
  406. lookbehind: !0,
  407. inside: { punctuation: /[.\\]/ },
  408. },
  409. keyword: /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
  410. boolean: /\b(?:true|false)\b/,
  411. function: /\w+(?=\()/,
  412. number: /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,
  413. operator: /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,
  414. punctuation: /[{}[\];(),.:]/,
  415. };
  416. (Prism.languages.javascript = Prism.languages.extend("clike", {
  417. "class-name": [
  418. Prism.languages.clike["class-name"],
  419. {
  420. pattern: /(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,
  421. lookbehind: !0,
  422. },
  423. ],
  424. keyword: [
  425. { pattern: /((?:^|})\s*)(?:catch|finally)\b/, lookbehind: !0 },
  426. {
  427. pattern: /(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\s*[\[$\w\xA0-\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,
  428. lookbehind: !0,
  429. },
  430. ],
  431. number: /\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,
  432. function: /#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
  433. operator: /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/,
  434. })),
  435. (Prism.languages.javascript[
  436. "class-name"
  437. ][0].pattern = /(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/),
  438. Prism.languages.insertBefore("javascript", "keyword", {
  439. regex: {
  440. pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,
  441. lookbehind: !0,
  442. greedy: !0,
  443. inside: {
  444. "regex-source": {
  445. pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/,
  446. lookbehind: !0,
  447. alias: "language-regex",
  448. inside: Prism.languages.regex,
  449. },
  450. "regex-flags": /[a-z]+$/,
  451. "regex-delimiter": /^\/|\/$/,
  452. },
  453. },
  454. "function-variable": {
  455. pattern: /#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,
  456. alias: "function",
  457. },
  458. parameter: [
  459. {
  460. pattern: /(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,
  461. lookbehind: !0,
  462. inside: Prism.languages.javascript,
  463. },
  464. {
  465. pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,
  466. inside: Prism.languages.javascript,
  467. },
  468. {
  469. pattern: /(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,
  470. lookbehind: !0,
  471. inside: Prism.languages.javascript,
  472. },
  473. {
  474. pattern: /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,
  475. lookbehind: !0,
  476. inside: Prism.languages.javascript,
  477. },
  478. ],
  479. constant: /\b[A-Z](?:[A-Z_]|\dx?)*\b/,
  480. }),
  481. Prism.languages.insertBefore("javascript", "string", {
  482. "template-string": {
  483. pattern: /`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,
  484. greedy: !0,
  485. inside: {
  486. "template-punctuation": { pattern: /^`|`$/, alias: "string" },
  487. interpolation: {
  488. pattern: /((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,
  489. lookbehind: !0,
  490. inside: {
  491. "interpolation-punctuation": {
  492. pattern: /^\${|}$/,
  493. alias: "punctuation",
  494. },
  495. rest: Prism.languages.javascript,
  496. },
  497. },
  498. string: /[\s\S]+/,
  499. },
  500. },
  501. }),
  502. Prism.languages.markup &&
  503. Prism.languages.markup.tag.addInlined("script", "javascript"),
  504. (Prism.languages.js = Prism.languages.javascript);
  505. module.exports.Prism = Prism;