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
|
||||
#?(: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
|
||||
[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]
|
||||
[clojure.string :as s]
|
||||
|
|
@ -510,24 +510,9 @@
|
|||
|
||||
|
||||
|
||||
(defn gensyms [amt]
|
||||
(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
|
||||
([] 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)
|
||||
|
||||
(defn srange-transform* [structure start end next-fn]
|
||||
|
|
|
|||
|
|
@ -10,3 +10,21 @@
|
|||
|
||||
~backup-res
|
||||
~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