mirror of
https://github.com/urbit/shrub.git
synced 2024-11-28 05:22:27 +03:00
Cleaning up old code
This commit is contained in:
parent
e4eae49cf9
commit
4caa90c68f
1658
arvo/ames.hoon
Normal file
1658
arvo/ames.hoon
Normal file
File diff suppressed because it is too large
Load Diff
1198
arvo/batz.hoon
Normal file
1198
arvo/batz.hoon
Normal file
File diff suppressed because it is too large
Load Diff
631
arvo/clay.hoon
Normal file
631
arvo/clay.hoon
Normal file
@ -0,0 +1,631 @@
|
||||
::
|
||||
:: clay (4c), revision control
|
||||
::
|
||||
|= pit=vase
|
||||
^- vane
|
||||
=>
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: section 4cA, filesystem logic ::
|
||||
::
|
||||
|%
|
||||
::
|
||||
++ un :: per ship
|
||||
|= [who=@p now=@da ruf=raft]
|
||||
=+ ^= yar ^- room
|
||||
=+ yar=(~(get by fat.ruf) who)
|
||||
?~(yar *room u.yar)
|
||||
=| yel=(list ,[p=duct q=card])
|
||||
=| wot=(list ,[p=duct q=tape])
|
||||
=| byn=(list ,[p=duct q=riot])
|
||||
=| vag=(list ,[p=duct q=card])
|
||||
=| say=(list ,[p=duct q=ship r=[p=@ud q=riff]])
|
||||
|%
|
||||
++ abet
|
||||
^- [(list move) raft]
|
||||
:_ ruf(fat (~(put by fat.ruf) who yar))
|
||||
;: weld
|
||||
%+ turn (flop yel)
|
||||
|=([a=duct b=card] [[~ %gold who] hun.yar b])
|
||||
::
|
||||
%+ turn (flop wot)
|
||||
|=([a=duct b=tape] [[~ %gold who] a [%wort b]])
|
||||
::
|
||||
%+ turn (flop byn)
|
||||
|=([a=duct b=riot] [[~ %gold who] a [%writ b]])
|
||||
::
|
||||
%+ turn (flop vag)
|
||||
|=([a=duct b=card] [[~ %gold who] a b])
|
||||
::
|
||||
%+ turn (flop say)
|
||||
|=([a=duct b=ship c=*] [[~ %gold who] [/a a] [%want b %re c]])
|
||||
==
|
||||
::
|
||||
++ doze
|
||||
=+ saz=(turn (~(tap by dos.yar) ~) |=([a=@tas b=*] a))
|
||||
=| nex=(unit ,@da)
|
||||
|- ^+ nex
|
||||
?~ saz nex
|
||||
$(saz t.saz, nex (hunt nex doze:(di i.saz)))
|
||||
::
|
||||
++ fray
|
||||
|= [hen=duct pal=(list disc) sab=saba]
|
||||
^+ +>
|
||||
?~ pal +>
|
||||
$(pal t.pal, +> zoot:wake:(exec:(di i.pal) hen now [%| sab]))
|
||||
::
|
||||
++ wake
|
||||
^+ .
|
||||
=+ saz=(turn (~(tap by dos.yar) ~) |=([a=@tas b=*] a))
|
||||
|- ^+ ..wake
|
||||
?~ saz ..wake
|
||||
$(saz t.saz, ..wake zoot:wake:(di i.saz))
|
||||
::
|
||||
++ de :: per desk
|
||||
|_ [for=@p syd=@ta lim=@da qyx=cult dom=dome]
|
||||
++ aeon :: act count through
|
||||
|= lok=case
|
||||
^- (unit ,@ud)
|
||||
?- -.lok
|
||||
%da
|
||||
?: (gth p.lok lim) ~
|
||||
|- ^- (unit ,@ud)
|
||||
?~ hit.dom [~ let.dom]
|
||||
?: (gte p.lok p.i.hit.dom) [~ let.dom]
|
||||
$(hit.dom t.hit.dom, let.dom (dec let.dom))
|
||||
::
|
||||
%tas (~(get by lab.dom) p.lok)
|
||||
%ud ?:((gth p.lok let.dom) ~ [~ p.lok])
|
||||
==
|
||||
::
|
||||
++ ache :: arch report
|
||||
^- arch
|
||||
:+ p.ank.dom
|
||||
?~(q.ank.dom ~ [~ p.u.q.ank.dom])
|
||||
|- ^- (map ,@ta ,~)
|
||||
?~ r.ank.dom ~
|
||||
[[p.n.r.ank.dom ~] $(r.ank.dom l.r.ank.dom) $(r.ank.dom r.r.ank.dom)]
|
||||
::
|
||||
++ amor :: endpoint query
|
||||
|= ren=?(%x %y %z)
|
||||
^- (unit ,*)
|
||||
?- ren
|
||||
%x ?~(q.ank.dom ~ [~ q.u.q.ank.dom])
|
||||
%y [~ ache]
|
||||
%z [~ ank.dom]
|
||||
==
|
||||
::
|
||||
++ ante :: rewind by change
|
||||
|= lem=maki
|
||||
^+ +>
|
||||
?- -.lem
|
||||
&
|
||||
%_ +>
|
||||
ank.dom ?. ?=(& -.p.lem) ank.dom
|
||||
ank:(dusk:(zu ank.dom) p.p.lem)
|
||||
lab.dom ?. ?=(| -.p.lem) lab.dom
|
||||
(~(del by lab.dom) p.p.lem)
|
||||
==
|
||||
::
|
||||
|
|
||||
|- ^+ +>.^$
|
||||
?~ s.p.lem +>.^$
|
||||
$(s.p.lem t.s.p.lem, +>.^$ ^$(lem i.s.p.lem))
|
||||
==
|
||||
::
|
||||
++ argo :: rewind to aeon
|
||||
|= oan=@ud
|
||||
^+ +>
|
||||
?: =(let.dom oan) +>
|
||||
?> ?=(^ hit.dom)
|
||||
?> ?=(& -.q.i.hit.dom)
|
||||
=> .(+> (ante q.i.hit.dom))
|
||||
$(let.dom (dec let.dom), hit.dom t.hit.dom)
|
||||
::
|
||||
++ auto :: read at point
|
||||
|= mun=mood
|
||||
^- (unit)
|
||||
?: ?=(%v p.mun)
|
||||
[~ dom]
|
||||
?: &(?=(%w p.mun) !?=(%ud -.q.mun))
|
||||
?^(r.mun ~ [~ let.dom])
|
||||
?: ?=(%w p.mun)
|
||||
?> ?=(^ hit.dom) ?^(r.mun ~ [~ i.hit.dom])
|
||||
(amor(ank.dom ank:(deny:(zu ank.dom) r.mun)) p.mun)
|
||||
::
|
||||
++ aver :: domestic read
|
||||
|= mun=mood
|
||||
^- (unit (unit ,*))
|
||||
=+ nao=(aeon q.mun)
|
||||
?~(nao ~ [~ (avid u.nao mun)])
|
||||
::
|
||||
++ avid :: seek and read
|
||||
|= [oan=@ud mun=mood]
|
||||
^- (unit)
|
||||
?: &(?=(%w p.mun) !?=(%ud -.q.mun)) :: NB optimization
|
||||
?^(r.mun ~ [~ oan])
|
||||
(auto:(argo oan) mun)
|
||||
::
|
||||
++ balk :: read and send
|
||||
|= [hen=duct oan=@ud mun=mood]
|
||||
^+ +>
|
||||
=+ vid=(avid oan mun)
|
||||
?~ vid (blob hen) (blab hen mun u.vid)
|
||||
::
|
||||
++ blab :: ship result
|
||||
|= [hen=duct mun=mood dat=*]
|
||||
^+ +>
|
||||
+>(byn [[hen ~ [p.mun q.mun syd] r.mun dat] byn])
|
||||
::
|
||||
++ bleb :: ship sequence
|
||||
|= [hen=duct ins=@ud hip=(list frog)]
|
||||
^+ +>
|
||||
?~ hip +>
|
||||
%= $
|
||||
hip t.hip
|
||||
ins +(ins)
|
||||
+> (blab hen [%w [%ud ins] ~] i.hip)
|
||||
==
|
||||
::
|
||||
++ blob :: ship stop
|
||||
|= hen=duct
|
||||
%_(+> byn [[hen ~] byn])
|
||||
::
|
||||
++ doze :: sleep until
|
||||
=+ xiq=(~(tap by qyx) ~)
|
||||
=| nex=(unit ,@da)
|
||||
|- ^+ nex
|
||||
?~ xiq nex
|
||||
=+ ^= zis ^+ nex
|
||||
?- -.q.i.xiq
|
||||
& ?.(?=(%da -.q.p.q.i.xiq) ~ [~ p.q.p.q.i.xiq])
|
||||
::
|
||||
|
|
||||
=+ mot=`moat`p.q.i.xiq
|
||||
%+ hunt
|
||||
?.(&(?=(%da -.p.mot) (lth now p.p.mot)) ~ [~ p.p.mot])
|
||||
?.(&(?=(%da -.q.mot) (lth now p.q.mot)) ~ [~ p.q.mot])
|
||||
==
|
||||
$(xiq t.xiq, nex (hunt nex zis))
|
||||
::
|
||||
++ ease :: unsubscribe
|
||||
|= hen=duct
|
||||
^+ +>
|
||||
+>(qyx (~(del by qyx) hen))
|
||||
::
|
||||
++ eave :: subscribe
|
||||
|= [hen=duct rav=rave]
|
||||
^+ +>
|
||||
?- -.rav
|
||||
&
|
||||
=+ ver=(aver p.rav)
|
||||
?~ ver
|
||||
+>.$(qyx (~(put by qyx) hen rav))
|
||||
?~ u.ver
|
||||
(blob hen)
|
||||
(blab hen p.rav u.u.ver)
|
||||
::
|
||||
|
|
||||
=+ nab=(aeon p.p.rav)
|
||||
?~ nab
|
||||
?> =(~ (aeon q.p.rav))
|
||||
+>.$(qyx (~(put by qyx) hen rav))
|
||||
=+ huy=(aeon q.p.rav)
|
||||
?: &(?=(^ huy) |((lth u.huy u.nab) &(=(0 u.huy) =(0 u.nab))))
|
||||
(blob hen)
|
||||
=+ top=?~(huy let.dom u.huy)
|
||||
=+ seb=(slag (sub let.dom top) hit.dom)
|
||||
=+ wid=(sub top u.nab)
|
||||
=+ fud=(flop (scag wid seb))
|
||||
=. +>.$ (bleb hen u.nab fud)
|
||||
?^ huy
|
||||
(blob hen)
|
||||
=+ ^= ptr ^- case
|
||||
?: =(0 u.nab) [%da @da]
|
||||
=+(old=(slag wid seb) ?>(?=(^ old) `case`[%da p.i.old]))
|
||||
+>.$(qyx (~(put by qyx) hen `rave`[%| ptr q.p.rav]))
|
||||
==
|
||||
::
|
||||
++ edit :: apply changes
|
||||
|= [hen=duct wen=@da lem=maki]
|
||||
^+ +>
|
||||
?- -.lem
|
||||
&
|
||||
%= +>.$
|
||||
ank.dom ?. ?=(& -.p.lem) ank.dom
|
||||
ank:(durn:(zu ank.dom) p.p.lem)
|
||||
let.dom +(let.dom)
|
||||
hit.dom :_(hit.dom [wen lem])
|
||||
lab.dom ?. ?=(| -.p.lem) lab.dom
|
||||
?< (~(has by lab.dom) p.p.lem)
|
||||
(~(put by lab.dom) p.p.lem let.dom)
|
||||
vag
|
||||
?~(hez.yar vag :_(vag [u.hez.yar [%ergo who syd +(let.dom)]]))
|
||||
::
|
||||
yel
|
||||
=+ pre=`path`~[(scot %p for) syd (scot %ud +(let.dom))]
|
||||
?- -.p.lem
|
||||
| :_ yel
|
||||
[hen %note '=' %leaf :(weld (trip p.p.lem) " " (spud pre))]
|
||||
& |- ^+ yel
|
||||
?~ q.p.p.lem yel
|
||||
:_ $(q.p.p.lem t.q.p.p.lem)
|
||||
:- hen
|
||||
:+ %note
|
||||
?-(-.q.i.q.p.p.lem %del '-', %ins '+', %mut ':')
|
||||
[%leaf (spud (weld pre p.i.q.p.p.lem))]
|
||||
==
|
||||
==
|
||||
::
|
||||
|
|
||||
|- ^+ +>.^$
|
||||
?~ s.p.lem +>.^$
|
||||
$(s.p.lem t.s.p.lem, +>.^$ ^$(lem i.s.p.lem))
|
||||
==
|
||||
::
|
||||
++ exec :: change and update
|
||||
|= [hen=duct wen=@da lem=maki]
|
||||
^+ +>
|
||||
wake:(edit hen wen lem)
|
||||
::
|
||||
++ wake :: update subscribers
|
||||
^+ .
|
||||
=+ xiq=(~(tap by qyx) ~)
|
||||
=| xaq=(list ,[p=duct q=rave])
|
||||
|- ^+ ..wake
|
||||
?~ xiq ..wake(qyx (~(gas by *cult) xaq))
|
||||
?- -.q.i.xiq
|
||||
&
|
||||
=+ nao=(aeon q.p.q.i.xiq)
|
||||
?~ nao $(xiq t.xiq, xaq [i.xiq xaq])
|
||||
$(xiq t.xiq, ..wake (balk p.i.xiq u.nao p.q.i.xiq))
|
||||
::
|
||||
|
|
||||
=+ mot=`moat`p.q.i.xiq
|
||||
=+ nab=(aeon p.mot)
|
||||
?: |(?=(~ nab) =(let.dom u.nab))
|
||||
$(xiq t.xiq, xaq [i.xiq xaq])
|
||||
?> (gte let.dom u.nab)
|
||||
?> ?=(^ hit.dom)
|
||||
=+ huy=(aeon q.mot)
|
||||
?~ huy
|
||||
=+ ptr=[%da p.i.hit.dom]
|
||||
=+ fud=(flop (scag (sub let.dom u.nab) `(list frog)`hit.dom))
|
||||
%= $
|
||||
xiq t.xiq
|
||||
xaq [[p.i.xiq [%| ptr q.mot]] xaq]
|
||||
..wake (bleb p.i.xiq let.dom fud)
|
||||
==
|
||||
=+ yad=(slag (sub let.dom u.huy) `(list frog)`hit.dom)
|
||||
=+ fud=(flop (scag (sub u.huy u.nab) yad))
|
||||
%= $
|
||||
xiq t.xiq
|
||||
..wake (blob:(bleb p.i.xiq +(u.nab) fud))
|
||||
==
|
||||
==
|
||||
::
|
||||
++ zoot
|
||||
%_(..de dos.yar (~(put by dos.yar) syd qyx dom))
|
||||
--
|
||||
::
|
||||
++ di
|
||||
|= syd=@ta
|
||||
=+ ^= saq ^- desk
|
||||
=+ saq=(~(get by dos.yar) syd)
|
||||
?~(saq [~ [~ [@uvH ~ ~] 0 ~ ~]] u.saq)
|
||||
~(. de who syd now p.saq q.saq)
|
||||
::
|
||||
++ fa
|
||||
|= him=ship
|
||||
=+ ^= raz
|
||||
=+ raz=(~(get by rid.yar) him)
|
||||
?~(raz [p=*rind q=*rink] u.raz)
|
||||
|%
|
||||
++ mete :: foreign request
|
||||
|= [hen=duct ryf=riff]
|
||||
^+ +>
|
||||
=+ nux=(~(get by fod.p.raz) hen)
|
||||
?^ nux
|
||||
?> ?=(~ q.ryf)
|
||||
%= +>.$
|
||||
say [[[[%c (scot %ud u.nux) ~] hen] him [u.nux ryf]] say]
|
||||
fod.p.raz (~(del by fod.p.raz) hen)
|
||||
bim.p.raz (~(del by bim.p.raz) u.nux)
|
||||
==
|
||||
?~ q.ryf +>.$
|
||||
=+ inx=nix.p.raz
|
||||
%= +>.$
|
||||
say [[[[%c (scot %ud inx) ~] hen] him [inx ryf]] say]
|
||||
nix.p.raz +(nix.p.raz)
|
||||
bim.p.raz (~(put by bim.p.raz) inx [hen ryf])
|
||||
fod.p.raz (~(put by fod.p.raz) hen inx)
|
||||
==
|
||||
::
|
||||
++ mote :: send/cancel request
|
||||
|= [hen=duct ryf=riff]
|
||||
^+ +>
|
||||
(mete hen ryf)
|
||||
:: =+ rym=(~(get by mir.q.raz) p.ryf)
|
||||
:: ?~ rym (mete hen ryf)
|
||||
:: =+ wex=~(. de [who p.ryf lim.u.rym qyx.u.rym dom.u.rym])
|
||||
:: =+ wak=?~(q.ryf (ease:wex hen) (eave:wex hen u.q.ryf))
|
||||
:: =: byn byn.wak
|
||||
:: qyx.u.rym qyx.wak
|
||||
:: dom.u.rym dom.wak
|
||||
:: ==
|
||||
:: +>.$(mir.q.raz (~(put by mir.q.raz) p.ryf u.rym))
|
||||
::
|
||||
++ poll :: pull result
|
||||
|= [hen=duct syd=disc rot=riot]
|
||||
^+ +>
|
||||
=+ rum=(need (~(get by mir.q.raz) syd))
|
||||
=+ kas=(need ask.rum)
|
||||
=< abet
|
||||
=< able
|
||||
|%
|
||||
++ abet
|
||||
^+ +>.$
|
||||
+>.$(mir.q.raz (~(put by mir.q.raz) syd rum))
|
||||
::
|
||||
++ able
|
||||
^+ .
|
||||
?~ rot
|
||||
%- pith(ask.rum ~, lim.rum kas)
|
||||
~(. de [him syd kas qyx.rum dom.rum])
|
||||
?> ?=(%w p.p.u.rot)
|
||||
?> =(syd r.p.u.rot)
|
||||
?> =(~ q.u.rot)
|
||||
?> ?=(%ud -.q.p.u.rot)
|
||||
?> =(let.dom.rum p.q.p.u.rot)
|
||||
=+ rog=((hard frog) r.u.rot)
|
||||
=+ sab=`saba`[him syd [p.q.p.u.rot +(p.q.p.u.rot)] [q.rog ~]]
|
||||
=. ..fa (fray hen pal.rum sab)
|
||||
(pith (~(exec de [him syd lim.rum qyx.rum dom.rum]) hen rog))
|
||||
::
|
||||
++ pith
|
||||
|= wex=_de
|
||||
^+ +>
|
||||
=+ wak=wake:wex
|
||||
%_ +>.$
|
||||
byn byn.wak
|
||||
yel yel.wak
|
||||
qyx.rum qyx.wak
|
||||
dom.rum dom.wak
|
||||
==
|
||||
--
|
||||
::
|
||||
++ puke :: pull failed
|
||||
|= [hen=duct syd=disc msg=tape]
|
||||
^+ +>
|
||||
%_ +>
|
||||
mir.q.raz (~(del by mir.q.raz) syd)
|
||||
yel [[hen [%note '?' %leaf msg]] yel]
|
||||
==
|
||||
::
|
||||
++ pull :: pull changeset
|
||||
|= [hen=duct syd=disc pal=(list disc)]
|
||||
^+ +>
|
||||
=+ ^= rum ^- rede
|
||||
=+ rum=(~(get by mir.q.raz) syd)
|
||||
?^ rum u.rum [~2000.1.1 ~ pal ~ [~ [@uvH ~ ~] 0 ~ ~]]
|
||||
?> ?=(~ ask.rum)
|
||||
=> .(ask.rum [~ now])
|
||||
=. +>.$
|
||||
%+ mete
|
||||
[[%c %pull (scot %p him) syd ~] hen]
|
||||
[syd ~ %| [%da lim.rum] [%da now]]
|
||||
+>.$(mir.q.raz (~(put by mir.q.raz) syd rum))
|
||||
::
|
||||
++ tome :: accept response
|
||||
|= [inx=@ud rot=riot]
|
||||
^+ +>
|
||||
:: ~& [%tome inx ?~(rot ~ [p.u.rot q.u.rot])]
|
||||
=+ mub=(~(get by bim.p.raz) inx)
|
||||
?~ mub +>.$
|
||||
=+ die=?~(rot & &(?=(^ q.q.u.mub) ?=(& -.u.q.q.u.mub)))
|
||||
%= +>.$
|
||||
byn [[p.u.mub rot] byn]
|
||||
bim.p.raz ?.(die bim.p.raz (~(del by bim.p.raz) inx))
|
||||
fod.p.raz ?.(die fod.p.raz (~(del by fod.p.raz) p.u.mub))
|
||||
hac.q.raz ?~ rot
|
||||
hac.q.raz
|
||||
%+ ~(put by hac.q.raz)
|
||||
[p.p.u.rot q.p.u.rot r.p.u.rot q.u.rot]
|
||||
r.u.rot
|
||||
==
|
||||
::
|
||||
++ tref :: request rejected
|
||||
|= [hen=duct tea=wire]
|
||||
^+ +>
|
||||
~& [%tref tea]
|
||||
?. ?=([@ *] tea) +>
|
||||
=+ xoc=(slay i.tea)
|
||||
?: ?=([~ %$ %p @] xoc)
|
||||
?> ?=([@ ~] t.tea)
|
||||
(puke hen i.t.tea "system failure")
|
||||
?. ?=([~ %$ %ud @] xoc) +>.$
|
||||
=+ mub=(~(get by bim.p.raz) q.p.u.xoc)
|
||||
?~ mub +>.$
|
||||
%= +>.$
|
||||
byn [[p.u.mub ~] byn]
|
||||
fod.p.raz (~(del by fod.p.raz) q.p.u.xoc)
|
||||
==
|
||||
::
|
||||
++ vera :: search
|
||||
|= [syd=@tas ren=care lok=case way=path]
|
||||
^- (unit)
|
||||
=+ haz=(~(get by hac.q.raz) ren lok syd way)
|
||||
?^ haz haz
|
||||
=+ rym=(~(get by mir.q.raz) syd)
|
||||
?~ rym ~
|
||||
=+ vyr=(~(aver de [him syd lim.u.rym qyx.u.rym dom.u.rym]) ren lok way)
|
||||
?~(vyr ~ u.vyr)
|
||||
::
|
||||
++ zoom
|
||||
%_(+>.$ rid.yar (~(put by rid.yar) him raz))
|
||||
--
|
||||
--
|
||||
--
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: section 4cA, filesystem vane ::
|
||||
:: ::
|
||||
=| :: instrument state
|
||||
$: ruf=raft :: revision tree
|
||||
== ::
|
||||
|= [now=@da eny=@ sky=||(* (unit))] :: activate
|
||||
^? :: opaque core
|
||||
|% ::
|
||||
++ beat :: update
|
||||
|= [wru=(unit writ) tea=wire hen=duct fav=curd]
|
||||
=> .(fav ((hard card) fav))
|
||||
^- [p=(list move) q=vane]
|
||||
?+ -.fav [[[wru hen fav] ~] ..^$]
|
||||
%crud
|
||||
[[[wru [/d hen] %flog fav] ~] ..^$]
|
||||
::
|
||||
%deem
|
||||
=. wru
|
||||
?^ wru wru
|
||||
?. =(%gold (adit hen)) ~
|
||||
[~ %gold p.fav]
|
||||
$(fav q.fav)
|
||||
::
|
||||
%init
|
||||
:: [[%tell %0 %leaf "clay: home for {~(rend co ~ %p q.u.wru)}"] ~]
|
||||
[~ ..^$(fat.ruf (~(put by fat.ruf) q.u.wru [hen ~ ~ ~ ~]))]
|
||||
::
|
||||
?(%into %info)
|
||||
=. wru
|
||||
?^ wru wru
|
||||
?. =(%gold (adit hen)) ~
|
||||
[~ %gold p.fav]
|
||||
?> =(q.u.wru p.fav)
|
||||
?: =(%$ q.fav)
|
||||
?. ?=(%into -.fav) [~ ..^$]
|
||||
=+ yar=(need (~(get by fat.ruf) p.fav))
|
||||
[~ ..^$(fat.ruf (~(put by fat.ruf) p.fav yar(hez [~ hen])))]
|
||||
=^ mos ruf
|
||||
=+ ^= zot
|
||||
zoot:(exec:(di:wake:(un q.u.wru now ruf) q.fav) hen now [%& r.fav])
|
||||
abet:zot(hez.yar ?.(=(%into -.fav) hez.yar.zot [~ hen]))
|
||||
[mos ..^$]
|
||||
::
|
||||
%pull
|
||||
?> ?=(^ wru)
|
||||
?> !=(q.u.wru q.fav)
|
||||
=^ mos ruf
|
||||
abet:zoom:(pull:(fa:(un q.u.wru now ruf) p.fav) hen q.fav r.fav)
|
||||
[mos ..^$]
|
||||
::
|
||||
%warp
|
||||
?> ?=(^ wru)
|
||||
=^ mos ruf
|
||||
=< abet
|
||||
=+ une=(un q.u.wru now ruf)
|
||||
:: ~& [%warp q.u.wru p.fav]
|
||||
?. =(q.u.wru p.fav)
|
||||
zoom:(mote:(fa:une p.fav) hen q.fav)
|
||||
=+ wex=(di:une p.q.fav)
|
||||
?~ q.q.fav
|
||||
zoot:(ease:wex hen)
|
||||
zoot:(eave:wex hen u.q.q.fav)
|
||||
[mos ..^$]
|
||||
::
|
||||
%wart
|
||||
?> ?=(%ru q.fav)
|
||||
?~ s.fav [~ ..^$]
|
||||
=^ mos ruf
|
||||
=< abet
|
||||
=< zoom
|
||||
(tome:(fa:(un q.u.wru now ruf) p.fav) ((hard ,[@ud riot]) u.s.fav))
|
||||
[mos ..^$]
|
||||
::
|
||||
%went
|
||||
?: =(%good q.fav) [~ ..^$]
|
||||
?> ?=([@ *] tea)
|
||||
=+ une=(un q.u.wru now ruf)
|
||||
=^ mos ruf
|
||||
?+ i.tea ~&([%went-wrong tea] !!)
|
||||
%pull
|
||||
abet:zoom:(tref:(fa:une p.fav) hen t.tea)
|
||||
==
|
||||
[mos ..^$]
|
||||
::
|
||||
%wake
|
||||
=+ dal=(turn (~(tap by fat.ruf) ~) |=([a=@p b=room] a))
|
||||
=| mos=(list move)
|
||||
|- ^- [p=(list move) q=vane]
|
||||
?~ dal [mos ..^^$(las.ruf now)]
|
||||
=^ som ruf abet:wake:(un i.dal now ruf)
|
||||
$(dal t.dal, mos (weld som mos))
|
||||
::
|
||||
%wort
|
||||
?> ?=([@ *] tea)
|
||||
=+ une=(un q.u.wru now ruf)
|
||||
=^ mos ruf
|
||||
?+ i.tea !!
|
||||
%pull
|
||||
?> ?=([@ @ ~] t.tea)
|
||||
=+ xoc=(slay i.t.tea)
|
||||
?> ?=([~ %$ %p @] xoc)
|
||||
=< abet
|
||||
=< zoom
|
||||
(puke:(fa:(un q.u.wru now ruf) q.p.u.xoc) hen i.t.t.tea p.fav)
|
||||
==
|
||||
[mos ..^$]
|
||||
::
|
||||
%writ
|
||||
?> ?=([@ *] tea)
|
||||
=+ une=(un q.u.wru now ruf)
|
||||
=^ mos ruf
|
||||
?+ i.tea ~&([%writ-bad tea] !!)
|
||||
%pull
|
||||
?> ?=([@ @ ~] t.tea)
|
||||
=+ xoc=(slay i.t.tea)
|
||||
?> ?=([~ %$ %p @] xoc)
|
||||
=< abet
|
||||
=< zoom
|
||||
(poll:(fa:(un q.u.wru now ruf) q.p.u.xoc) hen i.t.t.tea p.fav)
|
||||
==
|
||||
[mos ..^$]
|
||||
==
|
||||
::
|
||||
++ come
|
||||
|= old=vase
|
||||
^- vane
|
||||
~|(%load-nest-clay !!)
|
||||
::
|
||||
++ doze
|
||||
|= [now=@da hen=duct]
|
||||
=| nex=(unit ,@da)
|
||||
=+ dal=(turn (~(tap by fat.ruf) ~) |=([a=@p b=room] a))
|
||||
|- ^+ nex
|
||||
?~ dal nex
|
||||
$(dal t.dal, nex (hunt nex doze:(un i.dal now ruf)))
|
||||
::
|
||||
++ flee stay
|
||||
::
|
||||
++ load
|
||||
|= new=vase
|
||||
^- vane
|
||||
?. (~(nest ut -:!>(ruf)) & p.new)
|
||||
(come new)
|
||||
..^$(ruf (raft q.new))
|
||||
::
|
||||
++ raze
|
||||
^- vane
|
||||
..$(ruf *raft)
|
||||
::
|
||||
++ scry :: inspect
|
||||
|= [our=ship ron=@tas his=ship syd=disc lot=coin tyl=path]
|
||||
^- (unit)
|
||||
=+ luk=?.(?=(%$ -.lot) ~ ((soft case) p.lot))
|
||||
=+ run=((soft care) ron)
|
||||
?~ luk ~
|
||||
?~ run ~
|
||||
?. =(our his)
|
||||
(vera:(fa:(un our now ruf) his) syd u.run u.luk tyl)
|
||||
=+ vyr=(aver:(di:(un our now ruf) syd) u.run u.luk tyl)
|
||||
?~(vyr ~ u.vyr)
|
||||
::
|
||||
++ stay `vase`!>(ruf)
|
||||
--
|
349
arvo/dill.hoon
Normal file
349
arvo/dill.hoon
Normal file
@ -0,0 +1,349 @@
|
||||
::
|
||||
:: dill (4d), terminal handling
|
||||
::
|
||||
|= pit=vase
|
||||
^- vane :: kernel instrument
|
||||
=| $: dug=(map duct yard)
|
||||
== ::
|
||||
|= [now=@da eny=@ sky=||(* (unit))] :: current invocation
|
||||
^? :: opaque core
|
||||
|% :: poke/peek pattern
|
||||
++ beat :: process move
|
||||
|= [wru=(unit writ) tea=wire hen=duct fav=curd]
|
||||
=> .(fav ((hard card) fav))
|
||||
^- [p=(list move) q=vane]
|
||||
?: ?=(%flog -.fav)
|
||||
:_ ..^$
|
||||
%+ turn (~(tap by dug) *(list ,[p=duct q=yard]))
|
||||
|=([a=duct b=yard] [wru [/d a] p.fav])
|
||||
=+ ^= yar ^- yard
|
||||
=+ yar=(~(get by dug) hen)
|
||||
?^ yar u.yar
|
||||
[& [80 ~ *blot] ~]
|
||||
=| mos=(list move)
|
||||
=+ wip=|
|
||||
=< yerk:leap
|
||||
|%
|
||||
++ beep (curb [[%bel ~] ~]) :: send beep
|
||||
++ curb :: send blits
|
||||
|= wab=(list blit)
|
||||
^+ +>
|
||||
?~ wab +>
|
||||
+>(mos [[~ hen [%blit (flop wab)]] mos])
|
||||
::
|
||||
++ edit :: change the bed
|
||||
|= bed=bead
|
||||
^+ +>
|
||||
=. q.q.yar [~ bed]
|
||||
%- curb
|
||||
:~ [%hop (add pol.bed bus.bed)]
|
||||
:- %lin
|
||||
%+ weld pot.bed
|
||||
?- buy.bed
|
||||
%none but.bed
|
||||
%text but.bed
|
||||
%pass `(list ,@)`(runt [(lent but.bed) '*'] ~)
|
||||
==
|
||||
==
|
||||
::
|
||||
++ fume :: print tank, prefix
|
||||
|= [pef=@tD tac=tank]
|
||||
^+ +>
|
||||
=+ wol=(~(win re tac) 2 p.q.yar)
|
||||
%- furl
|
||||
%+ turn wol
|
||||
|= a=tape ^- tape
|
||||
?> ?=([@ @ *] a)
|
||||
[pef ' ' t.t.a]
|
||||
::
|
||||
++ furl :: print wall
|
||||
|= wol=(list tape)
|
||||
^+ +>
|
||||
=. +>
|
||||
%- curb
|
||||
%- flop
|
||||
|- ^- (list blit)
|
||||
?~ wol ~
|
||||
[[%lin (tuba i.wol)] [%mor ~] $(wol t.wol)]
|
||||
?~ q.q.yar +>
|
||||
(edit(q.q.yar ~) u.q.q.yar)
|
||||
::
|
||||
++ gore :: move in history
|
||||
|= hup=@ud
|
||||
^+ +>
|
||||
=+ ^= but ^- (list ,@c)
|
||||
=+ byt=(~(get by hym.u.q.q.yar) hup)
|
||||
?^ byt u.byt
|
||||
(tuba (rip 3 (snag hup q.hyt.u.q.q.yar)))
|
||||
=+ bul=(lent but)
|
||||
%- edit
|
||||
%= u.q.q.yar
|
||||
hiz hup
|
||||
hym %+ ~(put by hym.u.q.q.yar)
|
||||
hiz.u.q.q.yar
|
||||
but.u.q.q.yar
|
||||
bus bul
|
||||
bul (lent but)
|
||||
but but
|
||||
==
|
||||
::
|
||||
++ kill :: add to kill ring
|
||||
|= txt=(list ,@c)
|
||||
^+ +>
|
||||
=> ?. =(16 p.r.q.yar) .
|
||||
.(p.r.q.yar 15, r.r.q.yar (scag 15 r.r.q.yar))
|
||||
%= +>
|
||||
p.r.q.yar +(p.r.q.yar)
|
||||
q.r.q.yar 0
|
||||
r.r.q.yar [txt r.r.q.yar]
|
||||
==
|
||||
::
|
||||
++ leap :: terminal event
|
||||
|- ^+ +
|
||||
?+ -.fav
|
||||
+(mos :_(mos [wru hen fav]))
|
||||
%noop +
|
||||
::
|
||||
%belt :: terminal input
|
||||
?~ q.q.yar
|
||||
beep
|
||||
?- -.p.fav
|
||||
%aro :: arrow
|
||||
?- p.p.fav
|
||||
%d :: down
|
||||
?: =(0 hiz.u.q.q.yar)
|
||||
beep
|
||||
(gore (dec hiz.u.q.q.yar))
|
||||
::
|
||||
%l :: left
|
||||
?: =(0 bus.u.q.q.yar)
|
||||
beep
|
||||
(edit u.q.q.yar(bus (dec bus.u.q.q.yar)))
|
||||
::
|
||||
%r :: right
|
||||
?: =(bul.u.q.q.yar bus.u.q.q.yar)
|
||||
beep
|
||||
(edit u.q.q.yar(bus +(bus.u.q.q.yar)))
|
||||
::
|
||||
%u
|
||||
=+ hup=+(hiz.u.q.q.yar)
|
||||
?: =(hup p.hyt.u.q.q.yar)
|
||||
beep
|
||||
(gore hup)
|
||||
==
|
||||
::
|
||||
%bac :: backspace
|
||||
^+ +.$
|
||||
?: =(0 bus.u.q.q.yar)
|
||||
(curb `(list blit)`[[%bel ~] ~])
|
||||
%- edit
|
||||
%= u.q.q.yar
|
||||
bus (dec bus.u.q.q.yar)
|
||||
bul (dec bul.u.q.q.yar)
|
||||
but
|
||||
%+ weld
|
||||
(scag (dec bus.u.q.q.yar) but.u.q.q.yar)
|
||||
(slag bus.u.q.q.yar but.u.q.q.yar)
|
||||
==
|
||||
::
|
||||
%ctl :: control
|
||||
?+ p.p.fav
|
||||
beep
|
||||
%a (edit u.q.q.yar(bus 0))
|
||||
%b $(fav [%belt %aro %l])
|
||||
%c +.$(mos :_(mos [wru [/b /d hen] [%kill ~]]))
|
||||
%d ?: ?& =(0 bul.u.q.q.yar)
|
||||
=(0 bus.u.q.q.yar)
|
||||
==
|
||||
$(fav [%logo ~])
|
||||
$(fav [%belt %del ~])
|
||||
%e (edit u.q.q.yar(bus bul.u.q.q.yar))
|
||||
%f $(fav [%belt %aro %r])
|
||||
%k ?: =(bul.u.q.q.yar bus.u.q.q.yar)
|
||||
beep
|
||||
=> .(+.$ (kill (slag bus.u.q.q.yar but.u.q.q.yar)))
|
||||
%- edit
|
||||
%= u.q.q.yar
|
||||
bul bus.u.q.q.yar
|
||||
but (scag bus.u.q.q.yar but.u.q.q.yar)
|
||||
==
|
||||
%l +.$(mos :_(mos [~ hen %blit [[%clr ~] ~]]))
|
||||
%n $(fav [%belt %aro %d])
|
||||
%p $(fav [%belt %aro %u])
|
||||
%u ?: =(0 bus.u.q.q.yar)
|
||||
beep
|
||||
=> .(+.$ (kill (scag bus.u.q.q.yar but.u.q.q.yar)))
|
||||
%- edit
|
||||
%= u.q.q.yar
|
||||
bus 0
|
||||
bul (sub bul.u.q.q.yar bus.u.q.q.yar)
|
||||
but (slag bus.u.q.q.yar but.u.q.q.yar)
|
||||
==
|
||||
%w +.$(mos :_(mos [wru [/b /d hen] [%limn ~]]))
|
||||
%x +.$(mos :_(mos [wru [/b /d hen] [%ling ~]]))
|
||||
%y ?: =(0 p.r.q.yar)
|
||||
beep
|
||||
$(fav [%belt %txt (snag q.r.q.yar r.r.q.yar)])
|
||||
==
|
||||
::
|
||||
%del :: delete
|
||||
?: =(bul.u.q.q.yar bus.u.q.q.yar)
|
||||
beep
|
||||
%- edit
|
||||
%= u.q.q.yar
|
||||
bul (dec bul.u.q.q.yar)
|
||||
but
|
||||
%+ weld
|
||||
(scag bus.u.q.q.yar but.u.q.q.yar)
|
||||
(slag +(bus.u.q.q.yar) but.u.q.q.yar)
|
||||
==
|
||||
::
|
||||
%met :: meta
|
||||
?+ p.p.fav
|
||||
beep
|
||||
%y
|
||||
?: =(0 p.r.q.yar)
|
||||
beep
|
||||
=+ dol=(snag q.r.q.yar r.r.q.yar)
|
||||
=+ leo=(lent dol)
|
||||
?. (gte bus.u.q.q.yar leo)
|
||||
beep
|
||||
=+ pey=(sub bus.u.q.q.yar leo)
|
||||
?. =(dol (swag [pey leo] but.u.q.q.yar))
|
||||
beep
|
||||
=. q.r.q.yar ?:(=(p.r.q.yar +(q.r.q.yar)) 0 +(q.r.q.yar))
|
||||
=+ ney=(snag q.r.q.yar r.r.q.yar)
|
||||
=+ lye=(lent ney)
|
||||
%- edit
|
||||
%= u.q.q.yar
|
||||
bus (sub (add bus.u.q.q.yar lye) leo)
|
||||
bul (sub (add bul.u.q.q.yar lye) leo)
|
||||
but %+ weld
|
||||
(scag pey but.u.q.q.yar)
|
||||
%+ weld
|
||||
`(list ,@c)`ney :: XX weird fuse-loop
|
||||
(slag bus.u.q.q.yar but.u.q.q.yar)
|
||||
==
|
||||
==
|
||||
::
|
||||
%ret :: return
|
||||
=+ jab=(rap 3 (tufa but.u.q.q.yar))
|
||||
%= +.$
|
||||
q.q.yar ~
|
||||
r.yar
|
||||
?: |(=(%$ jab) =(%pass buy.u.q.q.yar))
|
||||
r.yar
|
||||
%+ ~(put by r.yar)
|
||||
hux.u.q.q.yar
|
||||
[p.hyt.u.q.q.yar [jab +.q.hyt.u.q.q.yar]]
|
||||
::
|
||||
mos
|
||||
:* [~ [/b /d hen] [%hail ~]]
|
||||
[~ hen [%bbye ~]]
|
||||
[wru [/b /d hen] [%line jab]]
|
||||
[~ hen [%blit [[%mor ~] ~]]]
|
||||
mos
|
||||
==
|
||||
==
|
||||
::
|
||||
%txt :: text keys
|
||||
=+ let=(lent p.p.fav)
|
||||
%- edit
|
||||
%= u.q.q.yar
|
||||
bus (add let bus.u.q.q.yar)
|
||||
bul (add let bul.u.q.q.yar)
|
||||
but
|
||||
;: weld
|
||||
(scag bus.u.q.q.yar but.u.q.q.yar)
|
||||
p.p.fav
|
||||
(slag bus.u.q.q.yar but.u.q.q.yar)
|
||||
==
|
||||
==
|
||||
==
|
||||
::
|
||||
%blew +.$(p.q.yar p.p.fav) :: window size
|
||||
%boot
|
||||
%= +.$
|
||||
mos
|
||||
:_(mos [wru [[%b ~] [%d tea] hen] p.fav])
|
||||
==
|
||||
::
|
||||
%crud :: error trace
|
||||
=. q.fav [[%leaf (trip p.fav)] q.fav]
|
||||
|- ^+ +.^$
|
||||
?~ q.fav +.^$
|
||||
(fume:$(q.fav t.q.fav) '!' i.q.fav)
|
||||
::
|
||||
%helo :: trigger prompt
|
||||
%- edit
|
||||
=| bed=bead
|
||||
=+ ^= hyt ^- hist
|
||||
=+ hyt=(~(get by r.yar) p.fav)
|
||||
?~(hyt *hist u.hyt)
|
||||
=+ zon=(tuba r.q.fav)
|
||||
=+ zow=(lent zon)
|
||||
%= bed
|
||||
bul zow
|
||||
bus zow
|
||||
but zon
|
||||
buy p.q.fav
|
||||
hux p.fav
|
||||
hiz 0
|
||||
hyt [+(p.hyt) [%$ q.hyt]]
|
||||
pot q.q.fav
|
||||
pol (lent q.q.fav)
|
||||
==
|
||||
::
|
||||
?(%hail %make %loin %sith)
|
||||
+.$(mos :_(mos [wru [/b /d hen] fav]))
|
||||
::
|
||||
%note ?.(p.yar +.$ (fume p.fav q.fav)) :: debug message
|
||||
%save :: write a file
|
||||
%= +.$
|
||||
mos :_(mos [wru hen `card`[%blit [%sav p.fav q.fav] ~]])
|
||||
==
|
||||
::
|
||||
%tell (furl (turn p.fav |=(a=@t (trip a)))) :: wall of text
|
||||
%text $(fav [%talk %leaf p.fav]) :: simple message
|
||||
%talk (furl (~(win re p.fav) 0 p.q.yar)) :: program output
|
||||
%warn (fume '~' [%leaf p.fav]) :: system message
|
||||
%wipe +.$(wip &) :: delete old
|
||||
==
|
||||
::
|
||||
++ yerk :: complete core
|
||||
^- [p=(list move) q=_..^$]
|
||||
:- (flop mos)
|
||||
..^$(dug ?.(wip (~(put by dug) hen yar) (~(del by dug) hen)))
|
||||
--
|
||||
::
|
||||
++ come
|
||||
|= old=vase
|
||||
^- vane
|
||||
~|(%load-nest-dill !!)
|
||||
::
|
||||
++ doze
|
||||
|= [now=@da hen=duct]
|
||||
^- (unit ,@da)
|
||||
~
|
||||
::
|
||||
++ flee stay
|
||||
++ load
|
||||
|= new=vase
|
||||
^- vane
|
||||
?. (~(nest ut -:!>(dug)) & p.new)
|
||||
(come new)
|
||||
%_ ..^$
|
||||
dug ((map duct yard) q.new)
|
||||
==
|
||||
::
|
||||
++ raze
|
||||
^- vane
|
||||
..$(dug ~)
|
||||
::
|
||||
++ scry
|
||||
|= [our=ship ren=@tas his=ship syd=disc lot=coin tyl=path]
|
||||
^- (unit)
|
||||
~
|
||||
::
|
||||
++ stay `vase`!>(dug)
|
||||
--
|
166
arvo/eyre.hoon
Normal file
166
arvo/eyre.hoon
Normal file
@ -0,0 +1,166 @@
|
||||
::
|
||||
:: eyre (4e), http servant
|
||||
::
|
||||
|= pit=vase
|
||||
^- vane :: kernel instrument
|
||||
=> =~
|
||||
|%
|
||||
++ bolo :: eyre state
|
||||
$: wig=(map duct (list rout)) :: server routes
|
||||
ged=duct :: client interface
|
||||
giv=[p=@ud q=(map ,@ud duct)] :: incoming requests
|
||||
ask=[p=@ud q=(map ,@ud ,[p=duct q=hiss])] :: outgoing requests
|
||||
kes=(map duct ,@ud) :: outgoing requests
|
||||
==
|
||||
::
|
||||
++ ecco :: eat headers
|
||||
|= hed=(list ,[p=@t q=@t])
|
||||
=+ mah=*math
|
||||
|- ^- math
|
||||
?~ hed mah
|
||||
=+ cus=(cass (rip 3 p.i.hed))
|
||||
=+ zeb=(~(get by mah) cus)
|
||||
$(hed t.hed, mah (~(put by mah) cus ?~(zeb [q.i.hed ~] [q.i.hed u.zeb])))
|
||||
::
|
||||
++ hone :: host match
|
||||
|= [fro=host too=host] ^- ?
|
||||
?- -.fro
|
||||
| =(too fro)
|
||||
&
|
||||
?& ?=(& -.too)
|
||||
|- ^- ?
|
||||
?~ p.too &
|
||||
?~ p.fro |
|
||||
?: !=(i.p.too i.p.fro) |
|
||||
$(p.too t.p.too, p.fro t.p.fro)
|
||||
==
|
||||
==
|
||||
::
|
||||
++ loot :: match route
|
||||
|= [uri=purl rut=rout]
|
||||
^- (unit scud)
|
||||
?. |- ^- ?
|
||||
?~ p.rut |
|
||||
=(i.p.rut `host`r.p.uri)
|
||||
~
|
||||
=+ tac=*path
|
||||
|- ^- (unit scud)
|
||||
?~ q.rut
|
||||
:- ~
|
||||
:- :(weld (flop q.q.uri) tac s.rut)
|
||||
`scar`[p.uri (flop tac) p.q.uri s.rut]
|
||||
?: |(?=(~ q.q.uri) !=(i.q.rut i.q.q.uri))
|
||||
~
|
||||
$(q.rut t.q.rut, q.q.uri t.q.q.uri, tac [i.q.rut tac])
|
||||
--
|
||||
. ==
|
||||
=| bolo
|
||||
|= [now=@da eny=@ sky=||(* (unit))] :: activate
|
||||
^? :: opaque core
|
||||
|% ::
|
||||
++ beat :: process move
|
||||
|= [wru=(unit writ) tea=wire hen=duct fav=curd]
|
||||
=> .(fav ((hard card) fav))
|
||||
^- [p=(list move) q=vane]
|
||||
?+ -.fav
|
||||
[[[wru hen fav] ~] ..^$]
|
||||
::
|
||||
%band :: set/clear route
|
||||
[~ ..^$(wig ?~(q.fav (~(del by wig) hen) (~(put by wig) hen q.fav)))]
|
||||
::
|
||||
%born
|
||||
[~ ..^$(ged hen)] :: XX retry all gets, abort all puts
|
||||
::
|
||||
%crud
|
||||
[[[wru [/d hen] %flog fav] ~] ..^$]
|
||||
::
|
||||
%that :: response by us
|
||||
=+ neh=(need (~(get by q.giv) p.fav))
|
||||
:_ ..^$(q.giv (~(del by q.giv) p.fav))
|
||||
:_ ~
|
||||
:+ ~ neh
|
||||
:- %thou
|
||||
^- httr
|
||||
?- -.q.fav
|
||||
%mid [200 ~[content-type/(moon p.q.fav)] [~ q.q.fav]]
|
||||
%ham [200 ~[content-type/'text/html'] [~ (tact (xmlt p.q.fav ~))]]
|
||||
%raw p.q.fav
|
||||
==
|
||||
::
|
||||
%them :: outgoing request
|
||||
?~ p.fav
|
||||
=+ sud=(need (~(get by kes) hen))
|
||||
:- [[~ ged [%thus sud ~]] ~]
|
||||
..^$(q.ask (~(del by q.ask) sud), kes (~(del by kes) hen))
|
||||
:- [[~ ged [%thus p.ask p.fav]] ~]
|
||||
%= ..^$
|
||||
p.ask +(p.ask)
|
||||
q.ask (~(put by q.ask) p.ask hen u.p.fav)
|
||||
kes (~(put by kes) hen p.ask)
|
||||
==
|
||||
::
|
||||
%they :: response to us
|
||||
=+ kas=(need (~(get by q.ask) p.fav))
|
||||
:- [[~ p.kas [%thou q.fav]] ~]
|
||||
..^$(q.ask (~(del by q.ask) p.kas))
|
||||
::
|
||||
%this :: request to us
|
||||
=+ ryp=`quri`(rash q.r.fav zest:epur)
|
||||
=+ mah=(ecco r.r.fav)
|
||||
=+ ^= pul ^- purl
|
||||
?- -.ryp
|
||||
& ?>(=(p.fav p.p.p.ryp) p.ryp)
|
||||
| =+ hot=(~(get by mah) %host)
|
||||
?> ?=([~ @ ~] hot)
|
||||
[[p.fav (rash i.u.hot thor:epur)] p.ryp q.ryp]
|
||||
==
|
||||
=+ het=`hate`[pul (shaf %this q.fav) [p.r.fav mah s.r.fav]]
|
||||
=+ gew=`(list ,[p=duct q=(list rout)])`(~(tap by wig) ~)
|
||||
=+ ^= faw
|
||||
|- ^- (list ,[p=duct q=scud])
|
||||
?~ gew ~
|
||||
=+ mor=$(gew t.gew)
|
||||
=+ ^= woy
|
||||
|- ^- (list scud)
|
||||
?~ q.i.gew ~
|
||||
=+ mor=$(q.i.gew t.q.i.gew)
|
||||
=+ lut=(loot pul i.q.i.gew)
|
||||
?~(lut mor [u.lut mor])
|
||||
?~ woy mor
|
||||
:: ?^ t.woy [[[~ hen [%thou 500 ~ ~]] ~] ..^^$]
|
||||
[[p.i.gew i.woy] mor]
|
||||
?~ faw [[[~ hen [%thou 404 ~ ~]] ~] ..^$]
|
||||
:: ?^ t.faw [[[~ hen [%thou 500 ~ ~]] ~] ..^$]
|
||||
:- [[~ p.i.faw `card`[%thee p.giv [q.i.faw r.pul] *cred r.het]] ~]
|
||||
..^$(p.giv +(p.giv), q.giv (~(put by q.giv) p.giv hen))
|
||||
==
|
||||
::
|
||||
++ come
|
||||
|= old=vase
|
||||
^- vane
|
||||
~|(%load-nest-eyre !!)
|
||||
::
|
||||
++ doze
|
||||
|= [now=@da hen=duct]
|
||||
^- (unit ,@da)
|
||||
~
|
||||
::
|
||||
++ flee stay
|
||||
++ load
|
||||
|= new=vase
|
||||
^- vane
|
||||
?. (~(nest ut -:!>(`bolo`+>-.^$)) & p.new)
|
||||
(come new)
|
||||
..^$(+>- (bolo q.new))
|
||||
::
|
||||
++ raze
|
||||
^- vane
|
||||
..$(+>- *bolo)
|
||||
::
|
||||
++ scry
|
||||
|= [our=ship ren=@tas who=ship syd=disc lot=coin tyl=path]
|
||||
^- (unit)
|
||||
~
|
||||
::
|
||||
++ stay `vase`!>(`bolo`+>-.$)
|
||||
--
|
7549
arvo/hoon.hoon
Normal file
7549
arvo/hoon.hoon
Normal file
File diff suppressed because it is too large
Load Diff
1831
arvo/zuse.hoon
Normal file
1831
arvo/zuse.hoon
Normal file
File diff suppressed because it is too large
Load Diff
195
main/bin/begin.hoon
Normal file
195
main/bin/begin.hoon
Normal file
@ -0,0 +1,195 @@
|
||||
!:
|
||||
:: /=main=/bin/begin/hoon
|
||||
::
|
||||
=> .(-< `who=@p`-<)
|
||||
=> .(+ =>(+ ^/===/lib/pony))
|
||||
|= [est=time *]
|
||||
|= arg=$|(~ [p=@p ~])
|
||||
=- ^- bowl
|
||||
?^ arg (fud p.arg)
|
||||
%+ pomp ""
|
||||
%+ (polo ~ %text "Do you have a ship and a ticket? " "yes" ~)
|
||||
;~(pose (jest %yes) (just %no))
|
||||
|= [* ans=@t]
|
||||
?. =(%yes ans)
|
||||
:_ ~
|
||||
:~ [%la %leaf "Please ask curtis.yarvin@gmail.com for one."]
|
||||
==
|
||||
%+ (polo ~ %text "Your ship: ~" ~ ~)
|
||||
fed:ag
|
||||
|= [* mig=@p]
|
||||
^- bowl
|
||||
(fud mig)
|
||||
^= fud
|
||||
|= mig=@p
|
||||
=+ bos=(sein mig)
|
||||
?> !=(bos mig)
|
||||
=< main
|
||||
|%
|
||||
++ looc ;~(pose alp (shim 128 255))
|
||||
++ loon
|
||||
%+ cook
|
||||
|= all=(list ,@t)
|
||||
|- ^- @t
|
||||
?~ all %$
|
||||
?~ t.all i.all
|
||||
(cat 3 i.all (cat 3 ' ' $(all t.all)))
|
||||
(most ace (cook |=(a=(list ,@) (rap 3 a)) (plus looc)))
|
||||
::
|
||||
++ main
|
||||
^- bowl
|
||||
=+ ran=(clan mig)
|
||||
=+ ^= cow
|
||||
|- ^- @ud
|
||||
?- ran
|
||||
%czar 256
|
||||
%king (mul 255 $(ran %czar))
|
||||
%duke (mul 65.535 $(ran %king))
|
||||
%earl (mul (dec (bex 32)) $(ran %duke))
|
||||
%pawn (sub (bex 128) $(ran %earl))
|
||||
==
|
||||
=+ ^= ves ^- tape
|
||||
?- ran
|
||||
%czar "carriers"
|
||||
%king "cruisers"
|
||||
%duke "destroyers"
|
||||
%earl "yachts"
|
||||
%pawn "submarines"
|
||||
==
|
||||
=+ gup=(scow %p mig)
|
||||
%+ pomp ""
|
||||
%+ pomp "Launching {gup}, one of {<cow>} Urbit {ves}..."
|
||||
%+ pomp ""
|
||||
%+ pomp " If I did not build for myself"
|
||||
%+ pomp " for whom should I build?"
|
||||
%+ pomp ""
|
||||
%+ pomp " -- Bunting, _Chomei at Toyama_"
|
||||
%+ pond ^:@/===doc%/warning/txt
|
||||
%+ (polo ~ %text "Your ticket: ~" ~ ~)
|
||||
fed:ag
|
||||
|= [* tic=@p]
|
||||
%+ pond ^:@/===doc%/entropy/txt
|
||||
%+ (polo ~ %pass "Entropy: " ~ ~)
|
||||
(boss 256 (more gon qit))
|
||||
|= [* tey=@]
|
||||
=. tey (shax tey)
|
||||
%+ pomp "Entropy check: {<`@p`(mug tey)>}"
|
||||
%+ pond ^:@/===doc%/language/txt
|
||||
%+ (polo ~ %text "Language: " "en" ~)
|
||||
%+ sear
|
||||
|= [a=@ b=@]
|
||||
^- (unit ,@ta)
|
||||
=+ c=(cat 3 a b)
|
||||
=+(d=(glon c) ?~(d ~ [~ c]))
|
||||
;~(plug low low)
|
||||
|= [* lag=lang]
|
||||
%+ pomp ""
|
||||
%+ pomp "Okay, we'll be speaking {(need (glon lag))}."
|
||||
^- bowl
|
||||
?. ?=(%duke ran)
|
||||
%+ (polo ~ %text "Name: " ~ ~)
|
||||
(boss 256 (more gon qit))
|
||||
|= [now=@da nam=@]
|
||||
(moss now tic tey lag (gcos [ran nam]))
|
||||
%+ pond ^:@/===doc%/identity/txt
|
||||
%+ (polo ~ %text "Form: %" "lady" ~)
|
||||
;~ pose
|
||||
(jest %anon)
|
||||
(jest %band)
|
||||
(jest %crew)
|
||||
(jest %dept)
|
||||
(jest %fair)
|
||||
(jest %holy)
|
||||
(jest %home)
|
||||
(jest %lady)
|
||||
(jest %lord)
|
||||
(jest %punk)
|
||||
==
|
||||
|= [now=@da fom=@t]
|
||||
?+ fom !!
|
||||
%anon (moss now tic tey lag [%duke %anon ~])
|
||||
%punk
|
||||
%+ (polo ~ %text "Handle: " ~ ~)
|
||||
(boss 256 (plus alp))
|
||||
|= [now=@da puc=@t]
|
||||
(moss now tic tey lag [%duke %punk puc])
|
||||
::
|
||||
?(%band %crew %dept %fair %home %holy)
|
||||
%- moon
|
||||
|= [* gov=govt]
|
||||
%+ (polo ~ %text "Name: " ~ ~)
|
||||
loon
|
||||
|= [now=@da nam=@t]
|
||||
(moss now tic tey lag [%duke (what fom `corp`[nam gov])])
|
||||
::
|
||||
?(%lord %lady)
|
||||
%+ pond ^:@/===doc%/person/txt
|
||||
%+ (polo ~ %text "Year you were born: " "19" ~)
|
||||
dim:ag
|
||||
|= [* yar=@]
|
||||
%- moon
|
||||
|= [* gov=govt]
|
||||
%+ pond ^:@/===doc%/name/txt
|
||||
%+ (polo ~ %text "First name: " ~ ~)
|
||||
loon
|
||||
|= [* fis=@t]
|
||||
%+ (polo ~ %text "Middle name (or blank): " ~ ~)
|
||||
;~(pose (stag ~ loon) (easy ~))
|
||||
|= [* mid=(unit ,@t)]
|
||||
%+ (polo ~ %text "Nickname/handle (or blank): " ~ ~)
|
||||
;~(pose (stag ~ loon) (easy ~))
|
||||
|= [* nik=(unit ,@t)]
|
||||
%+ (polo ~ %text "Last name: " ~ ~)
|
||||
loon
|
||||
|= [* las=@t]
|
||||
%+ pond ^:@/===doc%/banner/txt
|
||||
%+ (polo ~ %text "Banner: %" "blue" ~)
|
||||
;~ pose
|
||||
(jest %white)
|
||||
(jest %blue)
|
||||
(jest %red)
|
||||
(jest %black)
|
||||
(jest %orange)
|
||||
==
|
||||
|= [now=@da ban=@t]
|
||||
=> .(ban (?(%white %blue %red %black %orange) ban))
|
||||
=+ nam=`name`[fis mid nik las]
|
||||
(moss now tic tey lag `gcos`[%duke %lord `whom`[yar gov ban nam]])
|
||||
==
|
||||
::
|
||||
++ moon
|
||||
|* woo=||([@da govt] bowl)
|
||||
%+ pond ^:@/===doc%/location/txt
|
||||
%+ (polo ~ %text "Location: " "us/94114" ~)
|
||||
;~ pose
|
||||
;~ plug
|
||||
(cook |=([a=@ b=@] (cat 3 a b)) ;~(plug low low))
|
||||
;~ pose
|
||||
;~(pfix fas (plus ;~(pose hig hep nud)))
|
||||
(easy ~)
|
||||
==
|
||||
==
|
||||
(easy ~)
|
||||
==
|
||||
woo
|
||||
::
|
||||
++ moss
|
||||
|= [now=@da tic=@p tey=@ ges=gens]
|
||||
^- bowl
|
||||
=+ bur=(shax :(mix (jam ges) tey))
|
||||
%+ (posh (add ~s1 now)) ~[la/leaf/"generating 2048-bit RSA key..."]
|
||||
|= now=@da
|
||||
=+ loy=(brew 2.048 bur)
|
||||
%- (post bos [%ta %to] [mig tic ges pub:ex:loy])
|
||||
|= [now=@da rup=(unit ,*)]
|
||||
:_ ~
|
||||
?~ rup ~[la/leaf/"request rejected"]
|
||||
=+ mac=`mace`[[0 sec:ex:loy] ~]
|
||||
=+ wil=((hard (unit will)) u.rup)
|
||||
?~ wil
|
||||
:~ [%la %leaf "request rejected - invalid ticket"]
|
||||
==
|
||||
:~ [%la %leaf "request approved"]
|
||||
[%xy /a `card`[%cash mig mac u.wil]]
|
||||
==
|
||||
--
|
16
main/bin/cat.hoon
Normal file
16
main/bin/cat.hoon
Normal file
@ -0,0 +1,16 @@
|
||||
!:
|
||||
:: /=main=/toy/cat/hoon
|
||||
::
|
||||
|= *
|
||||
|= ape=(list path)
|
||||
:_ ~
|
||||
:_ ~
|
||||
^- gift
|
||||
:+ %mu [%atom %t]
|
||||
=- |- ^- (list ,@t)
|
||||
?~(foz ~ (weld i.foz $(foz t.foz)))
|
||||
^= foz
|
||||
=| foz=(list (list ,@t))
|
||||
|- ^+ foz
|
||||
?~ ape ~
|
||||
[(lore ((hard ,@) .^(%cx i.ape))) $(ape t.ape)]
|
27
main/bin/cd.hoon
Normal file
27
main/bin/cd.hoon
Normal file
@ -0,0 +1,27 @@
|
||||
!:
|
||||
:: /=main=/bin/cd/hoon
|
||||
::
|
||||
=> .(-< `who=@p`-<)
|
||||
|= [est=time *]
|
||||
|= arg=$|(~ [p=path ~])
|
||||
:_ ~
|
||||
^- (list gift)
|
||||
?~ arg
|
||||
:~ [%cc ~]
|
||||
[%cs ~]
|
||||
==
|
||||
?. ?=(^ p.arg) ~
|
||||
?. =(i.p.arg (scot %p who)) ~|(%bad-ship !!)
|
||||
?. ?=(^ t.p.arg) ~
|
||||
=+ gav=(slay i.t.p.arg)
|
||||
?. ?=([~ %$ %tas *] gav) ~|(%bad-desk !!)
|
||||
:- [%ck q.p.u.gav]
|
||||
?. ?=(^ t.t.p.arg) ~
|
||||
=+ gov=(slay i.t.t.p.arg)
|
||||
:- :- %cc
|
||||
?+ gov ~|(%bad-case !!)
|
||||
[~ %$ %da *] ?:(=(est q.p.u.gov) ~ [~ %da q.p.u.gov])
|
||||
[~ %$ %ud *] [~ %ud q.p.u.gov]
|
||||
[~ %$ %tas *] [~ %tas q.p.u.gov]
|
||||
==
|
||||
[[%cs t.t.t.p.arg] ~]
|
15
main/bin/diff.hoon
Normal file
15
main/bin/diff.hoon
Normal file
@ -0,0 +1,15 @@
|
||||
!:
|
||||
:: /=main=/toy/cat/hoon
|
||||
::
|
||||
|= *
|
||||
|= [del=path dev=path ~]
|
||||
:_ ~
|
||||
:_ ~
|
||||
^- gift
|
||||
=+ [hel=(lore ((hard ,@) .^(%cx del))) hev=(lore ((hard ,@) .^(%cx dev)))]
|
||||
=+ dis=(loss hel hev)
|
||||
=+ puc=(lusk hel hev dis)
|
||||
=+ rev=(lurk hel puc)
|
||||
=+ ver=(lurk hev (berk puc))
|
||||
?> &(=(rev hev) =(ver hel))
|
||||
[%la >puc<]
|
6
main/bin/echo.hoon
Normal file
6
main/bin/echo.hoon
Normal file
@ -0,0 +1,6 @@
|
||||
!:
|
||||
:: /=main=/toy/echo/hoon
|
||||
::
|
||||
|= *
|
||||
|= tan=(list tank)
|
||||
[(turn tan |=(a=tank [%la a])) ~]
|
23
main/bin/env.hoon
Normal file
23
main/bin/env.hoon
Normal file
@ -0,0 +1,23 @@
|
||||
!:
|
||||
:: /=main=/bin/env/hoon
|
||||
::
|
||||
=> .(- [who=`@p`-< how=`path`->])
|
||||
|= [est=time eny=@uw]
|
||||
|= arg=(list)
|
||||
^- bowl
|
||||
:_ ~
|
||||
=+ ^= voy ^- (list tape)
|
||||
:~ "who: {<who>}"
|
||||
"how: {<how>}"
|
||||
"est: {<est>}"
|
||||
"eny: {<eny>}"
|
||||
==
|
||||
::
|
||||
=+ ^= gar
|
||||
=+ nix=1
|
||||
|- ^- (list tape)
|
||||
?~ arg ~
|
||||
:_ $(arg t.arg, nix +(nix))
|
||||
"arg: {(pave !>(nix))}: {(pave !>(i.arg))}"
|
||||
::
|
||||
(turn (weld voy gar) |=(a=tape [%la %leaf a]))
|
9
main/bin/hello.hoon
Normal file
9
main/bin/hello.hoon
Normal file
@ -0,0 +1,9 @@
|
||||
::
|
||||
:: /=main=/bin/hello/hoon
|
||||
::
|
||||
|= *
|
||||
|= [planet=@ta ~]
|
||||
^- bowl
|
||||
:_ ~ :_ ~
|
||||
:- %$
|
||||
!>("hello, {(trip planet)}.")
|
21
main/bin/hi.hoon
Normal file
21
main/bin/hi.hoon
Normal file
@ -0,0 +1,21 @@
|
||||
!:
|
||||
:: /=main=/toy/hi/hoon
|
||||
::
|
||||
|= *
|
||||
|= [bud=@p ebb=$|(~ [tex=tape ~])]
|
||||
^- bowl
|
||||
:- ~
|
||||
:- ~
|
||||
:- ^- (list slip)
|
||||
:~ [/foo/bar [%yo bud %hi ?~(ebb '' (rap 3 tex.ebb))]]
|
||||
==
|
||||
|= [now=@da pax=path nut=note]
|
||||
?> =(/foo/bar pax)
|
||||
?> ?=(%yo -.nut)
|
||||
:- ?: =(%good q.nut)
|
||||
~
|
||||
:_ ~
|
||||
:- %ha
|
||||
:- %leaf
|
||||
"hi: {<p.nut>}.{<p.p.r.nut>} spurned {<q.r.nut>}/{<q.p.r.nut>}/{<r.r.nut>}"
|
||||
~
|
10
main/bin/hupdate.hoon
Normal file
10
main/bin/hupdate.hoon
Normal file
@ -0,0 +1,10 @@
|
||||
!:
|
||||
:: /=main=/bin/hupdate/hoon
|
||||
::
|
||||
=> .(-< `who=@p`-<)
|
||||
|= *
|
||||
|= ~
|
||||
:_ ~
|
||||
=+ bos=(sein who)
|
||||
:~ [%xy /c [%pull bos %arvo ~[%arvo]]]
|
||||
==
|
9
main/bin/label.hoon
Normal file
9
main/bin/label.hoon
Normal file
@ -0,0 +1,9 @@
|
||||
!:
|
||||
:: /=main=/bin/label/hoon
|
||||
::
|
||||
|= *
|
||||
|= [syd=@tas lab=@tas ~]
|
||||
^- bowl
|
||||
:_ ~
|
||||
:~ [%ok syd %| lab]
|
||||
==
|
13
main/bin/ls.hoon
Normal file
13
main/bin/ls.hoon
Normal file
@ -0,0 +1,13 @@
|
||||
!:
|
||||
:: /=main=/bin/ls/hoon
|
||||
::
|
||||
|= *
|
||||
|= [pax=path ~]
|
||||
:_ ~
|
||||
^- (list gift)
|
||||
=+ lon=((hard arch) .^(%cy pax))
|
||||
?: =(~ r.lon) ~
|
||||
:_ ~
|
||||
:- %la
|
||||
:+ %rose [" " "" ""]
|
||||
(turn (~(tap by r.lon) ~) |=([a=@ta b=*] [%leaf (trip a)]))
|
7
main/bin/none.hoon
Normal file
7
main/bin/none.hoon
Normal file
@ -0,0 +1,7 @@
|
||||
!:
|
||||
:: /=main=/bin/none/hoon
|
||||
::
|
||||
|= *
|
||||
|= *
|
||||
^- bowl
|
||||
[~ ~]
|
41
main/bin/nusolid.hoon
Normal file
41
main/bin/nusolid.hoon
Normal file
@ -0,0 +1,41 @@
|
||||
!:
|
||||
:: /=main=/bin/solid/hoon
|
||||
::
|
||||
=> .(- [who=`@p`-< how=`path`->])
|
||||
|= [est=time eny=@uw]
|
||||
|= arg=*
|
||||
=+ ^= lok ^- case
|
||||
?: =(~ arg) [%da est]
|
||||
?> =(~ +.arg)
|
||||
((hard case) -.arg)
|
||||
=+ cav=(scot (dime lok))
|
||||
=+ top=`path`[(scot %p who) %arvo cav ~]
|
||||
=+ pax=`path`(weld top `path`[%hoon ~])
|
||||
~& %solid-start
|
||||
=+ gen=(reck pax)
|
||||
~& %solid-parsed
|
||||
=+ ken=q:(~(mint ut %noun) %noun gen)
|
||||
~& %solid-compiled
|
||||
=+ ^= all
|
||||
=+ all=.*(0 ken)
|
||||
=+ ^= vay ^- (list ,[p=@tas q=@tas])
|
||||
:~ [%$ %zuse]
|
||||
[%a %ames]
|
||||
[%b %behn]
|
||||
[%c %clay]
|
||||
[%d %dill]
|
||||
[%e %eyre]
|
||||
==
|
||||
|- ^+ all
|
||||
?~ vay all
|
||||
=+ pax=(weld top `path`[q.i.vay ~])
|
||||
=+ txt=((hard ,@) .^(%cx (weld pax `path`[%hoon ~])))
|
||||
=+ sam=[est `ovum`[[%gold ~] [%veer p.i.vay pax txt]]]
|
||||
~& [%solid-veer i.vay]
|
||||
=+ gat=.*(all .*(all [0 42]))
|
||||
=+ nex=+:.*([-.gat [sam +>.gat]] -.gat)
|
||||
$(vay t.vay, all nex)
|
||||
:_ ~ :_ ~
|
||||
=+ pac=(jam [ken all])
|
||||
~& %solid-finished
|
||||
[%xx %save [%urbit %pill ~] pac]
|
19
main/bin/pope.hoon
Normal file
19
main/bin/pope.hoon
Normal file
@ -0,0 +1,19 @@
|
||||
!:
|
||||
:: /=main=/bin/pope/hoon
|
||||
::
|
||||
=> .(+ =>(+ ^/===/lib/pony))
|
||||
|= [est=time *]
|
||||
|= [who=@p ~]
|
||||
^- bowl
|
||||
%+ (polo ~ %pass "passphrase: " ~)
|
||||
(boss 256 (more gon qit))
|
||||
|= [now=@da fra=@]
|
||||
%+ (posh (add ~s1 now))
|
||||
~[la/leaf/"generating carrier {(scow %p who)} (#{(scow %ud who)})"]
|
||||
|= now=@da
|
||||
:_ ~
|
||||
=+ bur=(shax (add who (shax fra)))
|
||||
=+ arc=(brew 2.048 bur)
|
||||
:~ [%la %leaf "generator: {(scow %uw bur)}"]
|
||||
[%la %leaf "fingerprint: {(scow %uw fig:ex:arc)}"]
|
||||
==
|
41
main/bin/ram.hoon
Normal file
41
main/bin/ram.hoon
Normal file
@ -0,0 +1,41 @@
|
||||
!:
|
||||
:: /=main=/bin/ram/hoon
|
||||
::
|
||||
=> .(- `[who=@p how=path]`-)
|
||||
|= *
|
||||
|= ape=(list path)
|
||||
=+ ^= maw ^- (list slip)
|
||||
:~ [~ %$ %noun]
|
||||
==
|
||||
:- ~ :- ~
|
||||
:- maw
|
||||
|= [now=@da pax=path nut=note]
|
||||
^- bowl
|
||||
?+ -.nut [~ ~ maw ..$]
|
||||
%$
|
||||
?~ p.nut [~ ~]
|
||||
=| giv=(list gift)
|
||||
|- ^- bowl
|
||||
?: |(?=(~ ape) ?=(~ q.u.p.nut))
|
||||
[giv ~ maw ..^$]
|
||||
=+ pax=i.ape
|
||||
?> ?=([@ @ @ *] pax)
|
||||
?> &(=(i.pax (scot %p who)) =(i.t.t.pax (scot %da now)))
|
||||
%= $
|
||||
ape t.ape
|
||||
giv
|
||||
:_ giv
|
||||
^- gift
|
||||
:+ %ok i.t.pax
|
||||
^- nori
|
||||
:- %&
|
||||
^- soba
|
||||
:_ ~
|
||||
:- t.t.t.pax
|
||||
^- miso
|
||||
=+ fil=(file pax)
|
||||
?~ fil
|
||||
[%ins i.q.u.p.nut]
|
||||
[%mut %a %a u.fil i.q.u.p.nut]
|
||||
==
|
||||
==
|
12
main/bin/rat.hoon
Normal file
12
main/bin/rat.hoon
Normal file
@ -0,0 +1,12 @@
|
||||
!:
|
||||
:: /=main=/bin/rat/hoon
|
||||
::
|
||||
|= *
|
||||
|= ape=(list path)
|
||||
:_ ~
|
||||
:_ ~
|
||||
^- gift
|
||||
:+ %mu %noun
|
||||
|- ^- (list)
|
||||
?~ ape ~
|
||||
[.^(%cx i.ape) $(ape t.ape)]
|
25
main/bin/reboot.hoon
Normal file
25
main/bin/reboot.hoon
Normal file
@ -0,0 +1,25 @@
|
||||
!:
|
||||
:: /=main=/fun/reboot/hoon
|
||||
::
|
||||
=> .(- `[who=@p how=path]`-)
|
||||
|= [est=time eny=@uw]
|
||||
|= arg=*
|
||||
=+ ^= lok ^- case
|
||||
?: =(~ arg) [%da est]
|
||||
?> =(~ +.arg)
|
||||
((hard case) -.arg)
|
||||
=+ pre=`path`[(scot %p who) %arvo ~(rent co %$ (dime lok)) ~]
|
||||
=+ ^= vay ^- (list ,[p=@tas q=@tas])
|
||||
:~ [%$ %zuse]
|
||||
[%a %ames]
|
||||
[%b %batz]
|
||||
[%c %clay]
|
||||
[%d %dill]
|
||||
[%e %eyre]
|
||||
==
|
||||
:_ ~
|
||||
%+ turn vay
|
||||
|= [saw=@tas nam=@tas]
|
||||
=+ pax=(weld pre `path`[nam ~])
|
||||
=+ txt=.^(%cx (weld pax `path`[%hoon ~]))
|
||||
[%xx [%veer saw pax txt]]
|
9
main/bin/reload.hoon
Normal file
9
main/bin/reload.hoon
Normal file
@ -0,0 +1,9 @@
|
||||
!:
|
||||
:: /=main=/toy/veer/hoon
|
||||
::
|
||||
=> .(- `[who=@p how=path]`-)
|
||||
|= [est=time *]
|
||||
|= [nam=@tas ~]
|
||||
=+ tip=(end 3 1 nam)
|
||||
=+ pax=[(scot %p who) %arvo (scot %da est) nam %hoon ~]
|
||||
[[[%xx [%veer ?:(=('z' tip) %$ tip) pax (,@ .^(%cx pax))]] ~] ~]
|
35
main/bin/reset.hoon
Normal file
35
main/bin/reset.hoon
Normal file
@ -0,0 +1,35 @@
|
||||
!:
|
||||
:: /=main=/fun/reset/hoon
|
||||
::
|
||||
=> .(-< `who=@p`-<)
|
||||
|= [est=time *]
|
||||
|= arg=*
|
||||
=+ ^= lok ^- case
|
||||
?: =(~ arg) [%da est]
|
||||
?> =(~ +.arg)
|
||||
((hard case) -.arg)
|
||||
=+ cav=(scot (dime lok))
|
||||
=+ top=`path`[(scot %p who) %arvo cav ~]
|
||||
=+ pax=`path`(weld top `path`[%hoon ~])
|
||||
~& %reset-start
|
||||
=+ gen=(reck pax)
|
||||
~& %reset-parsed
|
||||
=+ ken=q:(~(mint ut %noun) %noun gen)
|
||||
=+ all=.*(0 ken)
|
||||
~& %reset-compiled
|
||||
:_ ~
|
||||
:- [%xx %volt all]
|
||||
^- (list gift)
|
||||
=+ ^= vay ^- (list ,[p=@tas q=@tas])
|
||||
:~ [%$ %zuse]
|
||||
[%a %ames]
|
||||
[%b %batz]
|
||||
[%c %clay]
|
||||
[%d %dill]
|
||||
[%e %eyre]
|
||||
==
|
||||
%+ turn vay
|
||||
|= [a=@tas b=@tas]
|
||||
=+ pax=(weld top `path`[b ~])
|
||||
=+ txt=((hard ,@) .^(%cx (weld pax `path`[%hoon ~])))
|
||||
`gift`[%xx %veer a pax txt]
|
22
main/bin/set.hoon
Normal file
22
main/bin/set.hoon
Normal file
@ -0,0 +1,22 @@
|
||||
!:
|
||||
:: /=main=/bin/set/hoon
|
||||
::
|
||||
|= *
|
||||
|= [nam=@tas ~]
|
||||
=+ ^= rod ^- (list slip)
|
||||
:~ [~ %$ %noun]
|
||||
==
|
||||
:- ~ :- ~
|
||||
:- rod
|
||||
|= [now=@da pax=path nut=note]
|
||||
^- bowl
|
||||
?> ?=(%$ -.nut)
|
||||
?~ p.nut
|
||||
:_ ~
|
||||
:~ [%va nam ~]
|
||||
==
|
||||
?~ q.u.p.nut
|
||||
[~ ~ rod ..$]
|
||||
:_ ~
|
||||
:~ [%va nam ~ p.u.p.nut -.q.u.p.nut]
|
||||
==
|
41
main/bin/solid.hoon
Normal file
41
main/bin/solid.hoon
Normal file
@ -0,0 +1,41 @@
|
||||
!:
|
||||
:: /=main=/bin/solid/hoon
|
||||
::
|
||||
=> .(- `[who=@p how=path]`-)
|
||||
|= [est=time eny=@uw]
|
||||
|= arg=*
|
||||
=+ ^= lok ^- case
|
||||
?: =(~ arg) [%da est]
|
||||
?> =(~ +.arg)
|
||||
((hard case) -.arg)
|
||||
=+ cav=(scot (dime lok))
|
||||
=+ top=`path`[(scot %p who) %arvo cav ~]
|
||||
=+ pax=`path`(weld top `path`[%hoon ~])
|
||||
~& %solid-start
|
||||
=+ gen=(reck pax)
|
||||
~& %solid-parsed
|
||||
=+ ken=q:(~(mint ut %noun) %noun gen)
|
||||
~& %solid-compiled
|
||||
=+ ^= all
|
||||
=+ all=.*(0 ken)
|
||||
=+ ^= vay ^- (list ,[p=@tas q=@tas])
|
||||
:~ [%$ %zuse]
|
||||
[%a %ames]
|
||||
[%b %batz]
|
||||
[%c %clay]
|
||||
[%d %dill]
|
||||
[%e %eyre]
|
||||
==
|
||||
|- ^+ all
|
||||
?~ vay all
|
||||
=+ pax=(weld top `path`[q.i.vay ~])
|
||||
=+ txt=((hard ,@) .^(%cx (weld pax `path`[%hoon ~])))
|
||||
=+ sam=[est `ovum`[[%gold ~] [%veer p.i.vay pax txt]]]
|
||||
~& [%solid-veer i.vay]
|
||||
=+ gat=.*(all .*(all [0 42]))
|
||||
=+ nex=+:.*([-.gat [sam +>.gat]] -.gat)
|
||||
$(vay t.vay, all nex)
|
||||
:_ ~ :_ ~
|
||||
=+ pac=(jam [ken all])
|
||||
~& %solid-finished
|
||||
[%xx %save [%urbit %pill ~] pac]
|
6
main/bin/sys.hoon
Normal file
6
main/bin/sys.hoon
Normal file
@ -0,0 +1,6 @@
|
||||
!:
|
||||
:: /=main=/toy/sys/hoon
|
||||
::
|
||||
|= *
|
||||
|= [pax=path fav=card ~]
|
||||
[[[%xy pax fav] ~] ~]
|
27
main/bin/ticket.hoon
Normal file
27
main/bin/ticket.hoon
Normal file
@ -0,0 +1,27 @@
|
||||
!:
|
||||
:: /=main=/bin/ticket/hoon
|
||||
::
|
||||
=> .(-< `who=@p`-<)
|
||||
|= [est=time *]
|
||||
|= arg=*
|
||||
^- bowl
|
||||
:_ ~
|
||||
=+ ^= fir ^- [p=@p q=@ud]
|
||||
?: ?=([@ ~] arg)
|
||||
[-.arg 1]
|
||||
?: ?=([@ @ ~] arg)
|
||||
[-.arg +<.arg]
|
||||
~|(%ticket-arg !!)
|
||||
?> &(=(who (sein p.fir)) =(who (sein (add p.fir (dec q.fir)))))
|
||||
=+ ^= sep ^- @
|
||||
=+ mir=(clan p.fir)
|
||||
?+ mir ~|(%ticket-clan !!)
|
||||
%king (bex 8)
|
||||
%duke (bex 16)
|
||||
%earl (bex 32)
|
||||
==
|
||||
|- ^- (list gift)
|
||||
?: =(0 q.fir) ~
|
||||
=+ tic=(,@p .^(%a (scot %p who) %tick (scot %da est) (scot %p p.fir) ~))
|
||||
:- [%la %leaf "{<p.fir>}: {<tic>}"]
|
||||
$(p.fir (add sep p.fir), q.fir (dec q.fir))
|
12
main/bin/update.hoon
Normal file
12
main/bin/update.hoon
Normal file
@ -0,0 +1,12 @@
|
||||
!:
|
||||
:: /=main=/bin/update/hoon
|
||||
::
|
||||
=> .(-< `who=@p`-<)
|
||||
|= *
|
||||
|= ~
|
||||
:_ ~
|
||||
=+ bos=(sein who)
|
||||
:~ [%xy /c [%pull bos %main ~[%main]]]
|
||||
[%xy /c [%pull bos %spec ~[%spec]]]
|
||||
[%xy /c [%pull bos %arvo ~[%arvo]]]
|
||||
==
|
18
main/bin/with.hoon
Normal file
18
main/bin/with.hoon
Normal file
@ -0,0 +1,18 @@
|
||||
!:
|
||||
:: /=main=/bin/with/hoon
|
||||
::
|
||||
|= [est=@da *]
|
||||
|= arg=(list path)
|
||||
^- bowl
|
||||
:_ ~
|
||||
^- (list gift)
|
||||
=< abet
|
||||
|%
|
||||
++ abet ?:(=(~ arg) [[%sc ~] ~] (turn arg |=(a=path `gift`[%sc ~ (with a)])))
|
||||
++ with
|
||||
|= pax=path ^- skit
|
||||
?> ?=([@ @ @ *] pax)
|
||||
:+ ?:(=((scot %da est) i.t.t.pax) ~ [~ i.t.t.pax])
|
||||
[i.pax i.t.pax ~]
|
||||
t.t.t.pax
|
||||
--
|
23
main/bin/ye.hoon
Normal file
23
main/bin/ye.hoon
Normal file
@ -0,0 +1,23 @@
|
||||
!:
|
||||
:: /=main=/toy/ye/hoon
|
||||
::
|
||||
=> .(-< `who=@p`-<)
|
||||
|= *
|
||||
|= [ebb=$|(~ [tex=tape ~])]
|
||||
=+ bud=(sein who)
|
||||
^- bowl
|
||||
:- ~
|
||||
:- ~
|
||||
:- ^- (list slip)
|
||||
:~ [/foo/bar [%yo bud %ye ?~(ebb '' (rap 3 tex.ebb))]]
|
||||
==
|
||||
|= [now=@da pax=path nut=note]
|
||||
?> =(/foo/bar pax)
|
||||
?> ?=(%yo -.nut)
|
||||
:- ?: =(%good q.nut)
|
||||
~
|
||||
:_ ~
|
||||
:- %ha
|
||||
:- %leaf
|
||||
"hi: {<p.nut>}.{<p.p.r.nut>} spurned {<q.r.nut>}/{<q.p.r.nut>}/{<r.r.nut>}"
|
||||
~
|
24
main/doc/begin/banner.txt
Normal file
24
main/doc/begin/banner.txt
Normal file
@ -0,0 +1,24 @@
|
||||
|
||||
One basic human instinct is the urge to form political tribes.
|
||||
In a network that fights this need, these tribes form anyway and
|
||||
they form badly. Urbit designs them into the infrastructure.
|
||||
Inspired by the Qing Dynasty, you'll align yourself with one of
|
||||
five colored "banners" - %red, %blue, %orange, %black or %white.
|
||||
|
||||
Political discourse across tribal boundaries is almost always an
|
||||
antisocial act - less communication, than symbolic violence. In
|
||||
Urbit, messages marked political stay within your own banner;
|
||||
your friends in other banners simply won't see them. Between
|
||||
banners, politics doesn't erode apolitical relationships; inside
|
||||
each banner, political discourse is harmonious and productive.
|
||||
|
||||
Pick a banner by the adjective you feel best describes you:
|
||||
|
||||
%red far left: radical, anarchist
|
||||
%blue center-left: moderate, liberal
|
||||
%orange center-right: conservative, libertarian
|
||||
%black far right: traditionalist, reactionary
|
||||
|
||||
Or if digital agitation isn't your cup of tea, choose %white, and
|
||||
your Urbit experience will remain politics-free.
|
||||
|
4
main/doc/begin/entropy.txt
Normal file
4
main/doc/begin/entropy.txt
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
Enter a passphrase or other unusual text. You (or your enemies)
|
||||
can regenerate your ship from this entropy.
|
||||
|
2
main/doc/begin/govt.txt
Normal file
2
main/doc/begin/govt.txt
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
Enter
|
14
main/doc/begin/identity.txt
Normal file
14
main/doc/begin/identity.txt
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
Please select one of the pre-chosen forms:
|
||||
|
||||
%lady female-identified individual
|
||||
%lord male-identified individual
|
||||
%punk opaque handle
|
||||
%anon totally anonymous
|
||||
%home family
|
||||
%crew corporation
|
||||
%band creative collective
|
||||
%fair nonprofit
|
||||
%dept government agency
|
||||
%holy religious institution
|
||||
|
6
main/doc/begin/language.txt
Normal file
6
main/doc/begin/language.txt
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
What language would your ship rather speak? Enter it as a
|
||||
two-letter (ISO 639-1) code, like "en" for English. Whatever
|
||||
language you pick, it'll all be English now, but in future
|
||||
we'll be more sensitive to your needs.
|
||||
|
5
main/doc/begin/location.txt
Normal file
5
main/doc/begin/location.txt
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
Where are you? This is totally optional, but we'd like to
|
||||
know your vague general location. You can enter nothing at
|
||||
all, just a country code, or country and postal code.
|
||||
|
5
main/doc/begin/name.txt
Normal file
5
main/doc/begin/name.txt
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
Please tell us your name - and please make it a real name.
|
||||
Pseudonyms are totally cool, but please use %punk. Middle
|
||||
name and nickname are optional. Ünicode is encouraged.
|
||||
|
19
main/doc/begin/person.txt
Normal file
19
main/doc/begin/person.txt
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
You've selected a personal identity. For a %lord or a %lady,
|
||||
please use your real name only. If you'd prefer a fictitious
|
||||
handle, you can hit ^C and start over as a %punk. Or you can
|
||||
use %anon and go by your ship name alone.
|
||||
|
||||
As a real person, we're going to ask you for a little bit of
|
||||
personal information - not enough to compromise your privacy,
|
||||
just enough to make everyone on Urbit feel like a neighbor.
|
||||
|
||||
What we're going to ask you for is information that's (a)
|
||||
public (would be obvious, or at least easy to guess, for
|
||||
someone who met you in person); (b) durable (doesn't change
|
||||
often); and (c) relevant (helps you connect with friends).
|
||||
|
||||
For example, we'll ask for the year (not day) you were born,
|
||||
because your age is easy to guess in person, doesn't change,
|
||||
and has a big effect on how people perceive you.
|
||||
|
2
main/doc/begin/ship.txt
Normal file
2
main/doc/begin/ship.txt
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
|
2
main/doc/begin/ticket.txt
Normal file
2
main/doc/begin/ticket.txt
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
You should already have a ticket (invitation code).
|
5
main/doc/begin/warning.txt
Normal file
5
main/doc/begin/warning.txt
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
Let's configure your identity. Warning - it's nontrivial to
|
||||
change this data once you've sent it to the server. If you enter
|
||||
something wrong, hit ^C to cancel, then run the program again.
|
||||
|
162
main/lib/hume.hoon
Normal file
162
main/lib/hume.hoon
Normal file
@ -0,0 +1,162 @@
|
||||
!:
|
||||
:: application standard library
|
||||
::
|
||||
=>
|
||||
|% :: models
|
||||
++ cron ?(%day %hour %minute %none %second) :: wake frequency
|
||||
++ lamp :: simple web app
|
||||
$_ ^? |% :: opaque object
|
||||
++ give :: serve
|
||||
|= [now=@da fig=weev] :: time, request
|
||||
:- p=*(list gift) :: act
|
||||
q=*(unit ,[p=(list slip) q=lamp]) :: request/continue
|
||||
:: ::
|
||||
++ miss :: redirect?
|
||||
|= [pac=pact ced=cred] :: test and apply
|
||||
^- (unit purl) ::
|
||||
~ ::
|
||||
-- ::
|
||||
++ lump ,[p=path q=mime r=octs] :: submitted data
|
||||
++ user ?(%born %came %died %left) :: user event
|
||||
++ wick vase :: vase of lamp
|
||||
++ weev :: web event
|
||||
$% [%cron p=cron] :: wakeup
|
||||
[%form p=pact q=quay] :: posted form
|
||||
[%note p=path q=note] :: extrinsic note
|
||||
[%post p=pact q=mime q=octs] :: non-form post
|
||||
[%putt p=pact q=(list lump)] :: put
|
||||
[%user p=user] :: user event
|
||||
== ::
|
||||
-- ::
|
||||
|% :: functions
|
||||
++ lunt :: web framework
|
||||
|= :* who=ship :: owner
|
||||
:: msg=tape :: prompt
|
||||
ped=cron :: wake frequency
|
||||
rut=(list rout) :: routes to
|
||||
ras=wick :: server state
|
||||
==
|
||||
^- bowl
|
||||
=+ ^= hup ^- (list slip)
|
||||
:~ [/ [%ht rut]]
|
||||
:: [/ [%up %none msg]]
|
||||
==
|
||||
:- *(list gift)
|
||||
:- ~
|
||||
:- hup
|
||||
|= [now=@da pax=path nut=note]
|
||||
^- bowl
|
||||
=+ [saw=*(list gift) ask=*(list slip)]
|
||||
=< zing:wist
|
||||
|%
|
||||
++ send :: dispatch event
|
||||
|= bax=weev
|
||||
^+ +>
|
||||
=+ sam=!>([now bax])
|
||||
=+ gat=(slap ras [%cnbc %give])
|
||||
=+ pro=(slam gat sam)
|
||||
=+ [wax=(slot 2 pro) hin=(slot 3 pro)]
|
||||
=. saw (weld ((hard (list gift)) q.wax) saw)
|
||||
?: =(~ q.hin)
|
||||
+>.$
|
||||
=+ [vis=(slot 6 hin) lym=(slot 7 hin)]
|
||||
=+ ^= gin ^- (list slip)
|
||||
%+ turn ((hard (list slip)) q.vis)
|
||||
|=(a=slip [[%lunt p.a] q.a])
|
||||
%= +>.$
|
||||
ask (weld ((hard (list slip)) q.vis) ask)
|
||||
q.ras q.lym
|
||||
==
|
||||
::
|
||||
++ pass :: try redirect
|
||||
|= [pac=pact ced=cred]
|
||||
^- (unit purl)
|
||||
=+ sam=!>([pac ced])
|
||||
=+ gat=(slap ras [%cnbc %miss])
|
||||
=+ pro=(slam gat sam)
|
||||
?: =(~ q.pro) ~
|
||||
=+ vur=(slot 3 pro)
|
||||
[~ ((hard purl) q.vur)]
|
||||
::
|
||||
++ post :: handle post
|
||||
|= [rid=@ud zab=scab ced=cred mot=moth]
|
||||
^+ +>
|
||||
?> ?=(^ r.mot)
|
||||
=+ cot=(need (~(get by q.mot) %content-type))
|
||||
=+ ^= guz ^- (unit quay)
|
||||
?. =(cot ~['application/x-www-form-urlencoded']) ~
|
||||
=+ vex=((full yquy:epur) [1 1] (trip q.u.r.mot))
|
||||
?~ q.vex ~
|
||||
[~ p.u.q.vex]
|
||||
%- send
|
||||
?~ guz
|
||||
[%post p.p.zab /application/octet-stream u.r.mot] :: XX parse cot
|
||||
[%form p.p.zab u.guz]
|
||||
::
|
||||
++ went :: handle get
|
||||
|= [rid=@ud zab=scab ced=cred mot=moth]
|
||||
^+ +>
|
||||
=+ sek=(roil [who now (shax (mix (sham zab) now)) ced] zab ras)
|
||||
=+ ^= rep
|
||||
:+ %th rid
|
||||
?~ sek
|
||||
[%raw [404 ~ [~ (tact "http error 404 at {<now>}")]]]
|
||||
u.sek
|
||||
+>.$(saw [rep saw])
|
||||
::
|
||||
++ wist :: handle note
|
||||
^+ .
|
||||
?. ?=(%ht -.nut)
|
||||
?> ?=([%lunt *] pax)
|
||||
(send [%note t.pax nut])
|
||||
=> ?:(=(%post p.s.nut) (post +.nut) .)
|
||||
?> ?=(%ht -.nut)
|
||||
(went +.nut)
|
||||
::
|
||||
++ zing :: resolve
|
||||
^- bowl
|
||||
[saw [~ (weld ask hup) ..$]]
|
||||
--
|
||||
::
|
||||
++ roil
|
||||
|= [mad=scad zab=scab ras=wick]
|
||||
^- (unit love)
|
||||
=+ cag=`path`(flop p.p.zab)
|
||||
?> ?=(^ cag)
|
||||
=+ syd=i.cag
|
||||
=+ lok=~(rent co ~ %da q.mad)
|
||||
=+ hox=~(rent co ~ %p p.mad)
|
||||
=+ tem=`path`[hox syd lok %web t.cag]
|
||||
=< veen
|
||||
|%
|
||||
++ drem
|
||||
|= axt=@ta
|
||||
^- (unit love)
|
||||
=+ arc=((hard arch) .^(%cy tem))
|
||||
?: (~(has by r.arc) axt)
|
||||
=+ dat=((hard ,@) .^(%cx (weld tem `path`[axt ~])))
|
||||
:- ~
|
||||
:+ %mid
|
||||
?+ axt [%application %octet-stream ~]
|
||||
%html [%text %html ~]
|
||||
%txt [%text %plain ~]
|
||||
%css [%text %css ~]
|
||||
%js [%text %javascript ~]
|
||||
==
|
||||
[(met 3 dat) dat]
|
||||
?. (~(has by r.arc) %hoon) ~
|
||||
:- ~
|
||||
=+ vez=(vang & [hox syd lok t.cag])
|
||||
=+ dat=((hard ,@) .^(%cx (weld tem `path`[%hoon ~])))
|
||||
=+ gen=(scan (trip dat) (full (ifix [gay gay] tall:vez)))
|
||||
=+ pro=(slam (slam (slap ras gen) !>(mad)) !>(zab))
|
||||
((hard love) q.pro)
|
||||
::
|
||||
++ dunt
|
||||
^- (unit love)
|
||||
(drem %html)
|
||||
::
|
||||
++ veen
|
||||
?~(r.q.p.zab dunt (drem u.r.q.p.zab))
|
||||
--
|
||||
--
|
121
main/lib/pony.hoon
Normal file
121
main/lib/pony.hoon
Normal file
@ -0,0 +1,121 @@
|
||||
!:
|
||||
:: /=main=/lib/pony/hoon
|
||||
::
|
||||
|%
|
||||
++ polo :: prompt
|
||||
|= [gim=(list gift) pim=prom pro=tape def=tape use=tape]
|
||||
|* [rul=_rule woo=||([@da *] bowl)]
|
||||
^- bowl
|
||||
:- gim :- ~
|
||||
:- :~ [[%polo ~] [%up pim pro def]]
|
||||
==
|
||||
|= [now=@da pax=path nut=note]
|
||||
^- bowl
|
||||
?> &(=([%polo ~] pax) ?=(%up -.nut))
|
||||
=+ rey=(rush p.nut rul)
|
||||
?~ rey
|
||||
:- [[%la %leaf ?~(use "invalid response" use)] ~]
|
||||
:- ~
|
||||
[[[[%polo ~] [%up pim pro def]] ~] ..$]
|
||||
(woo now u.rey)
|
||||
::
|
||||
++ pomo |=([gud=gift bol=bowl] [[gud p.bol] q.bol])
|
||||
++ pomp |=([tix=tape bol=bowl] (pomo la/leaf/tix bol))
|
||||
++ pond :: show text block
|
||||
|= [lub=@ bol=bowl]
|
||||
^- bowl
|
||||
:_(q.bol (weld (turn (lore lub) |=(a=@t la/leaf/(trip a))) p.bol))
|
||||
::
|
||||
++ posh :: pause until
|
||||
|= end=@da
|
||||
|= [gim=(list gift) wop=||(@da bowl)]
|
||||
^- bowl
|
||||
:- gim :- ~
|
||||
:- ^- (list slip)
|
||||
:~ [~ %wa end]
|
||||
==
|
||||
|= [now=@da pax=path nut=note]
|
||||
(wop now)
|
||||
::
|
||||
++ post :: request/response
|
||||
|= [him=@p [cho=@ta chu=@ta] msg=*]
|
||||
|= woo=||([@da (unit ,*)] bowl)
|
||||
^- bowl
|
||||
=+ leg="waiting for {(scow %p him)}"
|
||||
:- ~ :- ~
|
||||
:- ^- (list slip)
|
||||
:~ [/request [%yo him cho msg]]
|
||||
[/response [%oy chu]]
|
||||
[/prompt [%up %none leg ~]]
|
||||
==
|
||||
|= [now=@da pax=path nut=note]
|
||||
^- bowl
|
||||
?+ -.nut !!
|
||||
%oy (woo now s.nut)
|
||||
%yo
|
||||
?. =(%good q.nut) (woo now ~)
|
||||
:- ~ :- ~
|
||||
:_ ..$
|
||||
^- (list slip)
|
||||
:~ [/response [%oy chu]]
|
||||
[/prompt [%up %none leg ~]]
|
||||
==
|
||||
==
|
||||
::
|
||||
++ pour
|
||||
|= $: est=@da
|
||||
dyz=(list ,[p=@tas q=[p=ship q=disc r=moat]])
|
||||
wop=||([@da (map ,@tas ,[p=(unit ,@ud) q=(list frog)])] bowl)
|
||||
==
|
||||
^- bowl
|
||||
?~ dyz (wop est ~)
|
||||
=+ :* zyd=(~(gas by *(map ,@tas ,[p=ship q=disc r=moat])) dyz)
|
||||
fyx=*(map ,@tas ,[p=(unit ,@ud) q=(list frog)])
|
||||
==
|
||||
=< apex
|
||||
|%
|
||||
++ apex
|
||||
^- bowl
|
||||
?~ zyd done
|
||||
:- ~ :- ~
|
||||
:- bite
|
||||
|= [now=@da how=path wat=note]
|
||||
?> ?=([%eg *] wat)
|
||||
?> ?=([%pull @ ~] how)
|
||||
apex:(bice(est now) i.t.how p.wat)
|
||||
::
|
||||
++ bice
|
||||
|= [cyt=@tas rot=riot]
|
||||
^+ +>
|
||||
?~ rot
|
||||
~& [%bice-done cyt]
|
||||
+>(zyd (~(del by zyd) cyt))
|
||||
?> ?=(%ud -.q.p.u.rot)
|
||||
=+ geb=(need (~(get by zyd) cyt))
|
||||
=+ saq=(need (~(get by fyx) cyt))
|
||||
%= +>.$
|
||||
zyd
|
||||
%+ ~(put by zyd) cyt
|
||||
?> =(+(p.p.r.geb) p.q.p.u.rot)
|
||||
geb(p.r q.p.u.rot)
|
||||
::
|
||||
fyx
|
||||
%+ ~(put by fyx) cyt
|
||||
:- ?~(p.saq [~ p.q.p.u.rot] p.saq)
|
||||
[((hard frog) r.u.rot) q.saq]
|
||||
==
|
||||
::
|
||||
++ bite
|
||||
^- (list slip)
|
||||
=+ who=?>(?=(^ zyd) p.n.zyd)
|
||||
:- `slip`[/prod [%up %none "waiting for <who> at <est>..." ~]]
|
||||
=+ fuh=(~(tap by zyd) ~)
|
||||
%+ turn fuh
|
||||
|= [a=@tas b=[p=ship q=disc r=moat]]
|
||||
`slip`[[%pl a ~] %es p.b q.b [%| r.b]]
|
||||
::
|
||||
++ done
|
||||
^- bowl
|
||||
(wop est fyx)
|
||||
--
|
||||
--
|
42
spec/nock/5.txt
Normal file
42
spec/nock/5.txt
Normal file
@ -0,0 +1,42 @@
|
||||
1 Structures
|
||||
|
||||
A noun is an atom or a cell. An atom is any natural number.
|
||||
A cell is an ordered pair of nouns.
|
||||
|
||||
2 Reductions
|
||||
|
||||
nock(a) *a
|
||||
[a b c] [a [b c]]
|
||||
|
||||
?[a b] 0
|
||||
?a 1
|
||||
+[a b] +[a b]
|
||||
+a 1 + a
|
||||
=[a a] 0
|
||||
=[a b] 1
|
||||
=a =a
|
||||
|
||||
/[1 a] a
|
||||
/[2 a b] a
|
||||
/[3 a b] b
|
||||
/[(a + a) b] /[2 /[a b]]
|
||||
/[(a + a + 1) b] /[3 /[a b]]
|
||||
/a /a
|
||||
|
||||
*[a [b c] d] [*[a b c] *[a d]]
|
||||
|
||||
*[a 0 b] /[b a]
|
||||
*[a 1 b] b
|
||||
*[a 2 b c] *[*[a b] *[a c]]
|
||||
*[a 3 b] ?*[a b]
|
||||
*[a 4 b] +*[a b]
|
||||
*[a 5 b] =*[a b]
|
||||
|
||||
*[a 6 b c d] *[a 2 [0 1] 2 [1 c d] [1 0] 2 [1 2 3] [1 0] 4 4 b]
|
||||
*[a 7 b c] *[a 2 b 1 c]
|
||||
*[a 8 b c] *[a 7 [[7 [0 1] b] 0 1] c]
|
||||
*[a 9 b c] *[a 7 c 2 [0 1] 0 b]
|
||||
*[a 10 [b c] d] *[a 8 c 7 [0 3] d]
|
||||
*[a 10 b c] *[a c]
|
||||
|
||||
*a *a
|
9
try/bin/fib.hoon
Normal file
9
try/bin/fib.hoon
Normal file
@ -0,0 +1,9 @@
|
||||
!:
|
||||
:: /=try=/bin/fib/hoon
|
||||
::
|
||||
|= *
|
||||
|= [num=@ud ~]
|
||||
:_ ~ :_ ~
|
||||
:- %$
|
||||
!> %. num
|
||||
|=(x=@ ?:((lth x 2) 1 (add $(x (dec x)) $(x (sub x 2)))))
|
41
try/bin/game.hoon
Normal file
41
try/bin/game.hoon
Normal file
@ -0,0 +1,41 @@
|
||||
!:
|
||||
:: /=try=/bin/game/hoon
|
||||
::
|
||||
=> .(- `[who=@p how=path]`-)
|
||||
=> .(+ =>(+ ^/=main=/hume))
|
||||
|= [est=time eny=@uw]
|
||||
|= [neighbor=tape ~]
|
||||
^- bowl
|
||||
=+ messages=*(list ,@t)
|
||||
%- lunt
|
||||
:* who
|
||||
%none
|
||||
:- :~ :* :~ [%& /localhost]
|
||||
[%| .127.0.0.1]
|
||||
==
|
||||
/game
|
||||
(shas %game eny)
|
||||
/try
|
||||
==
|
||||
==
|
||||
^- vase
|
||||
!> |%
|
||||
++ give
|
||||
|= [now=@da fig=weev]
|
||||
^- [p=(list gift) q=(unit ,[p=(list slip) q=_+>.$])]
|
||||
?+ -.fig
|
||||
[~[la/leaf/"give other {<fig>}"] ~]
|
||||
::
|
||||
%form
|
||||
=+ msg=(~(get by q.fig) %msg)
|
||||
?~ msg
|
||||
[~[la/leaf/"give odd form {<q.fig>}"] ~]
|
||||
[~ [~ ~ +>.$(messages [u.msg messages])]]
|
||||
==
|
||||
::
|
||||
++ miss
|
||||
|= [pac=pact ced=cred]
|
||||
^- (unit purl)
|
||||
~
|
||||
--
|
||||
==
|
4
try/bin/goodbye.hoon
Normal file
4
try/bin/goodbye.hoon
Normal file
@ -0,0 +1,4 @@
|
||||
|= *
|
||||
|= [planet=tape ~]
|
||||
:_ ~ :_ ~
|
||||
[%$ !>("hasta la vista, {planet}.")]
|
6
try/bin/infinite.hoon
Normal file
6
try/bin/infinite.hoon
Normal file
@ -0,0 +1,6 @@
|
||||
|= *
|
||||
|= *
|
||||
=+ a=1
|
||||
|- ^- bowl
|
||||
?: =(0 a) [~ ~]
|
||||
$(a +(a))
|
7
try/bin/memory.hoon
Normal file
7
try/bin/memory.hoon
Normal file
@ -0,0 +1,7 @@
|
||||
|= *
|
||||
|= *
|
||||
=+ a=1
|
||||
=| b=(list)
|
||||
|- ^- bowl
|
||||
?: =(0 a) [~ ~]
|
||||
$(a +(a), b [(bex (bex 13)) b])
|
7
try/bin/overflow.hoon
Normal file
7
try/bin/overflow.hoon
Normal file
@ -0,0 +1,7 @@
|
||||
!:
|
||||
|= *
|
||||
|= *
|
||||
=+ a=1
|
||||
|- ^- bowl
|
||||
?: =(0 a) [~ ~]
|
||||
$(a +(a))
|
26
try/bin/reverse.hoon
Normal file
26
try/bin/reverse.hoon
Normal file
@ -0,0 +1,26 @@
|
||||
!:
|
||||
:: /=try=/bin/reverse/hoon
|
||||
::
|
||||
|= *
|
||||
|= ~
|
||||
:- ~ :- ~
|
||||
:- ^- (list slip)
|
||||
:~ [~ %$ %atom %t]
|
||||
==
|
||||
|= [now=@da pax=path nut=note]
|
||||
^- bowl
|
||||
?+ -.nut !!
|
||||
%$
|
||||
?~ p.nut
|
||||
[~ ~]
|
||||
=+ liz=((hard (list ,@t)) q.u.p.nut)
|
||||
:- ^- (list gift)
|
||||
:~ :+ %mu [%atom %t]
|
||||
(turn liz |=(a=@t (rap 3 (flop (trip a)))))
|
||||
==
|
||||
:- ~
|
||||
:- ^- (list slip)
|
||||
:~ [~ %$ %atom %t]
|
||||
==
|
||||
..$
|
||||
==
|
10
try/bin/sleep.hoon
Normal file
10
try/bin/sleep.hoon
Normal file
@ -0,0 +1,10 @@
|
||||
!:
|
||||
=> .(+ =>(+ ^/=main=/pony))
|
||||
|= [est=@da *]
|
||||
|= [sle=@dr ~]
|
||||
^- bowl
|
||||
%+ (posh (add est sle)) ~[la/leaf/"sleeping for {(scow %dr sle)}..."]
|
||||
|= now=@da
|
||||
:_ ~
|
||||
:~ [%la %leaf "slept."]
|
||||
==
|
31
try/bin/tiff.hoon
Normal file
31
try/bin/tiff.hoon
Normal file
@ -0,0 +1,31 @@
|
||||
!:
|
||||
:: /=try=/toy/diff/hoon
|
||||
::
|
||||
|= [who=seat est=time eny=@uw was=path]
|
||||
|= ~
|
||||
:_ ~
|
||||
=< main
|
||||
|%
|
||||
++ main
|
||||
^- (list gift)
|
||||
=+ pod=test
|
||||
|- ^- (list gift)
|
||||
?~ pod ~
|
||||
=+ dis=(loss p.i.pod q.i.pod)
|
||||
?> =((lurk p.i.pod (lusk p.i.pod q.i.pod dis)) q.i.pod)
|
||||
:- [%la %leaf "{p.i.pod} to {q.i.pod}: loss {dis}"]
|
||||
$(pod t.pod)
|
||||
::
|
||||
++ fake
|
||||
=+ ram=(shax eny)
|
||||
=+ inx=0
|
||||
|- ^- tape
|
||||
?: =(inx 128) ~
|
||||
[[(add 'a' (end 0 2 ram))] $(inx +(inx), ram (rsh 0 2 ram))]
|
||||
::
|
||||
++ test
|
||||
=+ inx=0
|
||||
|- ^- (list ,[p=tape q=tape])
|
||||
?: =(inx 32) ~
|
||||
[[fake(eny (add 1 eny)) fake(eny (add 2 eny))] $(inx +(inx), eny (add 3 eny))]
|
||||
--
|
10
try/bin/zero.hoon
Normal file
10
try/bin/zero.hoon
Normal file
@ -0,0 +1,10 @@
|
||||
!:
|
||||
|= *
|
||||
|= ~
|
||||
^- bowl
|
||||
:_ ~
|
||||
=+ inx=0
|
||||
|- ^- (list gift)
|
||||
?: =(inx 256) ~
|
||||
:_ $(inx +(inx))
|
||||
[%la %leaf "0 :: {(scow %ud inx)}, {(scow %p inx)}"]
|
5
try/lib/diff.hoon
Normal file
5
try/lib/diff.hoon
Normal file
@ -0,0 +1,5 @@
|
||||
!:
|
||||
:: /=try=/nub/diff/hoon
|
||||
::
|
||||
|%
|
||||
--
|
20
try/web/game/fun.hoon
Normal file
20
try/web/game/fun.hoon
Normal file
@ -0,0 +1,20 @@
|
||||
!:
|
||||
|= mad=[who=@p now=@da eny=@uw ced=cred]
|
||||
|= zab=[sud=scud quy=quay]
|
||||
^- love
|
||||
:- %ham
|
||||
:~ %html
|
||||
:~ %body
|
||||
+"urbit: {neighbor} ready at {<now.mad>}."
|
||||
::
|
||||
:- %ul
|
||||
|- ^- marl
|
||||
?~ messages ~
|
||||
:_ $(messages t.messages)
|
||||
~[%li +"someone said: {(trip i.messages)}"]
|
||||
::
|
||||
:~ ~[%form action/"fun" method/"post"]
|
||||
-"message: {%[%input type/"text" name/"msg"]}"
|
||||
==
|
||||
==
|
||||
==
|
1
try/web/hello/bar.html
Normal file
1
try/web/hello/bar.html
Normal file
@ -0,0 +1 @@
|
||||
<html><body>urbit: born to serve</body></html>
|
5
try/web/hello/moo.holw
Normal file
5
try/web/hello/moo.holw
Normal file
@ -0,0 +1,5 @@
|
||||
|= mad=[who=@p now=@da eny=@uw ced=cred]
|
||||
|= zab=[sec=oryx quy=quay sud=scud]
|
||||
^- love
|
||||
:- %ham
|
||||
html/~[body/~"urbit: {neighbor} prepared to serve at {<now.mad>}"]
|
12
try/web/hello/posty.holw
Normal file
12
try/web/hello/posty.holw
Normal file
@ -0,0 +1,12 @@
|
||||
|= mad=[who=@p now=@da eny=@uw ced=cred]
|
||||
|= zab=[sec=oryx quy=quay sud=scud]
|
||||
^- love
|
||||
:- %ham
|
||||
:~ %html
|
||||
:~ %body
|
||||
+"urbit: {neighbor} ready at {<now.mad>}."
|
||||
:~ ~[%form action/"query.html" method/"get"]
|
||||
-"message: {%[%input type/"text" name/"msg"]}"
|
||||
==
|
||||
==
|
||||
==
|
9
try/web/hello/query.holw
Normal file
9
try/web/hello/query.holw
Normal file
@ -0,0 +1,9 @@
|
||||
|= mad=[who=@p now=@da eny=@uw ced=cred]
|
||||
|= zab=[sec=oryx quy=quay sud=scud]
|
||||
^- love
|
||||
~& [%query quy.zab]
|
||||
:- %ham
|
||||
:~ %html
|
||||
:- %body
|
||||
~"urbit: {neighbor} got query {<quy.zab>}."
|
||||
==
|
Loading…
Reference in New Issue
Block a user