[#419] data readers

This commit is contained in:
Michiel Borkent 2020-05-15 11:12:45 +02:00 committed by GitHub
parent ae1431d160
commit 3f0cd93fc7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 11 additions and 11 deletions

2
sci

@ -1 +1 @@
Subproject commit eefb58ef6054638da4986a66fc396a9ecfb58b5c
Subproject commit 58b335df281d86e09a2500c566e87fb8014cd1fb

View file

@ -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)})

View file

@ -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)

View file

@ -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