diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/eu/mulk/aendggner/AendGgner.java | 8 | ||||
| -rw-r--r-- | src/main/java/eu/mulk/aendggner/Pipeline.java | 25 |
2 files changed, 29 insertions, 4 deletions
diff --git a/src/main/java/eu/mulk/aendggner/AendGgner.java b/src/main/java/eu/mulk/aendggner/AendGgner.java index a12515a..58b0d50 100644 --- a/src/main/java/eu/mulk/aendggner/AendGgner.java +++ b/src/main/java/eu/mulk/aendggner/AendGgner.java @@ -12,6 +12,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; +import java.util.ArrayList; import java.util.EnumMap; import java.util.List; import java.util.concurrent.Callable; @@ -129,12 +130,11 @@ public class AendGgner implements Callable<Integer> { } if (extractOnly) { - var gesetz = Pipeline.ladeStammgesetz(baseFile); - var extraktor = new PatchTextExtraktor(Pipeline.superskriptModus(gesetz)); + var quellen = new ArrayList<Quelle>(); for (var file : patches) { - var text = extraktor.extrahiere(file); - System.out.println(raw ? text : TextBereiniger.bereinige(text)); + quellen.add(Quelle.lies(file)); } + System.out.print(Pipeline.extrahiereText(Quelle.lies(baseFile), quellen, raw)); return 0; } diff --git a/src/main/java/eu/mulk/aendggner/Pipeline.java b/src/main/java/eu/mulk/aendggner/Pipeline.java index 76b492f..7949e7f 100644 --- a/src/main/java/eu/mulk/aendggner/Pipeline.java +++ b/src/main/java/eu/mulk/aendggner/Pipeline.java @@ -275,6 +275,31 @@ public final class Pipeline { return dokument.kopf().art().istEntwurfsfassung(); } + /** + * Der Text der Änderungsdokumente, so wie das Erzeugnis ihn liest — der Notausgang des § 6 Absatz + * 2 des Handbuchs. + * + * <p>Bleibt die PDF-Aufbereitung im Einzelfall fehlerhaft, so ist nicht das Ergebnis zu + * beargwöhnen, sondern der Text nachzusehen, von Hand zu berichtigen und als Klartextdatei wieder + * einzuspeisen. Dass dieser Weg beiden Fassungen offensteht, ist kein Zierat: Wer im Browser + * arbeitet, hat sonst keine Möglichkeit, einem unerklärlichen Rest auf den Grund zu gehen. + * + * <p>Das Stammgesetz wird auch hier gebraucht, denn seine Schreibweise bestimmt den + * Superskriptmodus der Textgewinnung ({@link #superskriptModus}). + * + * @param roh die Bereinigung übergehen; nur zur Fehlersuche an der Textgewinnung selbst. + */ + public static String extrahiereText(Quelle baseFile, List<Quelle> patches, boolean roh) + throws Exception { + var extraktor = new PatchTextExtraktor(superskriptModus(ladeStammgesetz(baseFile))); + var text = new StringBuilder(); + for (var patch : patches) { + var roher = extraktor.extrahiere(patch); + text.append(roh ? roher : TextBereiniger.bereinige(roher)).append('\n'); + } + return text.toString(); + } + /** Bequemlichkeit für Befehlszeile und Tests; im Browser gibt es keine {@link Path}e. */ static Gesetz ladeStammgesetz(Path baseFile) throws Exception { return ladeStammgesetz(Quelle.lies(baseFile)); |
