#!/usr/bin/env node import fs from 'fs'; import path from 'path'; function readFile(p) { return fs.readFileSync(path.resolve(p), 'utf8'); } const base = readFile('./backend/scripts/create-bisaya-course.js'); const bisaya = readFile('./backend/scripts/bisaya-course-plan-24-43.js'); function extractLessons(text) { const lessons = new Map(); const re = /\{[\s\S]*?num:\s*(\d+),[\s\S]*?title:\s*'([^']+)'[\s\S]*?\}/g; let m; while ((m = re.exec(text))) { const num = Number(m[1]); const title = m[2]; if (num >= 1 && num <= 30) lessons.set(num, title); } return lessons; } function extractCorePatternsForTitle(title, text) { // Try to find 'title': { ... corePatterns: [ ... ] } const escTitle = title.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'); const re = new RegExp("'" + escTitle + "'\\s*:\\s*\\{[\\s\\S]*?corePatterns\\s*:\\s*\\[([\\s\\S]*?)\\]", 'm'); const m = re.exec(text); if (!m) return null; const inside = m[1]; // Count entries: either objects { target: ... } or string entries const lines = inside.split(/\r?\n/).map(l => l.trim()).filter(l => l.length > 0); let count = 0; for (const ln of lines) { if (ln.startsWith('{') || ln.startsWith("'") || ln.startsWith('"')) count++; } return count; } const lessons = extractLessons(base + '\n' + bisaya); const results = []; for (let i = 1; i <= 30; i++) { const title = lessons.get(i); if (!title) { results.push({ num: i, title: null, count: 0, note: 'title not found' }); continue; } let count = extractCorePatternsForTitle(title, base); let source = 'create-bisaya-course.js'; if (count === null) { count = extractCorePatternsForTitle(title, bisaya); source = 'bisaya-course-plan-24-43.js'; } if (count === null) { // try relationship anchor const relText = bisaya; count = extractCorePatternsForTitle(title, relText); source = 'bisaya-course-plan-24-43.js'; } if (count === null) { results.push({ num: i, title, count: 0, note: 'corePatterns not found' }); } else { results.push({ num: i, title, count, source }); } } let total = 0; for (const r of results) { total += r.count || 0; } console.log('Core pattern counts for lessons 1..30:'); results.forEach(r => { console.log(`${r.num}. ${r.title || ''} -> ${r.count} ${r.source ? '('+r.source+')' : ''} ${r.note?'- '+r.note:''}`); }); console.log('---'); console.log('Total core patterns (1..30):', total);