diff options
| author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2026-08-24 20:34:59 +0200 |
|---|---|---|
| committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2026-08-24 20:34:59 +0200 |
| commit | b682c225ab39859b6488ad2c327c6a67bbaf5b50 (patch) | |
| tree | 55a8b8f3414eff9f2c0d5172a6b0f85412fca8ed /src/wasm | |
| parent | 3d40c583308d3f26501a53547e6294dc2db20854 (diff) | |
Ein Gesetz tritt nicht notwendig auf einen Schlag in Kraft
Das Dritte UWG-Änderungsgesetz lässt seinen Artikel 1 Nummer 2 Buchstabe c
am 19. Juni 2026 wirksam werden und alles Übrige erst am 27. September; das
Infektionsschutz-Änderungsgesetz von 2020 ändert dasselbe Stammgesetz in zwei
Artikeln zu zwei Zeitpunkten. Wer alle Befehle zugleich anwendet, erhält dort
eine Fassung, die an keinem einzigen Tag gegolten hat. Genau das tat ÄndGgner
bisher, und zwar schweigend — die auffälligste Stelle, an der ein Werkzeug, das
nie stillschweigend verwerfen will, doch etwas verschwieg.
Der Schlussartikel wird jetzt gelesen. Die Artikelwahl erfasst ihn nicht, denn er
trägt weder Änderungsformel noch Stammgesetz; maßgeblich ist der erste Artikel
hinter dem letzten ändernden, damit in einem Gesetzblatt mit mehreren Gesetzen
jedes seine eigene Schlussvorschrift bekommt. Erkannt werden die Grundregel, der
Vorbehalt zugunsten späterer Absätze, die abweichende Anordnung für Artikel,
Nummern, Buchstaben und Doppelbuchstaben sowie die Rückwirkung („mit Wirkung
vom“). Nennt der Wortlaut kein Datum, sondern die Verkündung, so wird keines
erfunden: Der Verkündungstag steht nicht im Gesetzestext.
Zugeordnet wird über die Herkunft des Befehls — Artikel und Gliederungspfad —,
und es gewinnt die besonderste Anordnung. Mit --stichtag (im Vordruck: „Stichtag“)
ergibt sich die an jenem Tag geltende Fassung; was noch nicht galt, bleibt
unangewandt und steht für sich, nicht unter den Gründen des Scheiterns. Ohne
Stichtag bleibt es beim vollen Bestand, aber die Staffelung wird gerügt.
Geprüft: 348 Tests (339 + 6 Einheitstests des Lesers + 3 Belegfälle), REUSE
180/180. UWG 1/19 Befehle am 19. Juni gegen 19/19 am 27. September, GEG 115 gegen
116, IfSG 65 gegen 75 — jeweils ohne Zuwachs an manuellen Resten.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Change-Id: I887f233c72a4e49b69f9ede3154dcadd704fb0c3
Diffstat (limited to 'src/wasm')
| -rw-r--r-- | src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java b/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java index c318f86..6d7a664 100644 --- a/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java +++ b/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java @@ -4,6 +4,7 @@ package eu.mulk.aendggner.wasm; import eu.mulk.aendggner.Pipeline; import eu.mulk.aendggner.Quelle; +import java.time.LocalDate; import java.util.ArrayList; import java.util.Base64; import java.util.List; @@ -22,10 +23,10 @@ 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, - * vollstaendig, nurText}</code> und liefert <code>{html, angewandt, manuell, normen}</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. + * stichtag, vollstaendig, nurText}</code> und liefert <code>{html, angewandt, manuell, + * normen}</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. * * <p>Der Dateiinhalt wandert als Base64-Text über die Grenze, nicht als {@code Uint8Array}: Die * Umsetzung typisierter Felder nach {@code byte[]} ist in Web Image derzeit defekt („byteArrayHub @@ -70,6 +71,7 @@ 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"))); if (Boolean.TRUE.equals(wahrheitswert(eingabe.get("nurText")))) { @@ -85,7 +87,8 @@ public final class BrowserMain { stamm, List.copyOf(patches), artikel == null || artikel.isBlank() ? null : artikel, - vollstaendig); + vollstaendig, + stichtag == null || stichtag.isBlank() ? null : LocalDate.parse(stichtag.strip())); // Java-Werte kämen auf der JS-Seite als undurchsichtige Proxys an; JSString/JSNumber // erzeugen echte JS-Werte. |
