eufon

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

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      })}