Add new API

- a noop middleware
   - a comp-middleware
This commit is contained in:
mike-thompson-day8 2015-03-02 23:02:56 +11:00
parent 88e1618b5a
commit f3bb482591

View File

@ -16,6 +16,7 @@
(def noop middleware/noop)
(def pure middleware/pure)
(def debug middleware/debug)
(def undoable middleware/undoable)
@ -34,3 +35,21 @@
(register-handler id pure handler))
([id middleware handler]
(register-handler id [pure middleware] handler)))
(defn comp-middleware
"Given a vector of middleware, filter out any nils, and use comp to compose.
v can be vectors of vectors and will be flattended before use.
For convienience, if v turns out to already be a function, just return it."
[v]
(if (ifn? v) ;; noop if v is a fucntion
v
(do
(assert (or (vector? v) (list v))
(str "re-frame: compose expects a vector, got: " v))
(let [v (remove nil? (flatten v))]
(cond
(empty? v) noop
(= 1 (count v)) (first v)
:else (apply comp v))))))