shrub/mar/talk/telegrams.hoon
2015-12-20 03:48:17 -08:00

321 lines
8.4 KiB
Plaintext

::
:::: /hoon/talk-telegrams/mar
::
/? 314
/- talk
/+ talk
!:
=+ talk
|_ gam+(list telegram)
::
++ grab-work-duty => [jo work-stuff]
|^ dute
++ as
:: |*(a+fist (cu sa (ar a))) :: XX types
|* a+fist
%- cu :_ (ar a)
~(gas in *(set _(need *a)))
++ ot
|* a+(pole {@tas fist})
|= b+json
%. ((^ot a) b)
%- slog
?+ b ~
{$o *}
%+ murn `(list {@tas fist})`a
|= {c+term d+fist} ^- (unit tank)
=+ (~(get by p.b) c)
?~ - (some >[c (turn (~(tap by p.b)) head)]<)
=+ (d u)
?~ - (some >[c u]<)
~
==
++ of
|* a+(pole {@tas fist})
|= b+json
%. ((of:jo 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]<)
~
==
++ id (ci (slat %uv) so)
++ ship (su fed:ag)
++ dute
%- of :~
create#task change#(ot id#id meat#uppd ~)
archive#id update#(ot id#id version#ni her#(su fed:ag) meat#uppd ~)
==
++ task
%- ot :~
id#id 'date_created'^di
version#ni 'date_modified'^di
creator#ship doer#(mu ship)
tags#(as so) 'date_due'^(mu di)
done#(mu di) title#so
description#so discussion#(ar (ot date#di ship#ship body#so ~))
==
++ audi (as stan)
++ stan (su ;~((glue fas) ;~(pfix sig fed:ag) urs:ab))
++ uppd
%- of :~
set-doer#(mu (su fed:ag))
set-date-due#(mu di)
set-tags#(as so)
set-title#so
set-description#so
set-done#bo
add-comment#(ot ship#(su fed:ag) com#so ~)
==
--
++ grow-work-duty
=> work-stuff
=+ jope=|=(a+ship [%s (rsh 3 1 (scot %p a))])
=+ jove=|=(a+@uvI [%s (scot %uv a)])
=< |= duty
%+ joba +<-
?- +<-
$create (task tax)
$archive (jove id)
$change (jobe id#(jove id) meat#(flesh meat) ~)
$update
%- jobe :~
id#(jove id)
version#(jone version)
her#(jope her)
meat#(flesh meat)
==
==
|%
++ tags
|= a+(set @t)
[%a (turn (sort (~(tap in a)) aor) |=(b+cord s#b))]
::
++ task
|= ^task
%- jobe :~ id#[%s (scot %uv id)]
tags#(^tags tags)
doer#?~(doer ~ (jope u.doer))
title#[%s title]
creator#(jope creator)
version#(jone version)
'date_created'^(jode date-created)
'date_modified'^(jode date-modified)
description#[%s description]
=< discussion#[%a (turn discussion .)]
|=(comment (jobe date#(jode date) ship#(jope ship) body#[%s body] ~))
'date_due'^?~(date-due ~ (jode u.date-due))
done#?~(done ~ (jode u.done))
==
++ flesh
|= ^flesh
%+ joba +<-
?- +<-
$set-doer ?~(her ~ (jope u.her))
$set-date-due ?~(wen ~ (jode u.wen))
$set-tags (tags tag)
$set-title [%s til]
$set-description [%s des]
$set-done [%b don]
$add-comment (jobe ship#(jope who) com#[%s com] ~)
==
--
++ grab
|%
++ noun (list telegram)
++ mime |=(^mime (json (rash q.q apex:poja)))
++ json
=> [jo ..telegram dute=grab-work-duty]
|= a+json ^- (list telegram)
=- (need ((ar (ot ship#(su fed:ag) thought#thot ~)) a))
|%
++ of
|* a+(pole {@tas fist})
|= b+json
%. ((of:jo 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 mo
%- ci :_ (om wit)
|= a+(map cord _(need *wit))
^- (unit (list _[(wonk *fel) (need *wit)]))
(zl (turn (~(tap by a)) (head-rush fel)))
::
++ as :: array as set
:: |*(a+fist (cu sa (ar a))) :: XX types
|* a+fist
%- cu :_ (ar a)
~(gas in *(set _(need *a)))
::
++ ke :: callbacks
|* {gar+* sef+_|.(fist)}
|= jon+json
^- (unit _gar)
=- ~! gar ~! (need -) -
((sef) jon)
::
++ lake |*(a+_* $+(json (unit a)))
++ head-rush
|* a+rule
|* {b+cord c+*}
=+ nit=(rush b a)
?~ nit ~
(some [u.nit c])
::
::
++ thot
^- $+(json (unit thought))
%- ot :~
serial#(ci (slat %uv) so)
audience#audi
statement#stam
==
::
++ audi (op parn memb) :: audience
++ auri (op parn (ci (soft presence) so))
++ memb (ot envelope#lope delivery#(ci (soft delivery) so) ~)
++ lope (ot visible#bo sender#(mu (su parn)) ~)
::
++ parn
^- $+(nail (like partner))
%+ pick
;~((glue fas) ;~(pfix sig fed:ag) urs:ab)
%+ sear (soft passport)
;~((glue fas) 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:urlp) ~)
exp#(ot txt#so ~)
tax#(ot xat#dute ~)
app#(ot txt#so src#so ~)
fat#(ot tor#tors taf#spec ~)
ext#(ot nom#so txe#blob ~)
non#ul
:: inv#(ot ship#(su fed:ag) party#(su urs:ab) ~)
==
++ tors
%+ ke *torso |. ~+
%- of :~
name#(ot nom#so mon#tors ~)
text#(cu lore so)
tank#(ot dat#(cu (hard (list tank)) blob) ~)
==
::
++ blob (cu cue (su fel:ofis))
--
--
::
++ grow
|%
++ mime [/text/json (taco (crip (pojo json)))]
++ json
=> +
|^
:- %a
%+ turn gam
|= telegram
(jobe ship#(jope p) thought#(thot q) ~)
::
++ jove
|= {a+envelope b+delivery}
%- jobe :~
envelope#(jobe visible#[%b p.a] sender#?~(q.a ~ s#(parn u.q.a)) ~)
delivery#[%s b]
==
::
++ jope |=(a+ship (jape +:<a>)) ::[%s (crip +:(scow %p a))])
++ joke |=(a+tank [%s (role (turn (wash 0^80 a) crip))])
++ jode |=(a+time (jone (div (mul (sub a ~1970.1.1) 1.000) ~s1)))
++ jome :: stringify keys
|* {a+_cord b+_json}
|= c+(map _+<.a _+<.b)
(jobe (turn (~(tap by c)) (both a b)))
::
++ both :: cons two gates
|* {a+_* b+_*}
|=(c+_[+<.a +<.b] [(a -.c) (b +.c)])
::
++ thot
|= thought
(jobe serial#(jape <p>) audience#(audi q) statement#(stam r) ~)
::
++ audi (jome parn jove)
++ bouq
|= a+bouquet
a#(turn (~(tap in a)) |=(b+path a#(turn b |=(c+span s#c))))
::
++ parn
|= a+partner ^- cord
?- -.a
$& (stat p.a)
$| %- crip
?- -.p.a
$twitter "{(trip -.p.a)}/{(trip p.p.a)}"
==
==
::
++ stat
|= a+station ^- cord
(crip "{<p.a>}/{(trip q.a)}")
::
++ stam
|= statement
(jobe date#(jode p) bouquet#(bouq q) speech#(spec r) ~)
::
++ spec
|= a+speech
%+ joba -.a
?+ -.a ~|(stub#-.a !!)
$lin (jobe txt#[%s q.a] say#[%b p.a] ~)
$url (joba txt#(jape (earf p.a)))
$exp (joba txt#[%s p.a])
$tax (jobe txt#(jape (rend-work-duty p.a)) xat#(grow-work-duty p.a) ~)
$app (jobe txt#[%s q.a] src#[%s p.a] ~)
$fat (jobe tor#(tors p.a) taf#$(a q.a) ~)
$ext (jobe nom#[%s p.a] txe#(jape (sifo (jam +.a))) ~)
$non ~
:: $inv (jobe ship#(jope p.a) party#[%s q.a] ~)
==
::
++ tors
|= a+torso
%+ joba -.a
?- -.a
$text [%s (role +.a)]
$tank (jobe txt#[%a (turn +.a joke)] dat#(jape (sifo (jam +.a))) ~)
$name (jobe nom#s#p.a mon#$(a q.a) ~)
==
::
--
--
::
++ grad
|%
++ form %talk-telegrams
++ diff |=((list telegram) +<)
++ pact |=((list telegram) +<)
++ join |=({(list telegram) (list telegram)} `(unit mime)`~)
--
--