diff options
author | Oscar Najera <hi@oscarnajera.com> | 2025-02-09 16:15:06 +0100 |
---|---|---|
committer | Oscar Najera <hi@oscarnajera.com> | 2025-02-09 16:15:06 +0100 |
commit | 346dcbecc20802f7bc86b5a8c4ca2d1c4bed37c0 (patch) | |
tree | 793be33bf8ac9533bc0a36a863ebe411fcbb85e6 | |
parent | f72d6e79f8e463bac3bb2d14cc8b6c3009d24e37 (diff) | |
download | scratch-346dcbecc20802f7bc86b5a8c4ca2d1c4bed37c0.tar.gz scratch-346dcbecc20802f7bc86b5a8c4ca2d1c4bed37c0.tar.bz2 scratch-346dcbecc20802f7bc86b5a8c4ca2d1c4bed37c0.zip |
for of syntax
-rw-r--r-- | webstats/server.lisp | 8 | ||||
-rw-r--r-- | webstats/stats.paren | 8 |
2 files changed, 11 insertions, 5 deletions
diff --git a/webstats/server.lisp b/webstats/server.lisp index 148f0aa..4fecc1f 100644 --- a/webstats/server.lisp +++ b/webstats/server.lisp @@ -9,6 +9,14 @@ (in-package :webstats-js) (setf *js-target-version* "1.9") +(ps::define-statement-operator for-of ((var iterable) &rest body) + `(ps-js::for-of ,(ps::compile-expression var) + ,(ps::compile-expression iterable) + ,(ps::compile-loop-body (list var) body))) + +(ps::defprinter ps-js::for-of (var object body-block) + "for (const "(ps::ps-print var)" of "(ps::ps-print object)") " + (ps::ps-print body-block)) (in-package :webstats) (overlord:set-package-base "/home/titan/dev/scratch/webstats/") diff --git a/webstats/stats.paren b/webstats/stats.paren index 896dcec..a4f6957 100644 --- a/webstats/stats.paren +++ b/webstats/stats.paren @@ -23,11 +23,9 @@ (chain window (open link "_blank"))))))))) (defun instrument-links () - (chain document (query-selector-all "a") - (for-each (lambda (link) - (setf (@ link onclick) #'register-click) - (setf (@ link onauxclick) #'register-click) - )))) + (for-of (link ((@ document query-selector-all) "a")) + (setf (@ link onclick) #'register-click) + (setf (@ link onauxclick) #'register-click))) (defun register-page-load () (let ((data (create :title (@ document title) |