Compare commits
2 Commits
36e328915e
...
e02b77e1e4
| Author | SHA1 | Date | |
|---|---|---|---|
| e02b77e1e4 | |||
| c74e36d8af |
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user