Compare commits

..

2 Commits

Author SHA1 Message Date
e02b77e1e4 fix: temml prelude
All checks were successful
build / build (push) Successful in 4s
2026-03-24 16:53:14 -06:00
c74e36d8af fix: throw when temml output is not string 2026-03-24 16:52:41 -06:00

View File

@@ -17,13 +17,17 @@
(def ^:dynamic *worker*) (def ^:dynamic *worker*)
(def ^:private prelude-file ;; 외부의 브로그램이 JVM resource를 사용 위해서 파일 시스템에서 써야
(fs/create-temp-file {:prefix "doerg-prelude-" ;; 합니다.
:suffix ".tex"})) (defonce ^:private prelude-file
(-> (fs/create-temp-file {:prefix "doerg-prelude-"
:suffix ".tex"})
fs/file))
(defn worker [] (defn worker []
(let [doerg-temml-worker (-> cfg/*cfg* ::doerg/doerg-temml-worker)] (let [doerg-temml-worker (-> cfg/*cfg* ::doerg/doerg-temml-worker)]
(when-not (fs/exists? prelude-file) (when (or (not (fs/exists? prelude-file))
(zero? (fs/size prelude-file)))
(-> "net/deertopia/doerg/prelude.tex" (-> "net/deertopia/doerg/prelude.tex"
io/resource io/resource
io/input-stream io/input-stream
@@ -55,7 +59,11 @@
(defn command-worker [x] (defn command-worker [x]
(cbor/encode cbor/default-codec (:in *worker*) x) (cbor/encode cbor/default-codec (:in *worker*) x)
(.flush (:in *worker*)) (.flush (:in *worker*))
(cbor/decode cbor/default-codec (:out *worker*))) (let [r (cbor/decode cbor/default-codec (:out *worker*))]
(if (string? r)
r
(throw (ex-info "bad data from temml worker"
{:data r})))))
(defn render-inline [s] (defn render-inline [s]
(command-worker s)) (command-worker s))