[#419] data readers
This commit is contained in:
parent
ae1431d160
commit
3f0cd93fc7
4 changed files with 11 additions and 11 deletions
2
sci
2
sci
|
|
@ -1 +1 @@
|
|||
Subproject commit eefb58ef6054638da4986a66fc396a9ecfb58b5c
|
||||
Subproject commit 58b335df281d86e09a2500c566e87fb8014cd1fb
|
||||
|
|
@ -17,6 +17,8 @@
|
|||
(prn (str "Elapsed time: " (/ (double (- (. System (nanoTime)) start#)) 1000000.0) " msecs"))
|
||||
ret#))
|
||||
|
||||
(def data-readers (sci/new-dynamic-var '*data-readers* nil))
|
||||
|
||||
(def core-extras
|
||||
{'file-seq (copy-core-var file-seq)
|
||||
'agent (copy-core-var agent)
|
||||
|
|
@ -31,5 +33,5 @@
|
|||
'time (with-meta time* {:sci/macro true})
|
||||
'Throwable->map (copy-core-var Throwable->map)
|
||||
'compare-and-set! (copy-core-var compare-and-set!)
|
||||
'*data-readers* (sci/new-dynamic-var '*data-readers* nil)
|
||||
'*data-readers* data-readers
|
||||
'xml-seq (copy-core-var xml-seq)})
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
[babashka.impl.cheshire :refer [cheshire-core-namespace]]
|
||||
[babashka.impl.classes :as classes]
|
||||
[babashka.impl.classpath :as cp]
|
||||
[babashka.impl.clojure.core :refer [core-extras]]
|
||||
[babashka.impl.clojure.core :as core :refer [core-extras]]
|
||||
[babashka.impl.clojure.java.io :refer [io-namespace]]
|
||||
[babashka.impl.clojure.java.shell :refer [shell-namespace]]
|
||||
[babashka.impl.clojure.main :as clojure-main :refer [demunge]]
|
||||
|
|
@ -423,7 +423,7 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that
|
|||
(handle-sigint!)
|
||||
(binding [*unrestricted* true]
|
||||
(sci/binding [reflection-var false
|
||||
sci/ns (vars/->SciNamespace 'user nil)]
|
||||
core/data-readers @core/data-readers]
|
||||
(let [{:keys [:version :shell-in :edn-in :shell-out :edn-out
|
||||
:help? :file :command-line-args
|
||||
:expressions :stream?
|
||||
|
|
@ -456,12 +456,6 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that
|
|||
(let [res (cp/source-for-namespace loader namespace nil)]
|
||||
(when uberscript (swap! uberscript-sources conj (:source res)))
|
||||
res)))
|
||||
data-readers (delay (time (when-let [{:keys [:loader]} @cp-state]
|
||||
(prn (cp/getResources
|
||||
loader
|
||||
["data_readers.clj"
|
||||
"data-readers.cljc"] nil)))))
|
||||
;;_ (prn @data-readers)
|
||||
_ (when file (vars/bindRoot sci/file (.getCanonicalPath (io/file file))))
|
||||
;; TODO: pull more of these values to compile time
|
||||
opts {:aliases aliases
|
||||
|
|
@ -490,7 +484,8 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that
|
|||
:classes classes/class-map
|
||||
:imports imports
|
||||
:load-fn load-fn
|
||||
:dry-run uberscript}
|
||||
:dry-run uberscript
|
||||
:readers core/data-readers}
|
||||
opts (addons/future opts)
|
||||
sci-ctx (sci/init opts)
|
||||
_ (vreset! common/ctx sci-ctx)
|
||||
|
|
|
|||
|
|
@ -466,6 +466,9 @@
|
|||
(deftest arrays-copy-of-test
|
||||
(is (= "foo" (bb nil "(String. (java.util.Arrays/copyOf (.getBytes \"foo\") 3))"))))
|
||||
|
||||
(deftest data-readers-test
|
||||
(is (= 2 (bb nil "(set! *data-readers* {'t/tag inc}) #t/tag 1"))))
|
||||
|
||||
;;;; Scratch
|
||||
|
||||
(comment
|
||||
|
|
|
|||
Loading…
Reference in a new issue