= ÄndGgner -- Programmbibliothek zur Konsolidierung von Änderungsgesetzen des Bundes und der Länder
Matthias Andreas Benkard
// Meta
:experimental:
:data-uri:
:sectnums:
:toc:
:stem:
:toclevels: 2
:description: ÄndGgner Manual
:keywords: mulk
// Settings
:icons: font
:source-highlighter: pygments


== Resources

|===
|Resource |Links

|Public Artifact
|https://bintray.com/mulk/maven/aendggner[Bintray]

|Bug Tracker
|MantisBT
|===


[[building]]
== Building a JAR

To build an executable JAR at `target/aendggner-${REVISION}.jar`:

[source,shell script]
----
./mvnw package
----

`${REVISION}` defaults to `0.1.0-SNAPSHOT` unless you override it by
passing the `-Drevision` flag to `mvnw`.


== Running the Command Line Application

To run the command line application after <<building,building>> it:

[source,shell script]
----
./mvnw exec:java
----


[[usage]]
== Usage

ÄndGgner erzeugt aus einem Stammgesetz und einem Änderungsgesetz eine
zweispaltige HTML-Synopse (alte Fassung links, neue rechts, Änderungen
wortweise hervorgehoben).

Eingaben:

* Stammgesetz: XML im gii-norm-Format von
  https://www.gesetze-im-internet.de/[gesetze-im-internet.de]
* Änderungsgesetz: BGBl-PDF oder Klartext

[source,shell script]
----
java -jar target/aendggner-0.1.0-SNAPSHOT.jar \
  stammgesetz.xml aenderungsgesetz.pdf -o synopse.html
----

Wichtige Optionen:

`-o, --output <file>`::
  Ausgabedatei (Default `synopse.html`; `-` = Standardausgabe).
`--vollstaendig`::
  Auch unveränderte Normen in die Synopse aufnehmen.
`--artikel <n>`::
  Nur diesen Artikel des Änderungsgesetzes anwenden (Default: alle
  Artikel, deren Einleitung das Stammgesetz nennt).
`--extract-only`::
  Nur den bereinigten Lineartext des Änderungsgesetzes ausgeben. Nützlich,
  wenn die PDF-Extraktion fehlerhaft ist: Text prüfen, von Hand
  korrigieren und als Klartextdatei wieder einspeisen.

Erkannt werden die gebräuchlichsten Änderungsbefehle des Handbuchs der
Rechtsförmlichkeit (Ersetzen, Neufassung, Einfügen, Anfügen, Aufheben,
Streichen, Umnummerierung). Alles andere — etwa Bereichsbefehle wie
„Die Absätze 2 bis 4 werden …“ — landet mit Begründung im Abschnitt
*Manuell prüfen* der Synopse und wird niemals stillschweigend verworfen.


== Running the Tests

To build and run the tests:

[source,shell script]
----
./mvnw verify
----
