mirror of
https://github.com/wassname/template.git
synced 2026-06-28 03:19:56 +08:00
30 lines
952 B
JavaScript
30 lines
952 B
JavaScript
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;
|
|
});
|
|
}
|