eufon

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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:
Mjust/observable-test.fnl | 8++++++++
Mjust/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]