mirror of
https://github.com/urbit/shrub.git
synced 2024-12-22 10:21:31 +03:00
200 lines
7.1 KiB
Plaintext
200 lines
7.1 KiB
Plaintext
|
::
|
||
|
/? 310
|
||
|
/- hall
|
||
|
=, eyre
|
||
|
=>
|
||
|
|%
|
||
|
++ audience (map partner (pair envelope delivery)) :: destination+state
|
||
|
++ bouquet (set flavor) :: complete aroma
|
||
|
++ delivery :: delivery state
|
||
|
$? $pending :: undelivered
|
||
|
$received :: delivered
|
||
|
$rejected :: undeliverable
|
||
|
$released :: sent one-way
|
||
|
$accepted :: fully processed
|
||
|
== ::
|
||
|
++ envelope (pair ? (unit partner)) :: visible sender
|
||
|
++ flavor path :: content flavor
|
||
|
++ passport :: foreign flow
|
||
|
$% {$twitter p/@t} :: twitter
|
||
|
== ::
|
||
|
++ presence ?($gone $hear $talk) :: status type
|
||
|
++ speech :: narrative action
|
||
|
$% {$lan p/knot q/@t} :: local announce
|
||
|
{$exp p/@t} :: hoon line
|
||
|
{$non ~} :: no content (yo)
|
||
|
{$ext p/@tas q/*} :: extended action
|
||
|
{$fat p/torso q/speech} :: attachment
|
||
|
{$url p/purf} :: parsed url
|
||
|
{$ire p/serial q/speech} :: in-reply-to
|
||
|
{$lin p/? q/@t} :: no/@ text line
|
||
|
{$mor p/(list speech)} :: multiplex
|
||
|
{$app p/@tas q/@t} :: app message
|
||
|
$: $api :: api message
|
||
|
service/@tas :: service name
|
||
|
id/@t :: id on the service
|
||
|
id-url/purf :: link to id
|
||
|
summary/@t :: summary of event
|
||
|
body/@t :: body of event
|
||
|
url/purf :: link to event
|
||
|
meta/json :: other data for web
|
||
|
== ::
|
||
|
== ::
|
||
|
++ serial @uvH :: unique identity
|
||
|
++ partner (each station passport) :: interlocutor
|
||
|
++ statement (trel @da bouquet speech) :: when this
|
||
|
++ station (pair ship knot) :: domestic flow
|
||
|
++ telegram (pair ship thought) :: who which whom what
|
||
|
++ thought (trel serial audience statement) :: which whom what
|
||
|
++ torso :: attachment
|
||
|
$% {$name (pair @t torso)} :: named attachment
|
||
|
{$text (list @t)} :: text lines
|
||
|
{$tank (list tank)} :: tank list
|
||
|
== ::
|
||
|
--
|
||
|
|%
|
||
|
++ from-json
|
||
|
=, dejs-soft:format
|
||
|
|: $:{a/^json} ^- (list telegram:hall)
|
||
|
=- %- zing
|
||
|
%+ turn
|
||
|
(need ((ar (ot ship+(su fed:ag) thought+thot ~)) a))
|
||
|
convert-telegram
|
||
|
|%
|
||
|
++ of
|
||
|
|* a/(pole {@tas fist})
|
||
|
|= b/^json
|
||
|
%. ((of:dejs-soft:format a) b)
|
||
|
%- slog
|
||
|
?+ b ~
|
||
|
{$o *}
|
||
|
%+ murn `(list {@tas fist})`a
|
||
|
|= {c/term d/fist} ^- (unit tank)
|
||
|
=+ (~(get by p.b) c)
|
||
|
?~ - ~
|
||
|
=+ (d u)
|
||
|
?~ - (some >[c u]<)
|
||
|
~
|
||
|
==
|
||
|
++ op :: parse keys of map
|
||
|
|* {fel/rule wit/fist}
|
||
|
%+ cu malt
|
||
|
%+ ci
|
||
|
|= a/(map cord _(need *wit))
|
||
|
^- (unit (list _[(wonk *fel) (need *wit)]))
|
||
|
(zl (turn ~(tap by a) (head-rush fel)))
|
||
|
(om wit)
|
||
|
::
|
||
|
++ as :: array as set
|
||
|
|* a/fist
|
||
|
(cu ~(gas in *(set _(need *a))) (ar a))
|
||
|
::
|
||
|
++ ke :: callbacks
|
||
|
|* {gar/* sef/_|.(fist)}
|
||
|
|= jon/^json
|
||
|
^- (unit _gar)
|
||
|
=- ~! gar ~! (need -) -
|
||
|
((sef) jon)
|
||
|
::
|
||
|
++ lake |*(a/_* $-(^json (unit a)))
|
||
|
++ head-rush
|
||
|
|* a/rule
|
||
|
|* {cord *}
|
||
|
=+ nit=(rush +<- a)
|
||
|
?~ nit ~
|
||
|
(some [u.nit +>->])
|
||
|
::
|
||
|
++ thot
|
||
|
^- $-(^json (unit thought))
|
||
|
%- ot :~
|
||
|
serial+`$-(^json (unit serial))`(ci (slat %uv) so)
|
||
|
audience+`$-(^json (unit audience))`audi
|
||
|
statement+`$-(^json (unit statement))`stam
|
||
|
==
|
||
|
::
|
||
|
++ audi `$-(^json (unit audience))`(op parn memb)
|
||
|
++ auri (op parn (ci (soft presence) so))
|
||
|
++ memb ^- $-(^json (unit (pair envelope delivery)))
|
||
|
(ot envelope+lope delivery+(ci (soft delivery) so) ~)
|
||
|
++ lope (ot visible+bo sender+(mu (su parn)) ~)
|
||
|
::
|
||
|
++ parn
|
||
|
^- $-(nail (like partner))
|
||
|
%+ pick
|
||
|
;~((glue net) ;~(pfix sig fed:ag) urs:ab)
|
||
|
%+ sear (soft passport)
|
||
|
;~((glue net) sym urs:ab) :: XX [a-z0-9_]{1,15}
|
||
|
::
|
||
|
++ stam (ot date+di bouquet+(as (ar so)) speech+spec ~)
|
||
|
++ spec
|
||
|
%+ ke *speech |. ~+
|
||
|
%- of :~
|
||
|
lin+(ot say+bo txt+so ~)
|
||
|
url+(ot txt+(su aurf:de-purl:html) ~)
|
||
|
exp+(ot txt+so ~)
|
||
|
app+(ot txt+so src+so ~)
|
||
|
fat+(ot tor+tors taf+spec ~)
|
||
|
ext+(ot nom+so txe+blob ~)
|
||
|
non+ul
|
||
|
mor+(ar spec)
|
||
|
:: inv+(ot ship+(su fed:ag) party+(su urs:ab) ~)
|
||
|
==
|
||
|
++ tors
|
||
|
%+ ke *torso |. ~+
|
||
|
%- of :~
|
||
|
name+(ot nom+so mon+tors ~)
|
||
|
text+(cu to-wain:format so)
|
||
|
tank+(ot dat+(cu (list tank) blob) ~)
|
||
|
==
|
||
|
::
|
||
|
++ blob (cu cue (su fel:de-base64:mimes:html))
|
||
|
::
|
||
|
::
|
||
|
++ convert-telegram
|
||
|
|= t/telegram
|
||
|
^- (list telegram:hall)
|
||
|
=+ aud=(convert-audience q.q.t)
|
||
|
%+ turn (convert-speech r.r.q.t)
|
||
|
|= s/speech:hall
|
||
|
[p.t p.q.t aud p.r.q.t s]
|
||
|
::
|
||
|
++ convert-audience
|
||
|
|= a/audience
|
||
|
^- audience:hall
|
||
|
%- sy
|
||
|
^- (list circle:hall)
|
||
|
%+ murn ~(tap in ~(key by a))
|
||
|
|= p/partner
|
||
|
^- (unit circle:hall)
|
||
|
?- -.p
|
||
|
%& :+ ~ p.p.p
|
||
|
?: ?| =(q.p.p 'porch')
|
||
|
=(q.p.p 'court')
|
||
|
=(q.p.p 'floor')
|
||
|
==
|
||
|
%inbox
|
||
|
q.p.p
|
||
|
%| ~
|
||
|
==
|
||
|
::
|
||
|
++ convert-speech
|
||
|
|= s/speech
|
||
|
^- (list speech:hall)
|
||
|
?+ -.s ~&([%ignoring -.s] ~)
|
||
|
$lin [%lin !p.s q.s]~
|
||
|
$url [%url p.s]~
|
||
|
$exp [%exp p.s ~]~
|
||
|
$ire %+ turn (convert-speech q.s)
|
||
|
|= i/speech:hall
|
||
|
[%ire p.s i]
|
||
|
$app [%app p.s [%lin | q.s]]~
|
||
|
$fat ?: &(?=($exp -.q.s) ?=($tank -.p.s))
|
||
|
[%exp p.q.s +.p.s]~
|
||
|
=+ ses=(convert-speech q.s)
|
||
|
=? ses =(0 (lent ses)) [%lin | '']~
|
||
|
[[%fat p.s (snag 0 ses)] (slag 1 ses)]
|
||
|
$mor (zing (turn p.s convert-speech))
|
||
|
==
|
||
|
--
|
||
|
--
|