aboutsummaryrefslogtreecommitdiff
path: root/src/wasm/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/java')
-rw-r--r--src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java b/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java
index 7df8ecb..c318f86 100644
--- a/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java
+++ b/src/wasm/java/eu/mulk/aendggner/wasm/BrowserMain.java
@@ -22,9 +22,10 @@ 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,
- * vollstaendig}</code> und liefert <code>{html, angewandt, manuell, normen}</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.
+ * vollstaendig, nurText}</code> und liefert <code>{html, angewandt, manuell, normen}</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.
*
* <p>Der Dateiinhalt wandert als Base64-Text über die Grenze, nicht als {@code Uint8Array}: Die
* Umsetzung typisierter Felder nach {@code byte[]} ist in Web Image derzeit defekt („byteArrayHub
@@ -71,6 +72,14 @@ public final class BrowserMain {
var artikel = text(eingabe.get("artikel"));
var vollstaendig = Boolean.TRUE.equals(wahrheitswert(eingabe.get("vollstaendig")));
+ if (Boolean.TRUE.equals(wahrheitswert(eingabe.get("nurText")))) {
+ // Der Notausgang der Befehlszeile (--extract-only) steht auch hier offen: Wer einem Rest
+ // nachgehen will, muss sehen können, was das Erzeugnis gelesen hat.
+ antwort.set(
+ "text", JSString.of(Pipeline.extrahiereText(stamm, List.copyOf(patches), false)));
+ return antwort;
+ }
+
var ergebnis =
Pipeline.erzeugeSynopse(
stamm,
@@ -132,7 +141,8 @@ public final class BrowserMain {
return b;
}
if (wert instanceof JSValue v) {
- return v.asBoolean();
+ // Ein nicht gesetztes Feld kommt als „undefined“ herüber; asBoolean() bräche daran.
+ return "undefined".equals(v.typeof()) ? Boolean.FALSE : v.asBoolean();
}
return Boolean.FALSE;
}