aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/eu/mulk/aendggner/AendGgner.java8
-rw-r--r--src/main/java/eu/mulk/aendggner/Pipeline.java25
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));