UNPKG

taraskevizer

Version:

Канвэртацыя акадэмічнага правапісу ў клясычны

83 lines (82 loc) 3.14 kB
import { gobj } from './dict/index.js'; const applyG = (el) => { el.textContent = gobj[el.textContent]; }; export const createInteractiveTags = ({ variable, letterH } = { variable: 'tarL', letterH: 'tarH', }) => { const changeList = []; variable = variable.toUpperCase(); letterH = letterH.toUpperCase(); return { update: (root) => { const elems = root.querySelectorAll(`${letterH}, ${variable}`); if (changeList.length > elems.length) { changeList.length = elems.length; } else { while (changeList.length < elems.length) { changeList.push(0); } } for (let i = 0; i < changeList.length; i++) { const el = elems[i]; el.seqNum = i; if (changeList[i]) { switch (el.tagName) { case letterH: { applyG(el); } break; case variable: { let data = el.dataset.l; if (data.includes(',')) { const dataArr = data.split(','); data = el.innerHTML; for (let j = 0; j < changeList[i]; ++j) { dataArr.push(data); data = dataArr.shift(); } el.dataset.l = dataArr.join(','); } else { el.dataset.l = el.innerHTML; } el.innerHTML = data; } } } } }, tryAlternate: (el) => { if ('seqNum' in el) { switch (el.tagName) { case letterH: { changeList[el.seqNum] = changeList[el.seqNum] ? 0 : 1; applyG(el); } break; case variable: { let data = el.dataset.l; if (data.includes(',')) { const dataArr = data.split(','); dataArr.push(el.innerHTML); data = dataArr.shift(); changeList[el.seqNum] = (changeList[el.seqNum] + 1) % (dataArr.length + 1); el.dataset.l = dataArr.join(','); } else { changeList[el.seqNum] = changeList[el.seqNum] ? 0 : 1; el.dataset.l = el.innerHTML; } el.innerHTML = data; } } } }, }; };