48 lines
1.6 KiB
HTML
48 lines
1.6 KiB
HTML
<script>
|
|
'use strict';
|
|
// ====================== markdown code block ======================
|
|
function wrap(el, wrapper) {
|
|
el.parentNode.insertBefore(wrapper, el);
|
|
wrapper.appendChild(el);
|
|
}
|
|
|
|
(function () {
|
|
var singleContentsElem = document.querySelector('.single__contents');
|
|
singleContentsElem ?
|
|
singleContentsElem.querySelectorAll('pre > code').forEach(function(elem) {
|
|
var dataLang = elem.getAttribute('data-lang');
|
|
var dataLangWrapper = document.createElement('div');
|
|
var code = null;
|
|
var codeTitle = null;
|
|
|
|
if (dataLang && dataLang.includes(':')) {
|
|
code = dataLang.split(':')[0];
|
|
codeTitle = dataLang.split(':')[1];
|
|
|
|
dataLangWrapper.className = 'language-' + code;
|
|
dataLangWrapper.setAttribute('data-lang', codeTitle);
|
|
|
|
elem.className = 'language-' + code;
|
|
elem.setAttribute('data-lang', codeTitle);
|
|
elem.setAttribute('id', codeTitle);
|
|
} else if (!dataLang) {
|
|
dataLangWrapper.setAttribute('data-lang', 'Code');
|
|
dataLangWrapper.className = 'language-code';
|
|
}
|
|
|
|
if (!dataLang || codeTitle) {
|
|
wrap(elem.parentNode, dataLangWrapper);
|
|
}
|
|
|
|
}) : null;
|
|
})();
|
|
|
|
var langCodeElem = document.querySelectorAll('.language-code');
|
|
langCodeElem ? langCodeElem.forEach(function (elem) {
|
|
var newElem = document.createElement('span');
|
|
newElem.className = 'copy-to-clipboard';
|
|
newElem.setAttribute('title', 'Copy to clipboard');
|
|
elem.append(newElem);
|
|
}) : null;
|
|
// =================================================================
|
|
</script> |