moved mk-comp-navs macro into clj namespace

This commit is contained in:
Nathan Marz 2016-09-02 09:17:32 -04:00
parent e27deb071a
commit bb77fb8f9d
2 changed files with 21 additions and 18 deletions

View file

@ -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]

View file

@ -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#))))))