aboutsummaryrefslogtreecommitdiff
path: root/src/wasm/java
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2026-08-24 07:37:17 +0200
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2026-08-24 07:44:51 +0200
commit9feaf3b9eebd79a37a252c2ffdf241f4190b2637 (patch)
tree3775b5196b2a50d2d6dc200b6211851265d248aa /src/wasm/java
parente13b58a5e3b602b475c46e6d595749d375148836 (diff)
Der Browser bekommt den Notausgang, den die Befehlszeile schon hatte
Die Browserfassung galt als die vollwertige zweite Fassung des Erzeugnisses. Zwei Angaben der Befehlszeile fehlten ihr aber: die Beschränkung auf einen einzelnen Artikel und die Ausgabe des maschinell gelesenen Textes. Die erste war im Vordruck nicht vorgesehen, obwohl Arbeiter und Rechenwerk den Wert längst durchreichten — das Formular sandte an ihrer Stelle hart einen leeren Wert. Die zweite war überhaupt nicht erreichbar. Das Fehlende wiegt ungleich. Die Artikelangabe erspart Mühe; die Textausgabe dagegen ist der einzige Weg, einem unerklärlich unangewandten Befehl auf den Grund zu gehen. Wer im Browser arbeitete, stand vor einem Ergebnis, das er nicht nachprüfen konnte, und war auf die Befehlszeile verwiesen — also gerade auf das, was die Browserfassung entbehrlich machen sollte. Die Textgewinnung wandert deshalb aus der Befehlszeilenklasse in den gemeinsamen Kern (Pipeline.extrahiereText); beide Fassungen nehmen fortan denselben Weg. Der Vordruck erhält das Feld „Anzuwendender Artikel“ und das Ankreuzfeld „Statt der Synopse nur den maschinell gelesenen Text der Änderungsdokumente ausgeben“; das Ergebnis kommt wie die Synopse als Verweis zum Öffnen und Sichern. Nebenbei verträgt die Umsetzung nach Wahrheitswerten nun ein nicht gesetztes Feld, das als „undefined“ herüberkommt. Das Handbuch zählt die Absätze des § 14 wieder fortlaufend — es führte (6) und (7) zweimal — und stellt die Angaben des Vordrucks den Schaltern des § 6 Absatz 2 gegenüber. Eine neue Prüfung hält die Ausgabe des Notausgangs gegen den Text, den der Parser bekommt: Führte sie einen anderen vor, so wiese sie in die Irre. Der Prüfbestand umfasst hiernach 335 Prüfungen, sämtlich grün; REUSE meldet 174/174. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Change-Id: I2a9aee042b6454f8d591bc415a5c6f1c1e7b40b6
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;
}