change params-reset to backtrack in params-idx by number of needed params of its path, add test that verifies composability
This commit is contained in:
parent
cf0dae3699
commit
b16dbdfdd2
2 changed files with 10 additions and 4 deletions
|
|
@ -132,15 +132,16 @@
|
||||||
(defn params-reset [params-path]
|
(defn params-reset [params-path]
|
||||||
;; TODO: error if not paramsneededpath
|
;; TODO: error if not paramsneededpath
|
||||||
(let [s (i/params-needed-selector params-path)
|
(let [s (i/params-needed-selector params-path)
|
||||||
t (i/params-needed-transformer params-path)]
|
t (i/params-needed-transformer params-path)
|
||||||
|
needed (i/num-needed-params params-path)]
|
||||||
(i/->ParamsNeededPath
|
(i/->ParamsNeededPath
|
||||||
(i/->TransformFunctions
|
(i/->TransformFunctions
|
||||||
i/RichPathExecutor
|
i/RichPathExecutor
|
||||||
(fn [params params-idx vals structure next-fn]
|
(fn [params params-idx vals structure next-fn]
|
||||||
(s params 0 vals structure next-fn)
|
(s params (- params-idx needed) vals structure next-fn)
|
||||||
)
|
)
|
||||||
(fn [params params-idx vals structure next-fn]
|
(fn [params params-idx vals structure next-fn]
|
||||||
(t params 0 vals structure next-fn)
|
(t params (- params-idx needed) vals structure next-fn)
|
||||||
))
|
))
|
||||||
0)))
|
0)))
|
||||||
|
|
||||||
|
|
@ -209,7 +210,7 @@
|
||||||
(select* [this structure next-fn]
|
(select* [this structure next-fn]
|
||||||
(next-fn (set/intersection structure aset)))
|
(next-fn (set/intersection structure aset)))
|
||||||
(transform* [this structure next-fn]
|
(transform* [this structure next-fn]
|
||||||
(let [subset (set/intersection structure aset)
|
(let [subset (set/intersection structure aset)
|
||||||
newset (next-fn subset)]
|
newset (next-fn subset)]
|
||||||
(-> structure
|
(-> structure
|
||||||
(set/difference subset)
|
(set/difference subset)
|
||||||
|
|
|
||||||
|
|
@ -632,6 +632,11 @@
|
||||||
(s/setval (map-key-walker :b) "X" {:a {:c {:b {:d 1}}}}))
|
(s/setval (map-key-walker :b) "X" {:a {:c {:b {:d 1}}}}))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
(deftest recursive-params-composable-path-test
|
||||||
|
(let [p (s/comp-paths s/keypath map-key-walker)]
|
||||||
|
(is (= [1] (s/select (p 1 :a) [{:a 3} {:a 1} {:a 2}])))
|
||||||
|
))
|
||||||
|
|
||||||
(deftest all-map-test
|
(deftest all-map-test
|
||||||
(is (= {3 3} (s/transform [s/ALL s/FIRST] inc {2 3})))
|
(is (= {3 3} (s/transform [s/ALL s/FIRST] inc {2 3})))
|
||||||
(is (= {3 21 4 31} (s/transform [s/ALL s/ALL] inc {2 20 3 30})))
|
(is (= {3 21 4 31} (s/transform [s/ALL s/ALL] inc {2 20 3 30})))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue