HS trigger: compound event names + detail, event-refs via host-get

- parse-trigger-cmd: use parse-compound-event-name so 'trigger foo:bar' and
  'trigger foo.bar' preserve the full event name. Also parse an optional
  detail dict '(x:42)' like parse-send-cmd.
- compiler: 3-arg (trigger NAME DETAIL TGT) emits dom-dispatch with the
  detail dict. 2-arg (trigger NAME TGT) unchanged.
- emit-on event-ref bindings now use (host-get event 'detail') → the event
  carries detail as a JS object, so the SX 'get' primitive returned nil
  and tests checking 'on foo(x) … x' saw empty values.

Net: trigger 2→6 (100%).
This commit is contained in:
2026-04-23 17:22:25 +00:00
parent d6137f0d6f
commit 7ecdd59335
4 changed files with 46 additions and 18 deletions

View File

@@ -1438,10 +1438,15 @@
(fn
()
(let
((name (get (adv!) "value")))
((name (parse-compound-event-name)))
(let
((tgt (parse-tgt-kw "on" (list (quote me)))))
(list (quote trigger) name tgt)))))
((dtl (if (= (tp-type) "paren-open") (parse-detail-dict) nil)))
(let
((tgt (parse-tgt-kw "on" (list (quote me)))))
(if
dtl
(list (quote trigger) name dtl tgt)
(list (quote trigger) name tgt)))))))
(define parse-log-cmd (fn () (list (quote log) (parse-expr))))
(define
parse-inc-cmd