cleaner and more composable integration
This commit is contained in:
parent
70d916dd6a
commit
050384e0fd
1 changed files with 12 additions and 16 deletions
|
|
@ -7,9 +7,17 @@
|
|||
[com.rpl specter])
|
||||
(:require [clojure [zip :as zip]]))
|
||||
|
||||
(def VECTOR-ZIP (view zip/vector-zip))
|
||||
(def SEQ-ZIP (view zip/seq-zip))
|
||||
(def XML-ZIP (view zip/xml-zip))
|
||||
(defpath zipper [constructor]
|
||||
(select* [this structure next-fn]
|
||||
(next-fn (constructor structure)))
|
||||
(transform* [this structure next-fn]
|
||||
(zip/root (next-fn (constructor structure)))
|
||||
))
|
||||
|
||||
(def VECTOR-ZIP (zipper zip/vector-zip))
|
||||
(def SEQ-ZIP (zipper zip/seq-zip))
|
||||
(def XML-ZIP (zipper zip/xml-zip))
|
||||
|
||||
(def NEXT (view zip/next))
|
||||
(def RIGHT (view zip/right))
|
||||
(def RIGHTMOST (view zip/rightmost))
|
||||
|
|
@ -17,23 +25,11 @@
|
|||
(def DOWN (view zip/down))
|
||||
(def LEFTMOST (view zip/leftmost))
|
||||
(def UP (view zip/up))
|
||||
(def ROOT (view zip/root))
|
||||
|
||||
(defpath NODE []
|
||||
(select* [this structure next-fn]
|
||||
(next-fn (zip/node structure))
|
||||
)
|
||||
(transform* [this structure next-fn]
|
||||
(zip/root (zip/edit structure next-fn))
|
||||
(zip/edit structure next-fn)
|
||||
))
|
||||
|
||||
(defn edited [path update-fn]
|
||||
(fixed-pathed-path [late path]
|
||||
(select* [this structure next-fn]
|
||||
(next-fn
|
||||
(zip/edit structure
|
||||
#(compiled-transform late update-fn %))))
|
||||
(transform* [this structure next-fn]
|
||||
(next-fn
|
||||
(zip/edit structure
|
||||
#(compiled-transform late update-fn %))))))
|
||||
|
|
|
|||
Loading…
Reference in a new issue