- add :ns meta to more vars (#966)
- add a couple more tests for Coercions
This commit is contained in:
parent
12c66351b3
commit
116d73f0b0
5 changed files with 107 additions and 80 deletions
|
|
@ -2,6 +2,7 @@
|
|||
{:no-doc true}
|
||||
(:require [clojure.core.async :as async]
|
||||
[clojure.core.async.impl.protocols :as protocols]
|
||||
[sci.impl.namespaces :refer [copy-var macrofy]]
|
||||
[sci.impl.vars :as vars]))
|
||||
|
||||
(def ^java.util.concurrent.Executor executor @#'async/thread-macro-executor)
|
||||
|
|
@ -38,72 +39,78 @@
|
|||
[_ _ bindings & body]
|
||||
(list 'clojure.core.async/thread (list* 'loop bindings body)))
|
||||
|
||||
(def core-async-namespace (vars/->SciNamespace 'clojure.core.async nil))
|
||||
|
||||
(def async-namespace
|
||||
{'<!! async/<!!
|
||||
'>!! async/>!!
|
||||
'admix async/admix
|
||||
'alts! async/alts!
|
||||
'alts!! async/alts!!
|
||||
'alt!! (with-meta alt!! {:sci/macro true})
|
||||
'buffer async/buffer
|
||||
'chan async/chan
|
||||
'close! async/close!
|
||||
'do-alt async/do-alt
|
||||
'do-alts async/do-alts
|
||||
'dropping-buffer async/dropping-buffer
|
||||
'filter< async/filter<
|
||||
'filter> async/filter>
|
||||
'into async/into
|
||||
'map async/map
|
||||
'map< async/map<
|
||||
'map> async/map>
|
||||
'mapcat< async/mapcat<
|
||||
'mapcat> async/mapcat>
|
||||
'merge async/merge
|
||||
'mix async/mix
|
||||
'mult async/mult
|
||||
'offer! async/offer!
|
||||
'onto-chan async/onto-chan
|
||||
'partition async/partition
|
||||
'partition-by async/partition-by
|
||||
'pipe async/pipe
|
||||
'pipeline async/pipeline
|
||||
'pipeline-async async/pipeline-async
|
||||
'pipeline-blocking async/pipeline-blocking
|
||||
'poll! async/poll!
|
||||
'promise-chan async/promise-chan
|
||||
'pub async/pub
|
||||
'put! async/put!
|
||||
'reduce async/reduce
|
||||
'remove< async/remove<
|
||||
'remove> async/remove>
|
||||
'sliding-buffer async/sliding-buffer
|
||||
'solo-mode async/solo-mode
|
||||
'split async/split
|
||||
'sub async/sub
|
||||
'take async/take
|
||||
'take! async/take!
|
||||
'tap async/tap
|
||||
'thread (with-meta thread {:sci/macro true})
|
||||
'thread-call thread-call
|
||||
'timeout async/timeout
|
||||
'to-chan async/to-chan
|
||||
'toggle async/toggle
|
||||
'transduce async/transduce
|
||||
'unblocking-buffer? async/unblocking-buffer?
|
||||
'unique async/unique
|
||||
'unmix async/unmix
|
||||
'unmix-all async/unmix-all
|
||||
'unsub async/unsub
|
||||
'unsub-all async/unsub-all
|
||||
'untap async/untap
|
||||
'untap-all async/untap-all
|
||||
{:obj core-async-namespace
|
||||
'<!! (copy-var async/<!! core-async-namespace)
|
||||
'>!! (copy-var async/>!! core-async-namespace)
|
||||
'admix (copy-var async/admix core-async-namespace)
|
||||
'alts! (copy-var async/alts! core-async-namespace)
|
||||
'alts!! (copy-var async/alts!! core-async-namespace)
|
||||
'alt!! (macrofy 'alt!! alt!! core-async-namespace)
|
||||
'buffer (copy-var async/buffer core-async-namespace)
|
||||
'chan (copy-var async/chan core-async-namespace)
|
||||
'close! (copy-var async/close! core-async-namespace)
|
||||
'do-alt (copy-var async/do-alt core-async-namespace)
|
||||
'do-alts (copy-var async/do-alts core-async-namespace)
|
||||
'dropping-buffer (copy-var async/dropping-buffer core-async-namespace)
|
||||
'filter< (copy-var async/filter< core-async-namespace)
|
||||
'filter> (copy-var async/filter> core-async-namespace)
|
||||
'into (copy-var async/into core-async-namespace)
|
||||
'map (copy-var async/map core-async-namespace)
|
||||
'map< (copy-var async/map< core-async-namespace)
|
||||
'map> (copy-var async/map> core-async-namespace)
|
||||
'mapcat< (copy-var async/mapcat< core-async-namespace)
|
||||
'mapcat> (copy-var async/mapcat> core-async-namespace)
|
||||
'merge (copy-var async/merge core-async-namespace)
|
||||
'mix (copy-var async/mix core-async-namespace)
|
||||
'mult (copy-var async/mult core-async-namespace)
|
||||
'offer! (copy-var async/offer! core-async-namespace)
|
||||
'onto-chan (copy-var async/onto-chan core-async-namespace)
|
||||
'partition (copy-var async/partition core-async-namespace)
|
||||
'partition-by (copy-var async/partition-by core-async-namespace)
|
||||
'pipe (copy-var async/pipe core-async-namespace)
|
||||
'pipeline (copy-var async/pipeline core-async-namespace)
|
||||
'pipeline-async (copy-var async/pipeline-async core-async-namespace)
|
||||
'pipeline-blocking (copy-var async/pipeline-blocking core-async-namespace)
|
||||
'poll! (copy-var async/poll! core-async-namespace)
|
||||
'promise-chan (copy-var async/promise-chan core-async-namespace)
|
||||
'pub (copy-var async/pub core-async-namespace)
|
||||
'put! (copy-var async/put! core-async-namespace)
|
||||
'reduce (copy-var async/reduce core-async-namespace)
|
||||
'remove< (copy-var async/remove< core-async-namespace)
|
||||
'remove> (copy-var async/remove> core-async-namespace)
|
||||
'sliding-buffer (copy-var async/sliding-buffer core-async-namespace)
|
||||
'solo-mode (copy-var async/solo-mode core-async-namespace)
|
||||
'split (copy-var async/split core-async-namespace)
|
||||
'sub (copy-var async/sub core-async-namespace)
|
||||
'take (copy-var async/take core-async-namespace)
|
||||
'take! (copy-var async/take! core-async-namespace)
|
||||
'tap (copy-var async/tap core-async-namespace)
|
||||
'thread (macrofy 'thread thread core-async-namespace)
|
||||
'thread-call (copy-var thread-call core-async-namespace)
|
||||
'timeout (copy-var async/timeout core-async-namespace)
|
||||
'to-chan (copy-var async/to-chan core-async-namespace)
|
||||
'toggle (copy-var async/toggle core-async-namespace)
|
||||
'transduce (copy-var async/transduce core-async-namespace)
|
||||
'unblocking-buffer? (copy-var async/unblocking-buffer? core-async-namespace)
|
||||
'unique (copy-var async/unique core-async-namespace)
|
||||
'unmix (copy-var async/unmix core-async-namespace)
|
||||
'unmix-all (copy-var async/unmix-all core-async-namespace)
|
||||
'unsub (copy-var async/unsub core-async-namespace)
|
||||
'unsub-all (copy-var async/unsub-all core-async-namespace)
|
||||
'untap (copy-var async/untap core-async-namespace)
|
||||
'untap-all (copy-var async/untap-all core-async-namespace)
|
||||
;; polyfill
|
||||
'go (with-meta thread {:sci/macro true})
|
||||
'<! async/<!!
|
||||
'>! async/>!!
|
||||
'alt! (with-meta alt!! {:sci/macro true})
|
||||
'go-loop (with-meta go-loop {:sci/macro true})})
|
||||
'go (macrofy 'go thread core-async-namespace)
|
||||
'<! (copy-var async/<!! core-async-namespace)
|
||||
'>! (copy-var async/>!! core-async-namespace)
|
||||
'alt! (macrofy 'alt! alt!! core-async-namespace)
|
||||
'go-loop (macrofy 'go-loop go-loop core-async-namespace)})
|
||||
|
||||
(def async-protocols-ns (vars/->SciNamespace 'clojure.core.async.impl.protocols nil))
|
||||
|
||||
(def async-protocols-namespace
|
||||
{'ReadPort protocols/ReadPort})
|
||||
{:obj async-protocols-ns
|
||||
'ReadPort (copy-var protocols/ReadPort async-protocols-ns)})
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
[clojure.core :as c]
|
||||
[clojure.string :as str]
|
||||
[sci.core :as sci]
|
||||
[sci.impl.namespaces :refer [copy-core-var]]
|
||||
[sci.impl.namespaces :refer [copy-core-var core-var macrofy]]
|
||||
[sci.impl.vars :as vars :refer [clojure-core-ns]]))
|
||||
|
||||
(defn locking* [form bindings v f & args]
|
||||
|
|
@ -162,20 +162,20 @@
|
|||
'file-seq (copy-core-var file-seq)
|
||||
'promise (copy-core-var promise)
|
||||
'deliver (copy-core-var deliver)
|
||||
'locking (with-meta locking* {:sci/macro true})
|
||||
'locking (macrofy 'locking locking*)
|
||||
'shutdown-agents (copy-core-var shutdown-agents)
|
||||
'slurp (copy-core-var slurp)
|
||||
'spit (copy-core-var spit)
|
||||
'time (with-meta time* {:sci/macro true})
|
||||
'time (macrofy 'time time*)
|
||||
'Throwable->map (copy-core-var Throwable->map)
|
||||
'tap> (copy-core-var tap>)
|
||||
'add-tap (copy-core-var add-tap)
|
||||
'remove-tap (copy-core-var remove-tap)
|
||||
'*data-readers* data-readers
|
||||
'default-data-readers default-data-readers
|
||||
'default-data-readers (copy-core-var default-data-readers)
|
||||
'xml-seq (copy-core-var xml-seq)
|
||||
'read+string (fn [& args]
|
||||
(apply read+string @common/ctx args))
|
||||
'read+string (core-var 'read+string (fn [& args]
|
||||
(apply read+string @common/ctx args)))
|
||||
'*command-line-args* command-line-args
|
||||
'*warn-on-reflection* warn-on-reflection
|
||||
'*math-context* math-context
|
||||
|
|
|
|||
|
|
@ -54,11 +54,11 @@
|
|||
|
||||
(def io-namespace
|
||||
{'Coercions (sci/new-var 'Coercions {:methods #{'as-file 'as-url}
|
||||
:ns io-ns})
|
||||
:ns io-ns} {:ns io-ns})
|
||||
'as-relative-path (copy-var as-relative-path io-ns)
|
||||
'as-file as-file
|
||||
'as-file (copy-var as-file io-ns)
|
||||
'file (copy-var file io-ns)
|
||||
'as-url as-url
|
||||
'as-url (copy-var as-url io-ns)
|
||||
'copy (copy-var io/copy io-ns)
|
||||
'delete-file (copy-var io/delete-file io-ns)
|
||||
'input-stream (copy-var io/input-stream io-ns)
|
||||
|
|
|
|||
|
|
@ -320,6 +320,8 @@ Use bb run --help to show this help output.
|
|||
|
||||
(def input-var (sci/new-dynamic-var '*input*))
|
||||
|
||||
(def clojure-main-ns (sci/create-ns 'clojure.main))
|
||||
|
||||
(def namespaces
|
||||
(cond->
|
||||
{'user {'*input* (ctx-fn
|
||||
|
|
@ -335,11 +337,13 @@ Use bb run --help to show this help output.
|
|||
'clojure.data data/data-namespace
|
||||
'clojure.stacktrace stacktrace-namespace
|
||||
'clojure.zip zip-namespace
|
||||
'clojure.main {'demunge demunge
|
||||
'repl-requires clojure-main/repl-requires
|
||||
'repl (fn [& opts]
|
||||
(let [opts (apply hash-map opts)]
|
||||
(repl/start-repl! @common/ctx opts)))}
|
||||
'clojure.main {:obj clojure-main-ns
|
||||
'demunge (sci/copy-var demunge clojure-main-ns)
|
||||
'repl-requires (sci/copy-var clojure-main/repl-requires clojure-main-ns)
|
||||
'repl (sci/new-var 'repl
|
||||
(fn [& opts]
|
||||
(let [opts (apply hash-map opts)]
|
||||
(repl/start-repl! @common/ctx opts))) {:ns clojure-main-ns})}
|
||||
'clojure.test t/clojure-test-namespace
|
||||
'babashka.classpath classpath-namespace
|
||||
'clojure.pprint pprint-namespace
|
||||
|
|
@ -716,7 +720,7 @@ Use bb run --help to show this help output.
|
|||
:namespaces (-> namespaces
|
||||
(assoc 'clojure.core
|
||||
(assoc core-extras
|
||||
'load-file load-file*)))
|
||||
'load-file (sci-namespaces/core-var 'load-file load-file*))))
|
||||
:env env
|
||||
:features #{:bb :clj}
|
||||
:classes classes/class-map
|
||||
|
|
|
|||
|
|
@ -23,3 +23,19 @@
|
|||
|
||||
(.exists (io/file path)) ;; true
|
||||
"))))
|
||||
|
||||
(deftest string-as-file-test
|
||||
(is (true? (bb "
|
||||
(require '[clojure.java.io :as io])
|
||||
|
||||
(instance? java.io.File (io/as-file \".\"))
|
||||
"))))
|
||||
|
||||
(deftest string-as-url-test
|
||||
(is (true? (bb "
|
||||
(require '[clojure.java.io :as io])
|
||||
|
||||
(let [url (io/as-url \"https://github.com/babashka/babashka\")]
|
||||
(and (= \"https\" (.getProtocol url))
|
||||
(= \"github.com\" (.getHost url))))
|
||||
"))))
|
||||
|
|
|
|||
Loading…
Reference in a new issue