@xiee/utils
Version:
Miscellaneous tools and utilities to manipulate HTML pages
17 lines (16 loc) • 726 B
JavaScript
// add line numbers to code blocks for <code class="line-numbers" [data-start=*]>
(() => {
function addNum(el) {
const s = '<span data-line-number=""></span>', sel = 'span[data-line-number]';
if (el.querySelector(sel)) return;
el.innerHTML = s + el.innerHTML.replace(/\n(?=.|\s)/g, '\n' + s);
let n1 = +el.dataset.start; if (isNaN(n1)) n1 = 1;
const spans = el.querySelectorAll(sel), w = ('' + (n1 - 1 + spans.length)).length;
spans.forEach(sp => {
let n = '' + (n1++), d = w - n.length;
if (d > 0) n = '0'.repeat(d) + n;
sp.dataset.lineNumber = n;
});
}
addEventListener('load', e => document.querySelectorAll('pre > code.line-numbers:first-child').forEach(addNum));
})();