Skip to content

Commit 9e111a1

Browse files
committed
expose state
1 parent 38cecf5 commit 9e111a1

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/darkleaf/multidecorators.cljc

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,16 @@
2020
(distinct acc))))
2121

2222
(defn multi [dispatch initial]
23-
(let [registry (atom {})]
23+
(let [iregistry (atom {})]
2424
(fn
25-
([] registry)
25+
([] {:type :dynamic
26+
:iregistry iregistry
27+
:dispatch dispatch
28+
:initial initial})
2629
([obj & args]
2730
(let [tag (apply dispatch obj args)
2831
tags (reversed-me-and-ancestors tag)
29-
reg @registry
32+
reg @iregistry
3033
f (reduce (fn [acc tag]
3134
(if-some [decorator (reg tag)]
3235
(fn [obj & args]
@@ -37,5 +40,7 @@
3740
(apply f obj args))))))
3841

3942
(defn ^{:style/indent :defn} decorate [multi tag decorator]
40-
(swap! (multi) assoc tag decorator)
41-
multi)
43+
(let [state (multi)
44+
iregistry (:iregistry state)]
45+
(swap! iregistry assoc tag decorator)
46+
multi))

0 commit comments

Comments
 (0)