diff options
| author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2026-08-25 22:25:21 +0200 |
|---|---|---|
| committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2026-08-25 22:25:21 +0200 |
| commit | 22f19c3afc4d51d7714647c5635bb068cf32d433 (patch) | |
| tree | e132af3ba56250ee03a0382bbb79f63d45eeeeda /src/wasm/java/eu | |
| parent | 86a16e6e6e71a883708652bf623e51099707ea04 (diff) | |
Das Erzeugnis gibt seine Fassung heraus und prüft sie selbst
Zwei Leistungen fehlten, die das Werkzeug längst erbringen konnte, aber nicht
herausgab.
Die erste ist die fortgeschriebene Fassung. Der Schalter --neufassung schreibt
sie als kanonischen Klartext; damit steht die Kette: Die Ausgabe des ersten
Laufes ist das Stammgesetz des zweiten, und eine konsolidierte Fassung lässt sich
aus dem Stammheft und den Änderungsheften zusammensetzen, wo kein Portal sie
fertig liefert. Für Thüringen ist das von Hand geschehen.
Die zweite ist der Abgleich. Ob ein Lauf gelungen ist, entscheidet nicht die Zahl
der angewandten Befehle, sondern der Wortlaut hinterher — und dieser Maßstab
stand bislang allein im Testcode. Wer ein Land erschloss, musste die Prüfung ein
zweites Mal schreiben. Der Schalter --nachfassung nimmt die amtliche Fassung
entgegen, weist fehlende, überzählige und abweichende Normen aus, zeigt die
Abweichung in der Synopse wortweise und endet bei einem Fehlschlag mit dem
Rückgabewert 3. Denselben Abgleich fahren fortan die Akzeptanzprüfungen; vier
handgeschriebene Vergleichsschleifen weichen ihm. Die Überschrift zählt dabei zum
Wortlaut, denn auf sie zielen eigene Befehle — der Korpus trägt diese Verschärfung
ohne einen einzigen Rückfall.
Statt einer sechsten und siebten Fassung der Signatur tritt ein Auftrags-Record
an die Stelle der Überladungsleiter der Pipeline. Die Browserfassung bekommt
beides: ein Dateifeld für die Nachfassung und ein Ankreuzfeld für die
Textausgabe, beide hinter der Klappe „Weitere Angaben“.
Der Rundlauf hat dabei einen zweiten Mangel des Lesers zutage gefördert. Das
Bundesrecht führt aufgehobene Paragraphen unter einer Sammelbezeichnung („§§ 17
u. 18“, Titel „(weggefallen)“, im gii-XML mit der Platzhalterkennung „(XXXX)“).
Der kanonische Klartext kannte diese Kopfzeile nicht; sie wäre in den Wortlaut
der Vornorm gefallen und hätte ihn verfälscht. Ohne sie könnte der Klartext kein
Bundesgesetz tragen, und die Kette endete beim Bund.
Geprüft: 375 Tests (zuvor 373); Berlin gibt 171 von 171 Normen gleich aus, und
die für das UWG ausgegebene Fassung ergibt wieder eingelesen dieselbe.
Change-Id: Ie3c45e18b561175fe6dd0033c46d3bed69e415bc
Diffstat (limited to 'src/wasm/java/eu')
| -rw-r--r-- | src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java b/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java index a1fc180..a7a26b6 100644 --- a/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java +++ b/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java @@ -23,8 +23,9 @@ import org.graalvm.webimage.api.JSValue; * damit dieselbe {@link Pipeline} auf wie Befehlszeile und Tests. * * <p>Erwartet ein JS-Objekt <code>{stamm: {name, base64}, patches: [{name, base64}], artikel, - * stichtag, vollstaendig, nurText}</code> und liefert <code>{html, angewandt, manuell, - * normen}</code> — bei <code>nurText</code> stattdessen <code>{text}</code> — oder <code>{fehler} + * stichtag, vollstaendig, nachfassung, nurText}</code> und liefert <code>{html, angewandt, + * manuell, normen, neufassung, abgleich}</code> — bei <code>nurText</code> stattdessen <code>{text} + * </code> — oder <code>{fehler} * </code> zurück. Geworfen wird nichts: Eine Ausnahme im Wasm hinterlässt auf der JS-Seite nur * einen unlesbaren Stapel, also wird jeder Fehler als Text zurückgereicht. * @@ -73,6 +74,8 @@ public final class BrowserMain { var artikel = text(eingabe.get("artikel")); var stichtag = text(eingabe.get("stichtag")); var vollstaendig = Boolean.TRUE.equals(wahrheitswert(eingabe.get("vollstaendig"))); + var nachfassungsDatei = eingabe.get("nachfassung"); + var nachfassung = nachfassungsDatei == null ? null : quelle(nachfassungsDatei); if (Boolean.TRUE.equals(wahrheitswert(eingabe.get("nurText")))) { // Der Notausgang der Befehlszeile (--extract-only) steht auch hier offen: Wer einem Rest @@ -84,11 +87,14 @@ public final class BrowserMain { var ergebnis = Pipeline.erzeugeSynopse( - stamm, - List.copyOf(patches), - artikel == null || artikel.isBlank() ? null : artikel, - vollstaendig, - stichtag == null || stichtag.isBlank() ? null : LocalDate.parse(stichtag.strip())); + Pipeline.Auftrag.von(stamm, List.copyOf(patches)) + .mitArtikel(artikel == null || artikel.isBlank() ? null : artikel) + .mitVollstaendig(vollstaendig) + .mitStichtag( + stichtag == null || stichtag.isBlank() + ? null + : LocalDate.parse(stichtag.strip())) + .mitNachfassung(nachfassung)); // Java-Werte kämen auf der JS-Seite als undurchsichtige Proxys an; JSString/JSNumber // erzeugen echte JS-Werte. @@ -96,6 +102,12 @@ public final class BrowserMain { antwort.set("angewandt", JSNumber.of(ergebnis.anzahlAngewandt())); antwort.set("manuell", JSNumber.of(ergebnis.anzahlManuell())); antwort.set("normen", JSNumber.of(ergebnis.anzahlGeaenderteNormen())); + // Die fortgeschriebene Fassung geht stets mit heraus; die Seite bietet sie zum Sichern an. + // Wer im Browser arbeitet, hat sonst keinen Weg, die Kette Heft auf Heft zu schließen. + antwort.set("neufassung", JSString.of(ergebnis.neufassung())); + if (ergebnis.abgleich() != null) { + antwort.set("abgleich", JSString.of(ergebnis.abgleich().kurzbericht())); + } } catch (Throwable e) { e.printStackTrace(); var meldung = e.getMessage(); |
