You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.2 KiB
JavaScript
57 lines
1.2 KiB
JavaScript
(function(){
|
|
|
|
if (!self.Prism || !self.document || !document.querySelector) {
|
|
return;
|
|
}
|
|
|
|
var Extensions = {
|
|
'js': 'javascript',
|
|
'html': 'markup',
|
|
'svg': 'markup',
|
|
'xml': 'markup',
|
|
'py': 'python',
|
|
'rb': 'ruby',
|
|
'ps1': 'powershell',
|
|
'psm1': 'powershell'
|
|
};
|
|
|
|
Array.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function(pre) {
|
|
var src = pre.getAttribute('data-src');
|
|
var extension = (src.match(/\.(\w+)$/) || [,''])[1];
|
|
var language = Extensions[extension] || extension;
|
|
|
|
var code = document.createElement('code');
|
|
code.className = 'language-' + language;
|
|
|
|
pre.textContent = '';
|
|
|
|
code.textContent = 'Loading…';
|
|
|
|
pre.appendChild(code);
|
|
|
|
var xhr = new XMLHttpRequest();
|
|
|
|
xhr.open('GET', src, true);
|
|
|
|
xhr.onreadystatechange = function() {
|
|
if (xhr.readyState == 4) {
|
|
|
|
if (xhr.status < 400 && xhr.responseText) {
|
|
code.textContent = xhr.responseText;
|
|
|
|
Prism.highlightElement(code);
|
|
}
|
|
else if (xhr.status >= 400) {
|
|
code.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;
|
|
}
|
|
else {
|
|
code.textContent = '✖ Error: File does not exist or is empty';
|
|
}
|
|
}
|
|
};
|
|
|
|
xhr.send(null);
|
|
});
|
|
|
|
})();
|