We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 38cecf5 commit 9e111a1Copy full SHA for 9e111a1
src/darkleaf/multidecorators.cljc
@@ -20,13 +20,16 @@
20
(distinct acc))))
21
22
(defn multi [dispatch initial]
23
- (let [registry (atom {})]
+ (let [iregistry (atom {})]
24
(fn
25
- ([] registry)
+ ([] {:type :dynamic
26
+ :iregistry iregistry
27
+ :dispatch dispatch
28
+ :initial initial})
29
([obj & args]
30
(let [tag (apply dispatch obj args)
31
tags (reversed-me-and-ancestors tag)
- reg @registry
32
+ reg @iregistry
33
f (reduce (fn [acc tag]
34
(if-some [decorator (reg tag)]
35
(fn [obj & args]
@@ -37,5 +40,7 @@
37
40
(apply f obj args))))))
38
41
39
42
(defn ^{:style/indent :defn} decorate [multi tag decorator]
- (swap! (multi) assoc tag decorator)
- multi)
43
+ (let [state (multi)
44
+ iregistry (:iregistry state)]
45
+ (swap! iregistry assoc tag decorator)
46
+ multi))
0 commit comments