aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2026-08-27 07:26:13 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2026-08-27 07:26:13 +0200
commiteb998fbfc324151b0b712adb37525caf2320211e (patch)
treedee2017ef67e5952f81f492c90278c7525cd6eca /src/main/java
parent036fb101bbc92e88e2b0e99d04ed827b96afd927 (diff)
Mecklenburg-Vorpommern wählt seinen Artikel aus sechzig
Mecklenburg-Vorpommern tritt als sechzehntes Land hinzu. Sein Gesetzblatt liegt vollständig offen (Jahrgänge ab 2014, rund 440 Hefte); das Portal dagegen ist eine juris-Einseitenanwendung ohne Fassungsliste. Die Vorfassung kommt deshalb aus dem Gesetzblatt selbst: Nennt der Einleitungssatz die Stammvorschrift ohne jede frühere Änderung, so ist die Ursprungsfassung beweisbar die Vorfassung. Der Fall — Artikel 44 des Besoldungsanpassungsgesetzes vom 8. Juli 2026, der die Ausbildungs- und Prüfungsordnung amtstierärztlicher Dienst ändert — prüft die Artikelwahl schärfer als jeder bisherige: Das Heft trägt ein Mantelgesetz mit rund sechzig Artikeln, von denen jeder ein anderes Werk ändert. Er prüft ferner die Inhaltsübersicht als eigene Norm, deren Angabe zu § 10 der erste und deren Überschrift der siebte Befehl ändert. Zwei Ergänzungen waren nötig: die Muster für Kolumnentitel und Seitenfuß des Blattes (beide stehen im Inhaltsstrom, mitten im Befehlstext) und die Nebenform „die Angabe zu § 10 wird durch die folgende Angabe ersetzt“. Die vier liegen gebliebenen Befehle betreffen sämtlich die Anlagen, die die Stammfassung als Tabellen und Vordrucke nicht mitführt. Eine Nachfassung gibt es nicht: Der Artikel tritt erst am 1. September 2026 in Kraft, weshalb die Gesamtausgabe des Portals noch die Vorfassung ist — sie hat dieser als Gegenprobe gedient. Geprüft: mvnw verify (430 Testfälle) und reuse lint (207/207) gehen durch; der neue Akzeptanzfall pinnt die Wahl des Artikels 44, 24 gelesene und 20 angewandte Befehle. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Change-Id: Ic7f04bbd6326f2e34e50fab5b67eb8b2db346410
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/eu/mulk/aendggner/aenderung/parse/BefehlErkenner.java5
-rw-r--r--src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java15
2 files changed, 19 insertions, 1 deletions
diff --git a/src/main/java/eu/mulk/aendggner/aenderung/parse/BefehlErkenner.java b/src/main/java/eu/mulk/aendggner/aenderung/parse/BefehlErkenner.java
index 35afabf..dc12398 100644
--- a/src/main/java/eu/mulk/aendggner/aenderung/parse/BefehlErkenner.java
+++ b/src/main/java/eu/mulk/aendggner/aenderung/parse/BefehlErkenner.java
@@ -424,10 +424,13 @@ final class BefehlErkenner {
"^In der Inhaltsübersicht (?:wird|werden) die Angaben? "
+ "(?:zu den |zu der |zu |zur |zum |von )?(?!«)(.+?) gestrichen\\.$");
+ // Neben „wie folgt gefasst“ auch „durch die folgende Angabe ersetzt“ (GVOBl. M-V) — dieselbe
+ // Anweisung in der Wortwahl, die das Handbuch der Rechtsförmlichkeit für Ersetzungen vorsieht.
private static final Pattern INHALTSUEBERSICHT_NEUFASSUNG =
Pattern.compile(
"^In der Inhaltsübersicht (?:wird|werden) die Angaben? "
- + "(?:zu den |zu der |zu |zur |zum |von )?(?!«)(.+?) wie folgt gefasst: "
+ + "(?:zu den |zu der |zu |zur |zum |von )?(?!«)(.+?) "
+ + "(?:wie folgt gefasst|durch (?:die )?folgende[nrs]? Angaben? ersetzt): "
+ Z
+ "\\.?$");
diff --git a/src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java b/src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java
index e5021a0..4a52a70 100644
--- a/src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java
+++ b/src/main/java/eu/mulk/aendggner/aenderung/parse/TextBereiniger.java
@@ -322,6 +322,19 @@ public final class TextBereiniger {
"[ \\t]*Nr\\. \\d+ Gesetzblatt der Freien Hansestadt Bremen"
+ " vom \\d{1,2}\\. \\p{L}+ \\d{4}[ \\t]*\\d{0,4}[ \\t]*");
+ // GVOBl. M-V: Kolumnentitel und Seitenfuß stehen gleichfalls im Inhaltsstrom, und zwar mitten
+ // im Befehlstext („Die Überschrift wird durch die folgende Überschrift ersetzt: Tag der Ausgabe:
+ // Schwerin, den 21. Juli 2026 741Nr. 21 „§ 10 …““). Die Seitenzahl klebt dabei am „Nr.“ der
+ // Heftnummer.
+ private static final Pattern GVOBL_MV_KOPF =
+ Pattern.compile(
+ "[ \\t]*(?:Nr\\. \\d+[ \\t]+)?Tag der Ausgabe: \\p{L}+, den"
+ + " \\d{1,2}\\. \\p{L}+ \\d{4}[ \\t]*\\d{0,4}[ \\t]*(?:Nr\\. \\d+)?[ \\t]*");
+ private static final Pattern GVOBL_MV_FUSS =
+ Pattern.compile(
+ "[ \\t]*\\d{1,4}[ \\t]+Gesetz- und Verordnungsblatt für Mecklenburg-Vorpommern"
+ + " \\d{4}[ \\t]+Nr\\. \\d+[ \\t]*");
+
// Die Blattzählung des GBl. BW („Seite 2 von 7“) steht im Inhaltsstrom mitunter für sich allein,
// getrennt vom übrigen Seitenfuß, und zwar zwischen zwei Gliederungspunkten — sie hinge sonst dem
// vorangehenden Befehl an und machte ihn unkenntlich.
@@ -378,6 +391,8 @@ public final class TextBereiniger {
text = GBL_BW_FUSS.matcher(text).replaceAll("\n");
text = GVBL_RP_FUSS.matcher(text).replaceAll("\n");
text = GBL_HB_KOPF.matcher(text).replaceAll("\n");
+ text = GVOBL_MV_KOPF.matcher(text).replaceAll("\n");
+ text = GVOBL_MV_FUSS.matcher(text).replaceAll("\n");
var zeilen = entferneKolumnentitel(zerlegeInZeilen(text));
var verbunden = verbindeUmbrueche(zeilen);
// Falsch-positive markerlose Zusammenzüge („durch“ + „die“ → „durchdie“) reparieren — die