aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add tests, usage documentation, and .claude/ to .gitignore.Matthias Andreas Benkard2026-07-1311-0/+1188
| | | | | | | | | | | | 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
* Implement the synopsis pipeline for amendment acts.Matthias Andreas Benkard2026-07-1324-35/+3187
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Modernize build: Java 21, Tika 3, PDFBox 3, JUnit 5.Matthias Andreas Benkard2026-07-138-727/+495
| | | | | | | | | | | | | | 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
* Configure Tika correctly.Matthias Andreas Benkard2020-12-065-17/+175
| | | | | | | | | With the new configuration, Tika can now extract text from PDFs and XML documents. Also configures logging for the application. Change-Id: I7a89c2b232ed4e220665dd335a5f5a0cc3ef2994
* Add Apache Tika, remove iText7.Matthias Andreas Benkard2020-11-233-23/+47
| | | | Change-Id: I9736779cf57050a1dfd43d18625eb464a7179a9f
* Modularize, avoid shade plugin by default.Matthias Andreas Benkard2020-11-233-11/+40
| | | | Change-Id: I704d78b7553f057f73e1387078623d8fe5d0b154
* Define CLI arguments.Matthias Andreas Benkard2020-11-221-1/+13
| | | | Change-Id: I37d6cbb000df63013277fe4628cdb6570d68101a
* Add dependencies for PDF processing and terminal manipulation.Matthias Andreas Benkard2020-11-221-0/+41
| | | | Change-Id: Ie6bb3a9e77390b31bddfac657296c99a95c6af8d
* Project skeletonMatthias Andreas Benkard2020-11-2212-0/+1596
| | | | Change-Id: I5609adfca13ffad643a3db93e848fc01636b066a
* Initial empty repositoryMatthias Benkard2020-11-220-0/+0