From 3f0cd93fc72b24a899ffa238b6195f17ed259499 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Fri, 15 May 2020 11:12:45 +0200 Subject: [PATCH] [#419] data readers --- sci | 2 +- src/babashka/impl/clojure/core.clj | 4 +++- src/babashka/main.clj | 13 ++++--------- test/babashka/main_test.clj | 3 +++ 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/sci b/sci index eefb58ef..58b335df 160000 --- a/sci +++ b/sci @@ -1 +1 @@ -Subproject commit eefb58ef6054638da4986a66fc396a9ecfb58b5c +Subproject commit 58b335df281d86e09a2500c566e87fb8014cd1fb diff --git a/src/babashka/impl/clojure/core.clj b/src/babashka/impl/clojure/core.clj index 95938f55..6e7aa5b9 100644 --- a/src/babashka/impl/clojure/core.clj +++ b/src/babashka/impl/clojure/core.clj @@ -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)}) diff --git a/src/babashka/main.clj b/src/babashka/main.clj index 78341d8e..6d160966 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -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) diff --git a/test/babashka/main_test.clj b/test/babashka/main_test.clj index f9d58ed2..b43475c5 100644 --- a/test/babashka/main_test.clj +++ b/test/babashka/main_test.clj @@ -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