deblan.io-murph/assets/js/app/code.js
2021-03-29 19:40:55 +02:00

65 lines
1.9 KiB
JavaScript

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