Umlaute: der Export prueft sie, statt sich aufs Erinnern zu verlassen
Auf einer Slide stand "Sanitaer" und "Klima / Lueftung". Beides kam woertlich aus dem Klickdummy, wo es schludrig eingetippt ist, und beides las sich im fertigen Beitrag wie ein Fehler -- weil es einer ist. Gefunden hat es niemand beim Bauen, sondern jemand, der auf den fertigen Post geschaut hat. Ein reines Muster genuegt als Pruefung nicht: Deutsch schreibt "neue", "Dauer" und "Michael" voellig zu Recht mit ae/oe/ue. Nachgezaehlt ueber den gezeichneten Text aller sieben Projekte sind es aber nur acht solche Woerter, alle davon richtig oder gewollt (die Kanal-Handles). Also Muster plus kurze Ausnahmeliste -- null Fehlalarme, "Sanitaer" faellt trotzdem auf. Bei ss ist es umgekehrt: 15 Treffer im gezeichneten Text, alle richtig (dass, Schluss, Netzanschluss). Deshalb dort eine Liste der wenigen Woerter, die ein scharfes s brauchen, statt eines Musters. Geprueft wird an zwei Stellen, weil es zwei Wege zum fertigen Bild gibt: renderSlide() bricht ab, bevor ein PNG entsteht animation.mjs an 24 Stellen ueber den Ablauf Der zweite Punkt war ein eigener Fehler: der erste Anlauf prueft nur den Anfangszustand und fand nichts, weil die falschen Woerter dort erst ab t = 0,4 erscheinen. Der Text einer Animation aendert sich mit der Zeit, die Pruefung muss es auch. Beide Tore sind mit absichtlich wieder eingebautem "Sanitaer" scheitern gesehen worden. Eine Pruefung, die man nie hat scheitern sehen, ist keine -- der erste Test lief durch, weil mein Testskript htmlToImage direkt aufruft und renderSlide dabei umgeht. Regel und Begruendung stehen in rules.md 4, die Falle in 8. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U7RZ6ZpLD8Dp84Rtt4KHfv
This commit is contained in:
1 parent
6b9f7a4ccf
commit
344645cb77
9 files changed
+406
No files matched your search
@@ -161,6 +161,25 @@ try {
|
||||
if (kasten.x !== 0 || kasten.y !== 0)
|
||||
throw new Error(`${a.key} sitzt bei ${kasten.x},${kasten.y} statt 0,0`);
|
||||
|
||||
/* Dieselbe Umlautpruefung wie der Bildexport. Das Bewegtbild laeuft nicht
|
||||
durch renderSlide und waere sonst die Luecke: auf einer Slide faellt
|
||||
"Sanitaer" beim Export auf, in 180 Bildern niemandem.
|
||||
|
||||
Ueber den ganzen Ablauf und nicht nur einmal: der Text einer Animation
|
||||
aendert sich mit t. Beim ersten Versuch lief die Pruefung nur auf dem
|
||||
Anfangsbild und fand nichts -- die fehlerhaften Optionen erscheinen
|
||||
erst ab t = 0,4. Vierundzwanzig Stellen decken jeden Zustand ab und
|
||||
kosten zusammen weniger als eine Sekunde. */
|
||||
const gesehen = new Set();
|
||||
for (let p = 0; p < 24; p++) {
|
||||
await cdp.werte(`window.animSetzen(${a.i}, ${p / 24})`);
|
||||
const f = await cdp.werte("window.TEXT_PRUEFUNG ? window.TEXT_PRUEFUNG() : []");
|
||||
(f || []).forEach(w => gesehen.add(w));
|
||||
}
|
||||
if (gesehen.size)
|
||||
throw new Error(`${a.key}: Umlaut fehlt bei ${[...gesehen].join(", ")}. ` +
|
||||
"Wenn das Wort so richtig ist, gehoert es in UMLAUT_ERLAUBT.");
|
||||
|
||||
const ordner = await mkdtemp(path.join(tmpdir(), "postgrid-bilder-"));
|
||||
process.stdout.write(` ${a.key}: ${anzahl} Bilder `);
|
||||
for (let n = 0; n < anzahl; n++) {
|
||||
|
||||
Reference in new issue
Block a user