1 | import Prism from "prismjs";
|
2 |
|
3 | export default function(dom, data) {
|
4 | let codeElements = [].slice.call(dom.querySelectorAll("dt-code"));
|
5 | codeElements.forEach(el => {
|
6 | let content = el.textContent;
|
7 | el.innerHTML = "";
|
8 | let language = el.getAttribute("language");
|
9 | let c = dom.createElement("code");
|
10 | if (el.getAttribute("block") === "") {
|
11 |
|
12 | content = content.replace(/\n/, "");
|
13 | let tabs = content.match(/\s*/);
|
14 | content = content.replace(new RegExp("\n" + tabs, "g"), "\n");
|
15 | content = content.trim();
|
16 | let p = dom.createElement("pre");
|
17 | p.appendChild(c);
|
18 | el.appendChild(p);
|
19 | } else {
|
20 | el.appendChild(c);
|
21 | }
|
22 | let highlighted = content;
|
23 | if (Prism.languages[language]) {
|
24 | c.setAttribute("class", "language-" + language);
|
25 | highlighted = Prism.highlight(content, Prism.languages[language]);
|
26 | }
|
27 | c.innerHTML = highlighted;
|
28 | });
|
29 | }
|