From eb998fbfc324151b0b712adb37525caf2320211e Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Thu, 27 Aug 2026 07:26:13 +0200 Subject: =?UTF-8?q?Mecklenburg-Vorpommern=20w=C3=A4hlt=20seinen=20Artikel?= =?UTF-8?q?=20aus=20sechzig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Change-Id: Ic7f04bbd6326f2e34e50fab5b67eb8b2db346410 --- .../eu/mulk/aendggner/aenderung/parse/BefehlErkenner.java | 5 ++++- .../eu/mulk/aendggner/aenderung/parse/TextBereiniger.java | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'src/main') 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 -- cgit v1.2.1