Normalizes indents within code blocks

This commit is contained in:
Shan Carter
2017-01-04 17:11:11 -08:00
parent 902696214f
commit b9a1b85fc4
6 changed files with 38 additions and 31 deletions
+23 -11
View File
@@ -1,17 +1,29 @@
import Prism from "prismjs";
export default function(dom, data) {
let codeElements = [].slice.call(dom.querySelectorAll("code"));
let codeElements = [].slice.call(dom.querySelectorAll("dt-code"));
codeElements.forEach(el => {
// let content = el.innerHTML;
// el.innerHTML = "";
// let p = dom.createElement("pre");
// let c = dom.createElement("code");
// console.log(content)
let highlighted = Prism.highlightElement(el);
// c.innerHTML = highlighted;
// p.appendChild(c);
// el.appendChild(p);
let content = el.textContent;
el.innerHTML = "";
let language = el.getAttribute("language");
let c = dom.createElement("code");
if (el.getAttribute("block") === "") {
// Let's normalize the tab indents
content = content.replace(/\n/, "");
let tabs = content.match(/\s*/);
content = content.replace(new RegExp("\n" + tabs, "g"), "\n");
content = content.trim();
let p = dom.createElement("pre");
p.appendChild(c);
el.appendChild(p);
} else {
el.appendChild(c);
}
let highlighted = content;
if (Prism.languages[language]) {
c.setAttribute("class", "language-" + language);
highlighted = Prism.highlight(content, Prism.languages[language]);
}
c.innerHTML = highlighted;
});
}