commit 3d64e42142fcee29d1781d0c88719062b6f68c48 parent 117cb8be47d22714e4cdd513ab765142926d8cb1 Author: Daniel Barlow <dan@telent.net> Date: Sun, 20 Feb 2022 12:24:36 +0000 allow multiple subscribers on same node Diffstat:
| M | just/observable-test.fnl | | | 8 | ++++++++ |
| M | just/observable.fnl | | | 2 | +- |
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/just/observable-test.fnl b/just/observable-test.fnl @@ -57,3 +57,11 @@ (s:observe [:foo :bar] #(set win 4)) (s:update [:foo :bar :baz] 42) (expect (= win 2))) + +(let [s (observable.new {:foo {:bar {:baz 43}}})] + (var win 0) + ;; multiple observers can live on same subtree + (s:observe [:foo :bar] #(set win (+ win 1))) + (s:observe [:foo :bar] #(set win (+ win 1))) + (s:update [:foo :bar :baz] 42) + (expect (= win 2))) diff --git a/just/observable.fnl b/just/observable.fnl @@ -21,7 +21,7 @@ (let [el (get data self path)] (when el (if el._subscribers - (el._subscribers:insert fun) + (table.insert el._subscribers fun) (tset el :_subscribers [fun]))))) (fn new [data]