deblan.io-murph/assets/js/app/code.js

65 lines
1.8 KiB
JavaScript
Raw Normal View History

2021-06-15 14:26:38 +02:00
const Prism = require('prismjs')
2021-03-29 19:40:55 +02:00
2021-06-15 14:26:38 +02:00
require('prismjs/plugins/line-numbers/prism-line-numbers.css')
require('prismjs/themes/prism-twilight.css')
2021-03-29 19:40:55 +02:00
2021-06-15 14:26:38 +02:00
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')
2021-03-29 19:40:55 +02:00
2021-06-15 14:26:38 +02:00
require('prismjs/plugins/keep-markup/prism-keep-markup')
require('prismjs/plugins/line-highlight/prism-line-highlight')
require('prismjs/plugins/line-numbers/prism-line-numbers')
2021-03-29 19:40:55 +02:00
2021-06-15 14:26:38 +02:00
const Code = function (w) {
this.window = w
}
2021-06-15 14:26:38 +02:00
Code.prototype.init = function () {
Prism.highlightAllUnder(document)
const elements = this.window.document.querySelectorAll('code[data-title], div[data-title]')
2021-06-15 14:26:38 +02:00
for (let i = 0, len = elements.length; i < len; i++) {
const element = elements[i]
2021-06-15 14:26:38 +02:00
if (element.tagName === 'CODE') {
var code = element
var pre = code.parentNode
var post = pre.parentNode
} else {
var code = element.querySelector('code')
2021-06-15 14:26:38 +02:00
if (!code) {
continue
}
2021-06-15 14:26:38 +02:00
var pre = code.parentNode
var post = pre.parentNode
}
2021-06-15 14:26:38 +02:00
if (!pre || !post) {
continue
}
2021-06-15 14:26:38 +02:00
pre.classList.add('with-title')
2021-06-15 14:26:38 +02:00
const title = this.window.document.createElement('div')
title.classList.add('code-title')
title.textContent = element.getAttribute('data-title')
2021-06-15 14:26:38 +02:00
post.insertBefore(title, pre)
}
}
module.exports = Code