1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
$$('[data-src]').forEach(function(element) {
var src = element.getAttribute('data-src'),
html = element.getAttribute('data-type') === 'text/html',
contentProperty = html? 'innerHTML' : 'textContent';
$u.xhr({
url: src,
callback: function(xhr) {
element[contentProperty] = xhr.responseText;
$u.event.fire(element, 'contentreceived', {
src: src
});
}
});
});
document.body.addEventListener('contentreceived', function(evt) {
var pre = evt.target;
if(!/pre/i.test(pre.nodeName)) {
return;
}
var language = {
'js': 'javascript',
'css': 'css',
'html': 'markup',
'svg': 'markup'
}[(evt.src.match(/\.(\w+)$/) || [,''])[1]];
pre.className = 'prism';
var code = document.createElement('code');
code.className = 'lang-' + language;
code.textContent = pre.textContent;
pre.textContent = '';
pre.appendChild(code);
Prism.highlight(code, true);
});