aboutsummaryrefslogtreecommitdiff
path: root/src/wasm
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm')
-rw-r--r--src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java b/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java
index a1fc180..a7a26b6 100644
--- a/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java
+++ b/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java
@@ -23,8 +23,9 @@ import org.graalvm.webimage.api.JSValue;
* damit dieselbe {@link Pipeline} auf wie Befehlszeile und Tests.
*
* <p>Erwartet ein JS-Objekt <code>{stamm: {name, base64}, patches: [{name, base64}], artikel,
- * stichtag, vollstaendig, nurText}</code> und liefert <code>{html, angewandt, manuell,
- * normen}</code> — bei <code>nurText</code> stattdessen <code>{text}</code> — oder <code>{fehler}
+ * stichtag, vollstaendig, nachfassung, nurText}</code> und liefert <code>{html, angewandt,
+ * manuell, normen, neufassung, abgleich}</code> — bei <code>nurText</code> stattdessen <code>{text}
+ * </code> — oder <code>{fehler}
* </code> zurück. Geworfen wird nichts: Eine Ausnahme im Wasm hinterlässt auf der JS-Seite nur
* einen unlesbaren Stapel, also wird jeder Fehler als Text zurückgereicht.
*
@@ -73,6 +74,8 @@ public final class BrowserMain {
var artikel = text(eingabe.get("artikel"));
var stichtag = text(eingabe.get("stichtag"));
var vollstaendig = Boolean.TRUE.equals(wahrheitswert(eingabe.get("vollstaendig")));
+ var nachfassungsDatei = eingabe.get("nachfassung");
+ var nachfassung = nachfassungsDatei == null ? null : quelle(nachfassungsDatei);
if (Boolean.TRUE.equals(wahrheitswert(eingabe.get("nurText")))) {
// Der Notausgang der Befehlszeile (--extract-only) steht auch hier offen: Wer einem Rest
@@ -84,11 +87,14 @@ public final class BrowserMain {
var ergebnis =
Pipeline.erzeugeSynopse(
- stamm,
- List.copyOf(patches),
- artikel == null || artikel.isBlank() ? null : artikel,
- vollstaendig,
- stichtag == null || stichtag.isBlank() ? null : LocalDate.parse(stichtag.strip()));
+ Pipeline.Auftrag.von(stamm, List.copyOf(patches))
+ .mitArtikel(artikel == null || artikel.isBlank() ? null : artikel)
+ .mitVollstaendig(vollstaendig)
+ .mitStichtag(
+ stichtag == null || stichtag.isBlank()
+ ? null
+ : LocalDate.parse(stichtag.strip()))
+ .mitNachfassung(nachfassung));
// Java-Werte kämen auf der JS-Seite als undurchsichtige Proxys an; JSString/JSNumber
// erzeugen echte JS-Werte.
@@ -96,6 +102,12 @@ public final class BrowserMain {
antwort.set("angewandt", JSNumber.of(ergebnis.anzahlAngewandt()));
antwort.set("manuell", JSNumber.of(ergebnis.anzahlManuell()));
antwort.set("normen", JSNumber.of(ergebnis.anzahlGeaenderteNormen()));
+ // Die fortgeschriebene Fassung geht stets mit heraus; die Seite bietet sie zum Sichern an.
+ // Wer im Browser arbeitet, hat sonst keinen Weg, die Kette Heft auf Heft zu schließen.
+ antwort.set("neufassung", JSString.of(ergebnis.neufassung()));
+ if (ergebnis.abgleich() != null) {
+ antwort.set("abgleich", JSString.of(ergebnis.abgleich().kurzbericht()));
+ }
} catch (Throwable e) {
e.printStackTrace();
var meldung = e.getMessage();