import { parseVariantsData } from "../../export-data/variants-data.mjs"; import { ImgX, MdCol } from "../md-format-tools.mjs"; export default async function processCvOt(dirs) { const variantsData = await parseVariantsData(); const md = new MdCol("Section-OT-Character-Variants"); const TableColumns = 12; md.log(``); for (const cv of variantsData.primes) { if (!cv.tag) continue; let effVariants = []; for (const cvv of cv.variants) if (cvv.rank) effVariants.push(cvv); const entryWidth = sampleImageCountEmOfCv(cv); const imgWidth = 32 * entryWidth; const entriesPerRow = Math.floor(TableColumns / entryWidth); const rowsNeeded = Math.ceil(effVariants.length / entriesPerRow); const itemColSpanHtml = entryWidth > 1 ? ` colspan="${entryWidth}"` : ``; for (let rid = 0; rid < rowsNeeded; rid++) { const entriesInThisRow = Math.min( entriesPerRow, effVariants.length - rid * entriesPerRow ); const tailBlankColumnsCount = TableColumns - entryWidth * entriesInThisRow; // Image row md.log(``); if (rid === 0) md.log(``); for (let cid = 0; cid < entriesPerRow; cid++) { const iCvv = rid * entriesPerRow + cid; if (iCvv >= effVariants.length) continue; const cvv = effVariants[iCvv]; const imageID = `${dirs.images}/cv-${cv.key}-${cvv.key}`; const image = ImgX(imageID, imgWidth); md.log(`${image}`); } if (tailBlankColumnsCount > 0) md.log(``); md.log(``); // CV ID row md.log(``); for (let cid = 0; cid < entriesPerRow; cid++) { const iCvv = rid * entriesPerRow + cid; if (iCvv >= effVariants.length) continue; const cvv = effVariants[iCvv]; md.log(`${cvv.rank}`); } if (tailBlankColumnsCount > 0) md.log(``); md.log(``); } } md.log(`
${cv.tag}
`); return md; } export function sampleImageCountEmOfCv(cv) { return cv.hotChars.length * (cv.slopeDependent ? 2 : 1); }