blob: f0492228231975da0afd67af11d1621ef154fadd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
(ns mf2clj.core
(:require [clojure.java.io :as io]
[clojure.walk :refer [keywordize-keys]]
[cheshire.core :as json])
(:import [org.extism.sdk.chicory Manifest ManifestWasm Plugin]
[java.nio.charset StandardCharsets]))
(defn- manifest-from-wasm [wasm]
(Manifest/ofWasms (into-array ManifestWasm [wasm])))
(def plugin
(-> "mf2go.wasm" io/resource io/input-stream .readAllBytes
ManifestWasm/fromBytes .build
manifest-from-wasm .build
Plugin/ofManifest .build))
(def charset StandardCharsets/UTF_8)
(defn parse-bytes [html-bytes]
{:pre [(bytes? html-bytes)]}
(-> (.call plugin "parse" html-bytes)
(String. charset)
json/parse-string
keywordize-keys))
(defn parse [^String html-string]
{:pre [(string? html-string)]}
(let [html-bytes (.getBytes html-string charset)]
(parse-bytes html-bytes)))
|