aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOscar Najera <hi@oscarnajera.com>2025-02-09 16:15:06 +0100
committerOscar Najera <hi@oscarnajera.com>2025-02-09 16:15:06 +0100
commit346dcbecc20802f7bc86b5a8c4ca2d1c4bed37c0 (patch)
tree793be33bf8ac9533bc0a36a863ebe411fcbb85e6
parentf72d6e79f8e463bac3bb2d14cc8b6c3009d24e37 (diff)
downloadscratch-346dcbecc20802f7bc86b5a8c4ca2d1c4bed37c0.tar.gz
scratch-346dcbecc20802f7bc86b5a8c4ca2d1c4bed37c0.tar.bz2
scratch-346dcbecc20802f7bc86b5a8c4ca2d1c4bed37c0.zip
for of syntax
-rw-r--r--webstats/server.lisp8
-rw-r--r--webstats/stats.paren8
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)