moved mk-comp-navs macro into clj namespace
This commit is contained in:
parent
e27deb071a
commit
bb77fb8f9d
2 changed files with 21 additions and 18 deletions
|
|
@ -1,10 +1,10 @@
|
||||||
(ns com.rpl.specter.impl
|
(ns com.rpl.specter.impl
|
||||||
#?(:cljs (:require-macros
|
#?(:cljs (:require-macros
|
||||||
[com.rpl.specter.util-macros :refer [doseqres]]))
|
[com.rpl.specter.util-macros :refer [doseqres mk-comp-navs]]))
|
||||||
|
|
||||||
(:use [com.rpl.specter.protocols :only
|
(:use [com.rpl.specter.protocols :only
|
||||||
[select* transform* collect-val RichNavigator]]
|
[select* transform* collect-val RichNavigator]]
|
||||||
#?(:clj [com.rpl.specter.util-macros :only [doseqres]]))
|
#?(:clj [com.rpl.specter.util-macros :only [doseqres mk-comp-navs]]))
|
||||||
|
|
||||||
(:require [com.rpl.specter.protocols :as p]
|
(:require [com.rpl.specter.protocols :as p]
|
||||||
[clojure.string :as s]
|
[clojure.string :as s]
|
||||||
|
|
@ -510,24 +510,9 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(defn gensyms [amt]
|
(defn- gensyms [amt]
|
||||||
(vec (repeatedly amt gensym)))
|
(vec (repeatedly amt gensym)))
|
||||||
|
|
||||||
(defmacro mk-comp-navs []
|
|
||||||
(let [impls (for [i (range 3 20)]
|
|
||||||
(let [[fsym & rsyms :as syms] (gensyms i)]
|
|
||||||
`([~@syms] (~'comp-navs ~fsym (~'comp-navs ~@rsyms)))))
|
|
||||||
last-syms (gensyms 19)]
|
|
||||||
`(defn comp-navs
|
|
||||||
([] STAY*)
|
|
||||||
([nav1#] nav1#)
|
|
||||||
([nav1# nav2#] (combine-two-navs nav1# nav2#))
|
|
||||||
~@impls
|
|
||||||
([~@last-syms ~'& rest#]
|
|
||||||
(~'comp-navs
|
|
||||||
(~'comp-navs ~@last-syms)
|
|
||||||
(reduce comp-navs rest#))))))
|
|
||||||
|
|
||||||
(mk-comp-navs)
|
(mk-comp-navs)
|
||||||
|
|
||||||
(defn srange-transform* [structure start end next-fn]
|
(defn srange-transform* [structure start end next-fn]
|
||||||
|
|
|
||||||
|
|
@ -10,3 +10,21 @@
|
||||||
|
|
||||||
~backup-res
|
~backup-res
|
||||||
~aseq))
|
~aseq))
|
||||||
|
|
||||||
|
(defn- gensyms [amt]
|
||||||
|
(vec (repeatedly amt gensym)))
|
||||||
|
|
||||||
|
(defmacro mk-comp-navs []
|
||||||
|
(let [impls (for [i (range 3 20)]
|
||||||
|
(let [[fsym & rsyms :as syms] (gensyms i)]
|
||||||
|
`([~@syms] (~'comp-navs ~fsym (~'comp-navs ~@rsyms)))))
|
||||||
|
last-syms (gensyms 19)]
|
||||||
|
`(defn ~'comp-navs
|
||||||
|
([] ~'com.rpl.specter.impl/STAY*)
|
||||||
|
([nav1#] nav1#)
|
||||||
|
([nav1# nav2#] (~'com.rpl.specter.impl/combine-two-navs nav1# nav2#))
|
||||||
|
~@impls
|
||||||
|
([~@last-syms ~'& rest#]
|
||||||
|
(~'comp-navs
|
||||||
|
(~'comp-navs ~@last-syms)
|
||||||
|
(reduce ~'comp-navs rest#))))))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue