Main-loop
Create a loop
chat-watch.hoon
chat-watch.hoon/- spider
/+ *strandio, *graph-store
=, strand=strand:spider
=>
|%
++ watcher
=/ m (strand ,~)
^- form:m
%- (main-loop ,~)
:~ |= ~
^- form:m
;< =cage bind:m (take-fact /graph-store)
=/ up=update !< update q.cage
?. ?=(%add-nodes -.q.up)
(pure:m ~)
=/ res=tape "{(scow %p entity.resource.q.up)}/{(scow %tas name.resource.q.up)}"
=/ node-list `(list (pair index node))`~(tap by nodes.q.up)
?~ node-list
(pure:m ~)
?: (gth (lent node-list) 1)
%- (slog leaf+"{res}: <multi-node update skipped>" ~)
(pure:m ~)
=/ from=tape (scow %p author.post.q.i.node-list)
=/ conts `(list content)`contents.post.q.i.node-list
?~ conts
(pure:m ~)
?: (gth (lent conts) 1)
%- (slog leaf+"{res}: [{from}] <mixed-type message skipped>" ~)
(pure:m ~)
?. ?=(%text -.i.conts)
%- (slog leaf+"{res}: [{from}] <non-text message skipped>" ~)
(pure:m ~)
=/ msg=tape (trip text.i.conts)
%- (slog leaf+"{res}: [{from}] {msg}" ~)
(pure:m ~)
==
--
^- thread:spider
|= arg=vase
=/ m (strand ,vase)
^- form:m
;< now=@da bind:m get-time
;< ~ bind:m (watch-our /graph-store %graph-store /updates)
;< ~ bind:m watcher
(pure:m !>(~))Try input against multiple functions
tester.hoon
tester.hoontested.hoon
tested.hoonLast updated