listeners.fnl (408B)
1 { 2 :new 3 #(let [listeners {}] 4 { 5 :notify (fn [_ name value] 6 (let [funs (. listeners name)] 7 (when funs 8 (each [_ f (ipairs funs)] 9 (f value))))) 10 :add (fn [_ event-name fun] 11 (let [funs (or (. listeners event-name) [])] 12 (table.insert funs fun) 13 (tset listeners event-name funs))) 14 })}