feat: erweitere Didaktik-Fragmente und verbessere die Übersetzungen in mehreren Sprachen
All checks were successful
Deploy to production / deploy (push) Successful in 2m6s

This commit is contained in:
Torsten Schulz (local)
2026-05-21 14:45:22 +02:00
parent fa6164f93f
commit 8e5b990cf5
8 changed files with 196 additions and 13 deletions

View File

@@ -0,0 +1,77 @@
#!/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 || '<missing>'} -> ${r.count} ${r.source ? '('+r.source+')' : ''} ${r.note?'- '+r.note:''}`);
});
console.log('---');
console.log('Total core patterns (1..30):', total);