reimplement stay-then-continue and continue-then-stay in terms of multi-path
This commit is contained in:
parent
b98bc8e4ce
commit
d56ea62e00
1 changed files with 12 additions and 25 deletions
|
|
@ -240,31 +240,6 @@
|
||||||
ancestry))
|
ancestry))
|
||||||
)))
|
)))
|
||||||
|
|
||||||
(defn stay-then-continue
|
|
||||||
"Navigates to the current element and then navigates via the provided path.
|
|
||||||
This can be used to implement pre-order traversal."
|
|
||||||
[& path]
|
|
||||||
(fixed-pathed-path [late path]
|
|
||||||
(select* [this structure next-fn]
|
|
||||||
(concat (next-fn structure)
|
|
||||||
(doall (mapcat next-fn (compiled-select late structure)))))
|
|
||||||
(transform* [this structure next-fn]
|
|
||||||
(compiled-transform late next-fn (next-fn structure))
|
|
||||||
)))
|
|
||||||
|
|
||||||
(defn continue-then-stay
|
|
||||||
"Navigates to the provided path and then to the current element. This can be used
|
|
||||||
to implement post-order traversal."
|
|
||||||
[& path]
|
|
||||||
(fixed-pathed-path [late path]
|
|
||||||
(select* [this structure next-fn]
|
|
||||||
(concat (doall (mapcat next-fn (compiled-select late structure)))
|
|
||||||
(next-fn structure)))
|
|
||||||
(transform* [this structure next-fn]
|
|
||||||
(next-fn (compiled-transform late next-fn structure))
|
|
||||||
)))
|
|
||||||
|
|
||||||
|
|
||||||
(defpath keypath [key]
|
(defpath keypath [key]
|
||||||
(select* [this structure next-fn]
|
(select* [this structure next-fn]
|
||||||
(next-fn (get structure key)))
|
(next-fn (get structure key)))
|
||||||
|
|
@ -445,3 +420,15 @@
|
||||||
structure
|
structure
|
||||||
compiled-paths
|
compiled-paths
|
||||||
))))
|
))))
|
||||||
|
|
||||||
|
(defn stay-then-continue
|
||||||
|
"Navigates to the current element and then navigates via the provided path.
|
||||||
|
This can be used to implement pre-order traversal."
|
||||||
|
[& path]
|
||||||
|
(multi-path STAY path))
|
||||||
|
|
||||||
|
(defn continue-then-stay
|
||||||
|
"Navigates to the provided path and then to the current element. This can be used
|
||||||
|
to implement post-order traversal."
|
||||||
|
[& path]
|
||||||
|
(multi-path path STAY))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue