| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
| |
The Infektionsschutzgesetz as gii-norm XML, EPUB, and PDF (consolidated
as of 2020-11-20, i.e. already including the Art. 1 changes below), the
Drittes Bevoelkerungsschutzgesetz (BGBl. I 2020 S. 2397) as published,
and the Bundestag/Bundesrat drafting documents, with provenance URLs in
SOURCES. Used by the end-to-end smoke test.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Change-Id: I1221734ea3e3dab705151421774151438be1b337
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the full vertical slice from input files to a two-column HTML
synopsis:
* gesetz, gesetz.gii: immutable law model (Gesetz/Norm/Absatz) and an
offline loader for the gii-norm XML format of gesetze-im-internet.de,
flattening DL enumerations, tables, and pre blocks.
* aenderung: amendment command model as a sealed interface with records
(Ersetzung, Neufassung, Einfuegung, Anfuegung, Aufhebung, Streichung,
Umnummerierung), including UnbekannterBefehl as the mandatory
fallback -- unrecognized commands are reported, never dropped.
* aenderung.parse: text extraction (PDFBox in content-stream order for
two-column BGBl PDFs, plain text as escape hatch), BGBl header and
hyphenation cleanup, quote extraction with placeholder substitution
(quoted blocks cannot confuse the command regexes; unbalanced quotes
-- which occur in real BGBl documents -- become warnings), outline
scanning with successor-validated markers (1., a), aa), aa1)), and
the command recognizer with context-frame stacking.
* anwendung: sequential command application with a per-command protocol
(ANGEWANDT / MANUELL_PRUEFEN plus reason), scope resolution down to
sentence/enumeration ranges via a German sentence splitter.
* synopse: norm pairing, word-level diff via java-diff-utils, and a
self-contained HTML renderer with a Manuell-pruefen section.
The CLI gains -o/--output, --vollstaendig, --artikel, --extract-only,
and hidden debug flags (--dump-gesetz, --dump-befehle).
On the IfSG sample (Drittes Bevoelkerungsschutzgesetz, BGBl. I 2020
S. 2397), 63 of 75 commands in Artikel 1 and 2 parse into typed
commands; the remainder are ranges and compound commands that are
deliberately out of scope for v1.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Change-Id: I93ef8ba300f1cac70916722f23c0cefc5f62da2b
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bump all dependencies and plugins to current versions. Replace the
tika-parsers bundle with a direct PDFBox dependency (we need
PDFTextStripper control), add java-diff-utils for the synopsis diff,
and add JUnit 5 with AssertJ for testing. Drop unused dependencies
(tess4j, Lanterna, term4j, sqlite-jdbc, imageio codecs, annotation
libraries) in favour of jspecify. Regenerate the Maven wrapper with
the official plugin (Takari is dead) and remove the vestigial Ant
wrapper and Tika configuration.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Change-Id: I0e1813b3967027cbb0bb978591d345ce138fa0a0
|
| |
|
|
|
|
|
|
|
| |
With the new configuration, Tika can now extract text from PDFs and
XML documents.
Also configures logging for the application.
Change-Id: I7a89c2b232ed4e220665dd335a5f5a0cc3ef2994
|
| |
|
|
| |
Change-Id: I9736779cf57050a1dfd43d18625eb464a7179a9f
|
| |
|
|
| |
Change-Id: I704d78b7553f057f73e1387078623d8fe5d0b154
|
| |
|
|
| |
Change-Id: I37d6cbb000df63013277fe4628cdb6570d68101a
|
|
|
Change-Id: I5609adfca13ffad643a3db93e848fc01636b066a
|