Make babashka-compatible
This commit is contained in:
parent
d0d6fdf581
commit
8ba809a2cd
3 changed files with 70 additions and 24 deletions
3
deps.edn
Normal file
3
deps.edn
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
;; deps.edn to use this library as a git dependency for babashka
|
||||||
|
{:paths ["src/clj"]
|
||||||
|
:deps {riddley/riddley {:mvn/version "0.1.12"}}}
|
||||||
|
|
@ -15,10 +15,11 @@
|
||||||
#?(:clj [clojure.pprint :as pp])
|
#?(:clj [clojure.pprint :as pp])
|
||||||
[clojure.string :as s]
|
[clojure.string :as s]
|
||||||
[clojure.walk :as walk]
|
[clojure.walk :as walk]
|
||||||
#?(:clj [riddley.walk :as riddley]))
|
#?(:bb [clojure.walk :as riddley]
|
||||||
|
:clj [riddley.walk :as riddley]))
|
||||||
#?(:clj (:import [com.rpl.specter Util MutableCell])))
|
|
||||||
|
|
||||||
|
#?@(:bb []
|
||||||
|
:clj [(:import [com.rpl.specter Util MutableCell])]))
|
||||||
|
|
||||||
(def NONE ::NONE)
|
(def NONE ::NONE)
|
||||||
|
|
||||||
|
|
@ -82,7 +83,9 @@
|
||||||
(defn intern* [ns name val]
|
(defn intern* [ns name val]
|
||||||
(throw (ex-info "intern not supported in ClojureScript" {}))))
|
(throw (ex-info "intern not supported in ClojureScript" {}))))
|
||||||
|
|
||||||
#?(
|
#?(:bb
|
||||||
|
(defmacro fast-object-array [i]
|
||||||
|
`(object-array ~i))
|
||||||
:clj
|
:clj
|
||||||
(defmacro fast-object-array [i]
|
(defmacro fast-object-array [i]
|
||||||
`(com.rpl.specter.Util/makeObjectArray ~i)))
|
`(com.rpl.specter.Util/makeObjectArray ~i)))
|
||||||
|
|
@ -101,7 +104,8 @@
|
||||||
(if (= platform :cljs)
|
(if (= platform :cljs)
|
||||||
`(p/select* ~this ~@args)
|
`(p/select* ~this ~@args)
|
||||||
`(let [~hinted ~this]
|
`(let [~hinted ~this]
|
||||||
(.select* ~hinted ~@args)))))
|
(#?(:bb p/select*
|
||||||
|
:clj .select*) ~hinted ~@args)))))
|
||||||
:cljs
|
:cljs
|
||||||
(defn exec-select* [this vals structure next-fn]
|
(defn exec-select* [this vals structure next-fn]
|
||||||
(p/select* ^not-native this vals structure next-fn)))
|
(p/select* ^not-native this vals structure next-fn)))
|
||||||
|
|
@ -115,7 +119,8 @@
|
||||||
(if (= platform :cljs)
|
(if (= platform :cljs)
|
||||||
`(p/transform* ~this ~@args)
|
`(p/transform* ~this ~@args)
|
||||||
`(let [~hinted ~this]
|
`(let [~hinted ~this]
|
||||||
(.transform* ~hinted ~@args)))))
|
(#?(:bb p/transform*
|
||||||
|
:clj .transform*) ~hinted ~@args)))))
|
||||||
|
|
||||||
:cljs
|
:cljs
|
||||||
(defn exec-transform* [this vals structure next-fn]
|
(defn exec-transform* [this vals structure next-fn]
|
||||||
|
|
@ -214,13 +219,19 @@
|
||||||
(set_cell [cell x])))
|
(set_cell [cell x])))
|
||||||
|
|
||||||
|
|
||||||
#?(:cljs
|
#?(:bb
|
||||||
|
(defrecord MutableCell [x])
|
||||||
|
:cljs
|
||||||
(deftype MutableCell [^:volatile-mutable q]
|
(deftype MutableCell [^:volatile-mutable q]
|
||||||
PMutableCell
|
PMutableCell
|
||||||
(set_cell [this x] (set! q x))))
|
(set_cell [this x] (set! q x))))
|
||||||
|
|
||||||
|
|
||||||
#?(
|
#?(:bb
|
||||||
|
(defn mutable-cell
|
||||||
|
([] (mutable-cell nil))
|
||||||
|
([v] (MutableCell. (volatile! v))))
|
||||||
|
|
||||||
:clj
|
:clj
|
||||||
(defn mutable-cell
|
(defn mutable-cell
|
||||||
([] (mutable-cell nil))
|
([] (mutable-cell nil))
|
||||||
|
|
@ -232,7 +243,10 @@
|
||||||
([init] (MutableCell. init))))
|
([init] (MutableCell. init))))
|
||||||
|
|
||||||
|
|
||||||
#?(
|
#?(:bb
|
||||||
|
(defn set-cell! [^MutableCell c v]
|
||||||
|
(vreset! (:x c) v))
|
||||||
|
|
||||||
:clj
|
:clj
|
||||||
(defn set-cell! [^MutableCell c v]
|
(defn set-cell! [^MutableCell c v]
|
||||||
(.set c v))
|
(.set c v))
|
||||||
|
|
@ -242,7 +256,10 @@
|
||||||
(set_cell cell val)))
|
(set_cell cell val)))
|
||||||
|
|
||||||
|
|
||||||
#?(
|
#?(:bb
|
||||||
|
(defn get-cell [^MutableCell c]
|
||||||
|
@(:x c))
|
||||||
|
|
||||||
:clj
|
:clj
|
||||||
(defn get-cell [^MutableCell c]
|
(defn get-cell [^MutableCell c]
|
||||||
(.get c))
|
(.get c))
|
||||||
|
|
@ -291,7 +308,9 @@
|
||||||
(reify #?(:clj clojure.lang.IReduce :cljs cljs.core/IReduce)
|
(reify #?(:clj clojure.lang.IReduce :cljs cljs.core/IReduce)
|
||||||
(#?(:clj reduce :cljs -reduce)
|
(#?(:clj reduce :cljs -reduce)
|
||||||
[this afn]
|
[this afn]
|
||||||
(#?(:clj .reduce :cljs -reduce) this afn (afn)))
|
#?(:bb (reduce afn (afn) this)
|
||||||
|
:default
|
||||||
|
(#?(:clj .reduce :cljs -reduce) this afn (afn))))
|
||||||
(#?(:clj reduce :cljs -reduce)
|
(#?(:clj reduce :cljs -reduce)
|
||||||
[this afn start]
|
[this afn start]
|
||||||
(let [cell (mutable-cell start)]
|
(let [cell (mutable-cell start)]
|
||||||
|
|
@ -308,6 +327,9 @@
|
||||||
))))
|
))))
|
||||||
|
|
||||||
#?(
|
#?(
|
||||||
|
:bb
|
||||||
|
(defn- call-reduce-interface [^clojure.lang.IReduce traverser afn start]
|
||||||
|
(reduce afn start traverser))
|
||||||
:clj
|
:clj
|
||||||
(defn- call-reduce-interface [^clojure.lang.IReduce traverser afn start]
|
(defn- call-reduce-interface [^clojure.lang.IReduce traverser afn start]
|
||||||
(.reduce traverser afn start)
|
(.reduce traverser afn start)
|
||||||
|
|
@ -323,7 +345,9 @@
|
||||||
(reify #?(:clj clojure.lang.IReduce :cljs cljs.core/IReduce)
|
(reify #?(:clj clojure.lang.IReduce :cljs cljs.core/IReduce)
|
||||||
(#?(:clj reduce :cljs -reduce)
|
(#?(:clj reduce :cljs -reduce)
|
||||||
[this afn]
|
[this afn]
|
||||||
(#?(:clj .reduce :cljs -reduce) this afn (afn)))
|
#?(:bb (reduce afn (afn) this)
|
||||||
|
:default
|
||||||
|
(#?(:clj .reduce :cljs -reduce) this afn (afn))))
|
||||||
(#?(:clj reduce :cljs -reduce)
|
(#?(:clj reduce :cljs -reduce)
|
||||||
[this afn start]
|
[this afn start]
|
||||||
(let [res (call-reduce-interface traverser afn start)]
|
(let [res (call-reduce-interface traverser afn start)]
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,8 @@
|
||||||
#?(:clj (:use [com.rpl.specter.macros :only [defnav defrichnav]]
|
#?(:clj (:use [com.rpl.specter.macros :only [defnav defrichnav]]
|
||||||
[com.rpl.specter.util-macros :only [doseqres]]))
|
[com.rpl.specter.util-macros :only [doseqres]]))
|
||||||
(:require [com.rpl.specter.impl :as i]
|
(:require [com.rpl.specter.impl :as i]
|
||||||
#?(:clj [clojure.core.reducers :as r])))
|
#?@(:bb []
|
||||||
|
:clj [[clojure.core.reducers :as r]])))
|
||||||
|
|
||||||
|
|
||||||
(defn not-selected?*
|
(defn not-selected?*
|
||||||
|
|
@ -103,7 +104,10 @@
|
||||||
structure))
|
structure))
|
||||||
|
|
||||||
#?(:clj clojure.lang.PersistentArrayMap)
|
#?(:clj clojure.lang.PersistentArrayMap)
|
||||||
#?(:clj
|
#?(:bb
|
||||||
|
(all-transform [structure next-fn]
|
||||||
|
(non-transient-map-all-transform structure next-fn {}))
|
||||||
|
:clj
|
||||||
(all-transform [structure next-fn]
|
(all-transform [structure next-fn]
|
||||||
(let [k-it (.keyIterator structure)
|
(let [k-it (.keyIterator structure)
|
||||||
v-it (.valIterator structure)
|
v-it (.valIterator structure)
|
||||||
|
|
@ -185,10 +189,13 @@
|
||||||
|
|
||||||
|
|
||||||
:else
|
:else
|
||||||
(->> structure
|
#?(:bb (into empty-structure
|
||||||
|
(comp (map next-fn) (filter not-NONE?))
|
||||||
|
structure)
|
||||||
|
:clj (->> structure
|
||||||
(r/map next-fn)
|
(r/map next-fn)
|
||||||
(r/filter not-NONE?)
|
(r/filter not-NONE?)
|
||||||
(into empty-structure))))))
|
(into empty-structure)))))))
|
||||||
|
|
||||||
|
|
||||||
#?(:cljs default)
|
#?(:cljs default)
|
||||||
|
|
@ -255,7 +262,10 @@
|
||||||
|
|
||||||
|
|
||||||
#?(:clj clojure.lang.PersistentArrayMap)
|
#?(:clj clojure.lang.PersistentArrayMap)
|
||||||
#?(:clj
|
#?(:bb
|
||||||
|
(map-vals-transform [structure next-fn]
|
||||||
|
(map-vals-non-transient-transform structure {} next-fn))
|
||||||
|
:clj
|
||||||
(map-vals-transform [structure next-fn]
|
(map-vals-transform [structure next-fn]
|
||||||
(let [k-it (.keyIterator structure)
|
(let [k-it (.keyIterator structure)
|
||||||
v-it (.valIterator structure)
|
v-it (.valIterator structure)
|
||||||
|
|
@ -282,7 +292,10 @@
|
||||||
array
|
array
|
||||||
)]
|
)]
|
||||||
(clojure.lang.PersistentArrayMap. array)))))
|
(clojure.lang.PersistentArrayMap. array)))))
|
||||||
#?(:clj
|
#?(:bb
|
||||||
|
(map-keys-transform [structure next-fn]
|
||||||
|
(map-keys-non-transient-transform structure {} next-fn))
|
||||||
|
:clj
|
||||||
(map-keys-transform [structure next-fn]
|
(map-keys-transform [structure next-fn]
|
||||||
(let [k-it (.keyIterator structure)
|
(let [k-it (.keyIterator structure)
|
||||||
v-it (.valIterator structure)
|
v-it (.valIterator structure)
|
||||||
|
|
@ -505,7 +518,10 @@
|
||||||
structure
|
structure
|
||||||
(updater structure next-fn))))
|
(updater structure next-fn))))
|
||||||
|
|
||||||
#?(
|
#?(:bb
|
||||||
|
(defn vec-count [v]
|
||||||
|
(count v))
|
||||||
|
|
||||||
:clj
|
:clj
|
||||||
(defn vec-count [^clojure.lang.IPersistentVector v]
|
(defn vec-count [^clojure.lang.IPersistentVector v]
|
||||||
(.length v))
|
(.length v))
|
||||||
|
|
@ -557,7 +573,10 @@
|
||||||
(assoc v i newe))))))
|
(assoc v i newe))))))
|
||||||
|
|
||||||
|
|
||||||
#?(
|
#?(:bb
|
||||||
|
(defn transient-vec-count [v]
|
||||||
|
(count v))
|
||||||
|
|
||||||
:clj
|
:clj
|
||||||
(defn transient-vec-count [^clojure.lang.ITransientVector v]
|
(defn transient-vec-count [^clojure.lang.ITransientVector v]
|
||||||
(.count v))
|
(.count v))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue