Files
template/src/transforms/code.js
T
Ludwig Schubert a06cb5794c Add Apache License
2018-03-30 10:51:26 -07:00

44 lines
1.5 KiB
JavaScript

// Copyright 2018 The Distill Template Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
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;
});
}