verb: allow subscribing to events

This excludes, necessarily, events that don't let us emit moves.
(+on-save, +on-peek)
This commit is contained in:
Fang 2020-05-08 01:46:29 +02:00
parent 4a6329eb09
commit ac494a265e
No known key found for this signature in database
GPG Key ID: EB035760C1BBA972
3 changed files with 59 additions and 9 deletions

View File

@ -1,5 +1,7 @@
:: Print what your agent is doing.
::
/- verb
::
|= [loud=? =agent:gall]
=| bowl-print=_|
^- agent:gall
@ -12,7 +14,7 @@
^- (quip card:agent:gall agent:gall)
%- (print bowl "{<dap.bowl>}: on-init")
=^ cards agent on-init:ag
[cards this]
[[(emit-event %on-init ~) cards] this]
::
++ on-save
^- vase
@ -24,7 +26,7 @@
^- (quip card:agent:gall agent:gall)
%- (print bowl "{<dap.bowl>}: on-load")
=^ cards agent (on-load:ag old-state)
[cards this]
[[(emit-event %on-load ~) cards] this]
::
++ on-poke
|= [=mark =vase]
@ -36,21 +38,26 @@
%bowl `this(bowl-print !bowl-print)
==
=^ cards agent (on-poke:ag mark vase)
[cards this]
[[(emit-event %on-poke mark) cards] this]
::
++ on-watch
|= =path
^- (quip card:agent:gall agent:gall)
%- (print bowl "{<dap.bowl>}: on-watch on path {<path>}")
=^ cards agent (on-watch:ag path)
[cards this]
=^ cards agent
?: ?=([%verb %events ~] path)
[~ agent]
(on-watch:ag path)
[[(emit-event %on-watch path) cards] this]
::
++ on-leave
|= =path
^- (quip card:agent:gall agent:gall)
%- (print bowl "{<dap.bowl>}: on-leave on path {<path>}")
?: ?=([%verb %event ~] path)
[~ this]
=^ cards agent (on-leave:ag path)
[cards this]
[[(emit-event %on-leave path) cards] this]
::
++ on-peek
|= =path
@ -63,21 +70,21 @@
^- (quip card:agent:gall agent:gall)
%- (print bowl "{<dap.bowl>}: on-agent on wire {<wire>}, {<-.sign>}")
=^ cards agent (on-agent:ag wire sign)
[cards this]
[[(emit-event %on-agent wire -.sign) cards] this]
::
++ on-arvo
|= [=wire =sign-arvo]
^- (quip card:agent:gall agent:gall)
%- (print bowl "{<dap.bowl>}: on-arvo on wire {<wire>}, {<[- +<]:sign-arvo>}")
=^ cards agent (on-arvo:ag wire sign-arvo)
[cards this]
[[(emit-event %on-arvo wire [- +<]:sign-arvo) cards] this]
::
++ on-fail
|= [=term =tang]
^- (quip card:agent:gall agent:gall)
%- (print bowl "{<dap.bowl>}: on-fail with term {<term>}")
=^ cards agent (on-fail:ag term tang)
[cards this]
[[(emit-event %on-fail term) cards] this]
--
::
++ print
@ -89,4 +96,9 @@
?. loud same
%- (slog leaf+tape ~)
same
::
++ emit-event
|= =event:verb
^- card:agent:gall
[%give %fact ~[/verb/events] %verb-event !>(event)]
--

View File

@ -0,0 +1,26 @@
/- verb
=, dejs:format
|_ =event:verb
++ grab
|%
++ noun event:verb
--
::
++ grow
|%
++ noun event
++ json
=, enjs:format
%+ frond -.event
?- -.event
%on-init ~
%on-load ~
%on-poke s+mark.event
%on-watch (path path.event)
%on-leave (path path.event)
%on-agent (pairs 'wire'^(path wire.event) 'sign'^s+sign.event ~)
%on-arvo (pairs 'wire'^(path wire.event) 'vane'^s+vane.event 'sign'^s+sign.event ~)
%on-fail s+term.event
==
--
--

12
pkg/arvo/sur/verb.hoon Normal file
View File

@ -0,0 +1,12 @@
|%
+$ event
$% [%on-init ~]
[%on-load ~]
[%on-poke =mark]
[%on-watch =path]
[%on-leave =path]
[%on-agent =wire sign=term]
[%on-arvo =wire vane=term sign=term]
[%on-fail =term]
==
--