import { readFileSync, writeFileSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import { dirname, join } from 'node:path'; import GithubSlugger from 'github-slugger'; const __dirname = dirname(fileURLToPath(import.meta.url)); const root = join(__dirname, '..'); const md = readFileSync(join(root, 'content', 'rulebook.md'), 'utf8'); const slugger = new GithubSlugger(); const map = {}; for (const line of md.split('\n')) { const m = line.match(/^#{1,6}\s+(.+)/); if (!m) continue; const text = m[1].replace(/\[([^\]]+)\]\([^)]+\)/g, '$1').trim(); const slug = slugger.slug(text); // use first word/number token before a space as the key if it looks like a section number const keyMatch = text.match(/^([\d.]+)\s/); const key = keyMatch ? keyMatch[1] : text; map[key] = slug; } writeFileSync(join(root, 'content', 'sections.json'), JSON.stringify(map, null, 2)); console.log(`section map: ${Object.keys(map).length} entries written to content/sections.json`);