Implement custom deref outside of sci
This commit is contained in:
parent
225c04d784
commit
3764b52f3a
3 changed files with 11 additions and 9 deletions
2
sci
2
sci
|
|
@ -1 +1 @@
|
||||||
Subproject commit 8c8bc8548a608dd0387ef9a9c85352816e3600b8
|
Subproject commit d44c5b792e572ad4f13afeb3abc957272a455fa9
|
||||||
|
|
@ -44,6 +44,7 @@
|
||||||
[sci.core :as sci]
|
[sci.core :as sci]
|
||||||
[sci.impl.namespaces :as sci-namespaces]
|
[sci.impl.namespaces :as sci-namespaces]
|
||||||
[sci.impl.unrestrict :refer [*unrestricted*]]
|
[sci.impl.unrestrict :refer [*unrestricted*]]
|
||||||
|
[sci.impl.utils :refer [ctx-fn]]
|
||||||
[sci.impl.vars :as vars])
|
[sci.impl.vars :as vars])
|
||||||
(:gen-class))
|
(:gen-class))
|
||||||
|
|
||||||
|
|
@ -308,9 +309,15 @@ Use bb run --help to show this help output.
|
||||||
'start-server (fn [& args]
|
'start-server (fn [& args]
|
||||||
(apply server/start-server @common/ctx args))})
|
(apply server/start-server @common/ctx args))})
|
||||||
|
|
||||||
|
(def input-var (sci/new-dynamic-var '*input*))
|
||||||
|
|
||||||
(def namespaces
|
(def namespaces
|
||||||
(cond->
|
(cond->
|
||||||
{'clojure.tools.cli tools-cli-namespace
|
{'user {'*input* (ctx-fn
|
||||||
|
(fn [_ctx]
|
||||||
|
(force @input-var))
|
||||||
|
nil)}
|
||||||
|
'clojure.tools.cli tools-cli-namespace
|
||||||
'clojure.java.shell shell-namespace
|
'clojure.java.shell shell-namespace
|
||||||
'babashka.wait {'wait-for-port wait/wait-for-port
|
'babashka.wait {'wait-for-port wait/wait-for-port
|
||||||
'wait-for-path wait/wait-for-path}
|
'wait-for-path wait/wait-for-path}
|
||||||
|
|
@ -433,7 +440,6 @@ Use bb run --help to show this help output.
|
||||||
Thread java.lang.Thread
|
Thread java.lang.Thread
|
||||||
Throwable java.lang.Throwable})
|
Throwable java.lang.Throwable})
|
||||||
|
|
||||||
(def input-var (sci/new-dynamic-var '*input* nil))
|
|
||||||
(def edn-readers (cond-> {}
|
(def edn-readers (cond-> {}
|
||||||
features/yaml?
|
features/yaml?
|
||||||
(assoc 'ordered/map @(resolve 'flatland.ordered.map/ordered-map))))
|
(assoc 'ordered/map @(resolve 'flatland.ordered.map/ordered-map))))
|
||||||
|
|
@ -716,10 +722,7 @@ Use bb run --help to show this help output.
|
||||||
:namespaces (-> namespaces
|
:namespaces (-> namespaces
|
||||||
(assoc 'clojure.core
|
(assoc 'clojure.core
|
||||||
(assoc core-extras
|
(assoc core-extras
|
||||||
'load-file load-file*))
|
'load-file load-file*)))
|
||||||
(assoc-in ['user (with-meta '*input*
|
|
||||||
(when-not stream?
|
|
||||||
{:sci.impl/deref! true}))] input-var))
|
|
||||||
:env env
|
:env env
|
||||||
:features #{:bb :clj}
|
:features #{:bb :clj}
|
||||||
:classes classes/class-map
|
:classes classes/class-map
|
||||||
|
|
|
||||||
|
|
@ -388,8 +388,7 @@
|
||||||
(is (= "hello" (bb nil "(doto (java.lang.Thread. (fn [] (prn \"hello\"))) (.start) (.join)) nil"))))
|
(is (= "hello" (bb nil "(doto (java.lang.Thread. (fn [] (prn \"hello\"))) (.start) (.join)) nil"))))
|
||||||
|
|
||||||
(deftest dynvar-test
|
(deftest dynvar-test
|
||||||
(is (= 1 (bb nil "(binding [*command-line-args* 1] *command-line-args*)")))
|
(is (= 1 (bb nil "(binding [*command-line-args* 1] *command-line-args*)"))))
|
||||||
(is (= 1 (bb nil "(binding [*input* 1] *input*)"))))
|
|
||||||
|
|
||||||
(deftest file-in-error-msg-test
|
(deftest file-in-error-msg-test
|
||||||
(is (thrown-with-msg? Exception #"error.bb"
|
(is (thrown-with-msg? Exception #"error.bb"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue