TASKS Phase 1 (abgeschlossen). Warnungen sind jetzt maschinenlesbare Objekte
{type, line, ...data} statt vorformatierter Strings: der Renderer emittiert
{type:'mixedGate', line, label}; src/warnings.js `formatWarning(w, t)` macht
daraus an EINER Stelle den lokalisierten, HTML-escapten Anzeigetext. Damit sind
Typ und Zeilennummer sortier-/filter-/testbar, und Phase 2 (unbekannte
Statuszeichen -> {type:'unknownStatus', line, code}) dockt ohne Formatstreuung an.
tests/warnings.test.js + Mixed-Gate-Test im Renderer (29 Tests grün).
Ende-zu-Ende im Browser verifiziert (lokalisierte Warnung mit Zeile + Label).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
27 lines
1.1 KiB
JavaScript
27 lines
1.1 KiB
JavaScript
/* Vereinheitlichtes Warnungs-Modell.
|
|
Producer (Renderer, künftig auch Parser) liefern strukturierte Objekte
|
|
{ type, line, ...data }
|
|
statt fertig formatierter Strings — so bleiben Typ und Zeilennummer
|
|
maschinenlesbar (sortierbar, filterbar, testbar). Die i18n-/HTML-Aufbereitung
|
|
passiert an genau einer Stelle: formatWarning(). Vgl. SPEC §3 (gemischte
|
|
Gates) und TASKS Phase 2 (unbekannte Statuszeichen).
|
|
|
|
Bekannte Typen:
|
|
- mixedGate { line, label } — Geschwister mit gemischtem Gate (SPEC §3)
|
|
- unknownStatus { line, code } — unbekanntes Statuszeichen (Phase 2) */
|
|
|
|
import { esc } from './render.js';
|
|
|
|
/* Strukturierte Warnung -> lokalisierter Anzeigetext (HTML-escaped Daten).
|
|
`t` ist die i18n-Funktion (key, vars) -> String. */
|
|
export function formatWarning(w, t){
|
|
switch(w.type){
|
|
case 'mixedGate':
|
|
return t('mixedWarn', {line: w.line, label: esc(w.label)});
|
|
case 'unknownStatus':
|
|
return t('unknownStatusWarn', {line: w.line, code: esc(w.code)});
|
|
default:
|
|
return `${esc(String(w.type))} (${w.line ?? '?'})`;
|
|
}
|
|
}
|