fix handlers-> macro

This commit is contained in:
Roman Volosovskyi 2017-07-11 20:03:49 +03:00
parent 1a997cad39
commit 06bff32f79
1 changed files with 10 additions and 4 deletions

View File

@ -5,8 +5,14 @@
All functions are expected to accept [db event] as parameters.
If one handler returns a modified db it will be used as parameters for subsequent handlers."
[& forms]
(let [db (gensym "db")
event (gensym "event")]
(let [db (gensym "db")
event (gensym "event")
new-db (gensym "new-db")]
`(fn [~db ~event]
(let [~@(interleave (repeat db) (map #(list 'or (list % db event) db) forms))]
~db))))
(let [~@(interleave (repeat db)
(map (fn [form]
`(let [~new-db (~form ~db ~event)]
(if (map? ~new-db)
~new-db
~db))) forms))]
~db))))