import Prism from 'prismjs'; export default function(dom, data) { let codeElements = [].slice.call(dom.querySelectorAll('dt-code')); codeElements.forEach(el => { 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; }); }