From 346dcbecc20802f7bc86b5a8c4ca2d1c4bed37c0 Mon Sep 17 00:00:00 2001 From: Oscar Najera Date: Sun, 9 Feb 2025 16:15:06 +0100 Subject: for of syntax --- webstats/server.lisp | 8 ++++++++ webstats/stats.paren | 8 +++----- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'webstats') 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) -- cgit v1.2.3