UNPKG

1.5 kBJavaScriptView Raw
1(function () {
2
3 if (typeof self === 'undefined' || !self.Prism || !self.document) {
4 return;
5 }
6
7 Prism.plugins.UnescapedMarkup = true;
8
9 Prism.hooks.add('before-highlightall', function (env) {
10 env.selector += ", [class*='lang-'] script[type='text/plain'], [class*='language-'] script[type='text/plain']" +
11 ", script[type='text/plain'][class*='lang-'], script[type='text/plain'][class*='language-']";
12 });
13
14 Prism.hooks.add('before-sanity-check', function (env) {
15 if ((env.element.matches || env.element.msMatchesSelector).call(env.element, "script[type='text/plain']")) {
16 var code = document.createElement("code");
17 var pre = document.createElement("pre");
18
19 pre.className = code.className = env.element.className;
20
21 if (env.element.dataset) {
22 Object.keys(env.element.dataset).forEach(function (key) {
23 if (Object.prototype.hasOwnProperty.call(env.element.dataset, key)) {
24 pre.dataset[key] = env.element.dataset[key];
25 }
26 });
27 }
28
29 env.code = env.code.replace(/&lt;\/script(>|&gt;)/gi, "</scri" + "pt>");
30 code.textContent = env.code;
31
32 pre.appendChild(code);
33 env.element.parentNode.replaceChild(pre, env.element);
34 env.element = code;
35 return;
36 }
37
38 var pre = env.element.parentNode;
39 if (!env.code && pre && pre.nodeName.toLowerCase() == 'pre' &&
40 env.element.childNodes.length && env.element.childNodes[0].nodeName == "#comment") {
41 env.element.textContent = env.code = env.element.childNodes[0].textContent;
42 }
43 });
44}());