const Prism = require('prismjs'); require('prismjs/plugins/line-numbers/prism-line-numbers.css'); require('prismjs/themes/prism-twilight.css'); require('prismjs/components/prism-scss'); require('prismjs/components/prism-markup'); require('prismjs/components/prism-markup-templating'); require('prismjs/components/prism-css'); require('prismjs/components/prism-clike'); require('prismjs/components/prism-javascript'); require('prismjs/components/prism-bash'); require('prismjs/components/prism-markdown'); require('prismjs/components/prism-nginx'); require('prismjs/components/prism-php'); require('prismjs/components/prism-python'); require('prismjs/components/prism-sql'); require('prismjs/components/prism-yaml'); require('prismjs/plugins/keep-markup/prism-keep-markup'); require('prismjs/plugins/line-highlight/prism-line-highlight'); require('prismjs/plugins/line-numbers/prism-line-numbers'); const Code = function(w) { this.window = w; } Code.prototype.init = function() { Prism.highlightAllUnder(document) var elements = this.window.document.querySelectorAll('code[data-title], div[data-title]') for (var i = 0, len = elements.length; i < len; i++) { var element = elements[i]; if (element.tagName === 'CODE') { var code = element; var pre = code.parentNode; var post = pre.parentNode; } else { var code = element.querySelector('code'); if (!code) { continue; } var pre = code.parentNode; var post = pre.parentNode; } if (!pre || !post) { continue; } pre.classList.add('with-title'); var title = this.window.document.createElement('div'); title.classList.add('code-title'); title.textContent = element.getAttribute('data-title'); post.insertBefore(title, pre); } } module.exports = Code