feat: erweitere Didaktik-Fragmente und verbessere die Übersetzungen in mehreren Sprachen
All checks were successful
Deploy to production / deploy (push) Successful in 2m6s
All checks were successful
Deploy to production / deploy (push) Successful in 2m6s
This commit is contained in:
77
backend/scripts/count_corepatterns.js
Normal file
77
backend/scripts/count_corepatterns.js
Normal 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);
|
||||
Reference in New Issue
Block a user