aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
Commit message (Collapse)AuthorAgeFilesLines
* Support multi-target "jeweils" commands and range renumberingMatthias Andreas Benkard2026-07-134-1/+200
| | | | | | | | | | | | Add a Sammelbefehl command that applies one operation to several "und"/"sowie"/comma-coordinated Stellen sharing a common prefix, and resolve "Die bisherigen Absätze X bis Y werden zu den Absätzen X' bis Y'" into descending single renumberings. Parsing gains StellenParser.parseMehrfach; the applier folds sub-commands into one log entry. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Change-Id: Iaa2c7161066d40d0605c00d3b6ca9a08696070e7
* Support the digital BGBl format and bill drafts as inputs.Matthias Andreas Benkard2026-07-134-4/+307
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Bundesgesetzblatt has been published digitally via recht.bund.de since 2023 in a new single-column layout, and pending amendment acts are only available as Referenten-/Regierungsentwuerfe or Bundestag printed papers. Both now work as patch inputs: * PDF extraction filters out small print by font size (two-pass PDFTextStripper): in the new BGBl format, footnote blocks and superscript footnote markers would otherwise land in the middle of the statutory text, even inside quoted passages. * TextBereiniger recognizes the new page headers (BGBl "Seite N von M", draft page markers " - N - ", Bundestag printed-paper headers) and joins markerless end-of-line hyphenation (BT-Drs PDFs break words without a hyphen character; regular wraps carry a trailing space, so its absence is the signal -- gated on the source using the trailing-space convention at all, protecting hand-written plain-text inputs). BMJV draft templates draw the hanging opening quote after the paragraph marker ("(1) „" / "§ 19„"); this inversion is repaired. * Drafts embed the statutory text between a cover sheet and a Begruendung section; article scanning now stops at the Begruendung heading. Articles without numbered items (single-command articles like ProdHaftG-RegE Artikel 2) are parsed from the preamble rest. * Target-law matching is declension-tolerant ("Das Allgemeine Gleichbehandlungsgesetz" matches "Allgemeines Gleichbehandlungsgesetz") via rough word-stem comparison. * New command form StrukturErsetzung ("§ 2 Absatz 2 wird durch die folgenden Absätze 2 und 3 ersetzt"); "durch die folgende Überschrift/den folgenden § N ersetzt" map to Neufassung; plural insertions ("die folgenden Absätze 6 und 7"), triple-letter outline markers (aaa), the compound punctuation replacement ("durch ein Komma und die Wörter ... ersetzt"), and Inhaltsuebersicht-Angaben inside a context frame are recognized. End-to-end smoke tests cover the four new datasets: UWG (new BGBl format, footnote-filter assertion), GEG 2023 ("Heizungsgesetz", 121 commands), AGG (BT-Drs draft against an unconsolidated base -- the first dataset with real diffs, spot-checked against the official BMJV synopsis), and ProdHaftG (draft whose Artikel 1 is a replacement law and only Artikel 2 amends the base). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Change-Id: Id1b12bc0bee4178bd1a5c55b3a83f6e13944af69
* Add tests, usage documentation, and .claude/ to .gitignore.Matthias Andreas Benkard2026-07-138-0/+1064
Unit tests for the gii-norm loader, text cleanup, quote extraction, command recognition (literal sentences from the sample amendment act), sentence splitting, and command application on a synthetic mini law; an HTML renderer test including escaping; and an end-to-end smoke test on the IfSG sample data that skips itself when the (untracked) sample files are absent. The README gains a German usage section. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Change-Id: I7f02ff349f9c3bd34fa90a2a84678b9e6fad697d