eufon

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

commit 8679518ca3434f7353490a75dfbd0eeccf547cc2
parent 26dfaeb152ed5b5f28f8fba5de2ebf2a6a90f4ab
Author: Daniel Barlow <dan@telent.net>
Date:   Fri,  4 Mar 2022 00:01:48 +0000

extract notify-listeners and listen to functions

Diffstat:
Mjust/just.fnl | 26+++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/just/just.fnl b/just/just.fnl @@ -17,27 +17,31 @@ (.. cache-dir "/cookies.db") WebKit2.CookiePersistentStorage.SQLITE)) +(fn notify-listeners [listeners name value] + (let [funs (. listeners name)] + (when funs + (each [_ f (ipairs funs)] + (f value))))) + +(fn add-listener [listeners event-name fun] + (let [funs (or (. listeners event-name) [])] + (table.insert funs fun) + (tset listeners event-name funs))) + (local Webview { :new #(let [listeners {} - notify-listeners (fn [self pspec] - (let [n pspec.name - funs (. listeners n)] - (when funs - (each [_ f (ipairs funs)] - (f (. self n)))))) widget (WebKit2.WebView { :on_notify - #(notify-listeners $1 $2) + (fn [self pspec] + (when (not (= pspec.name :parent)) + (notify-listeners listeners pspec.name (. self pspec.name)))) })] ;;(load-adblocks webview.user_content_manager content-filter-store) { - :listen (fn [self event-name fun] - (let [funs (or (. listeners event-name) [])] - (table.insert funs fun) - (tset listeners event-name funs))) + :listen #(add-listener listeners $2 $3) :visit (fn [self url] (widget:load_uri url)) :stop-loading #(widget:stop_loading)