ecmarkup
Version:
Custom element definitions and core utilities for markup that specifies ECMAScript and related technologies.
31 lines (28 loc) • 1.23 kB
JavaScript
;
let decimalBullet = Array.from({ length: 100 }, (a, i) => '' + (i + 1));
let alphaBullet = Array.from({ length: 26 }, (a, i) => String.fromCharCode('a'.charCodeAt(0) + i));
// prettier-ignore
let romanBullet = ['i', 'ii', 'iii', 'iv', 'v', 'vi', 'vii', 'viii', 'ix', 'x', 'xi', 'xii', 'xiii', 'xiv', 'xv', 'xvi', 'xvii', 'xviii', 'xix', 'xx', 'xxi', 'xxii', 'xxiii', 'xxiv', 'xxv'];
// prettier-ignore
let bullets = [decimalBullet, alphaBullet, romanBullet, decimalBullet, alphaBullet, romanBullet];
function addStepNumberText(ol, parentIndex) {
for (let i = 0; i < ol.children.length; ++i) {
let child = ol.children[i];
let index = parentIndex.concat([i]);
let applicable = bullets[Math.min(index.length - 1, 5)];
let span = document.createElement('span');
span.textContent = (applicable[i] || '?') + '. ';
span.style.fontSize = '0';
span.setAttribute('aria-hidden', 'true');
child.prepend(span);
let sublist = child.querySelector('ol');
if (sublist != null) {
addStepNumberText(sublist, index);
}
}
}
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('emu-alg > ol').forEach(ol => {
addStepNumberText(ol, []);
});
});