Merge branch 'test' of https://github.com/urbit/urbit into test

This commit is contained in:
C. Guy Yarvin 2014-11-07 14:55:15 -08:00
commit ee8e945e7f
37 changed files with 1634 additions and 488 deletions

View File

@ -1668,6 +1668,7 @@
[hen [%slip %a %kick now]]
[hen [%slip %e %init p.bon]]
[hen [%slip %g %init p.bon]]
[hen [%slip %d %init p.bon]] :: must be after gall
~
==
::
@ -1688,6 +1689,15 @@
:: ~& [%rx p.bon q.bon]
?> ?=([@ *] q.q.bon)
?: ?=(%r i.q.q.bon)
?: ?=([%ta *] t.q.q.bon)
=+ wil=((hard (unit will)) r.bon)
:_ fox
?~ wil ~
=+ ^= pax
:+ (scot %p p.p.bon)
(scot %p q.p.bon)
q.q.bon
[hen %pass pax %g %rote p.bon /began 0 %m %will u.wil]~
?> ?=([@ @ *] t.q.q.bon)
:_ fox
=+ [cak=i.t.q.q.bon ven=i.t.t.q.q.bon]
@ -1713,7 +1723,8 @@
==
::
%pi :: ping
$(bon [%wine p.bon " sent a ping at {(scow %da now)}"])
`fox
:: $(bon [%wine p.bon " sent a ping at {(scow %da now)}"])
::
?(%pr %pc) :: %pr, %pc
:_ fox

View File

@ -53,8 +53,8 @@
[%sith p=@p q=@uw r=?] ::
[%want p=sock q=path r=*] ::
== == ::
$: %b ::
$% [%hail ~] :: to %batz
$: %b :: to %batz
$% [%hail ~] ::
[%line p=@t] ::
== == ::
$: %c :: to %clay

View File

@ -1,6 +1,6 @@
!:
:: clay (4c), revision control
::
!:
|= pit=vase
=> |%
++ cult (map duct rove) :: subscriptions
@ -11,12 +11,14 @@
[%writ p=riot] :: response
== ::
++ kiss :: in request ->$
$% [%info p=@p q=@tas r=nori] :: internal edit
$% [%font p=@p q=@tas r=@p s=@tas] :: set upstream
[%info p=@p q=@tas r=nori] :: internal edit
[%ingo p=@p q=@tas r=nori] :: internal noun edit
[%init p=@p] :: report install
[%into p=@p q=@tas r=nori] :: external edit
[%invo p=@p q=@tas r=nori] :: external noun edit
[%merg p=@p q=@tas r=mizu] :: internal change
[%plug p=@p q=@tas r=@p s=@tas] :: unset upstream
[%wart p=sock q=@tas r=path s=*] :: network request
[%warp p=sock q=riff] :: file request
== ::
@ -32,7 +34,9 @@
$% [%want p=sock q=path r=*] ::
== == ::
$: %c :: to %clay
$% [%warp p=sock q=riff] ::
$% [%font p=@p q=@tas r=@p s=@tas] ::
[%merg p=@p q=@tas r=mizu] ::
[%warp p=sock q=riff] ::
== == ::
$: %d ::
$% [%flog p=[%crud p=@tas q=(list tank)]] :: to %dill
@ -59,6 +63,7 @@
$: fat=(map ship room) :: domestic
hoy=(map ship rung) :: foreign
ran=rang :: hashes
sor=(map ,[p=@p q=@tas r=@p s=@tas] duct) :: upstreams
== ::
++ rave :: general request
$% [& p=mood] :: single request
@ -121,8 +126,7 @@
[%pass b %a %want [who c] [%q %re p.q.d (scot %ud p.d) ~] q.d]
::
%+ turn (flop tag)
|= [a=duct b=path c=note]
[a %pass b c]
|=([a=duct b=path c=note] [a %pass b c])
==
::
++ aver :: read
@ -381,6 +385,52 @@
^- rove
[%| p.p.rav q.p.rav r.p.rav ~]
::
++ sync
|= [hen=duct her=@p sud=@tas rot=riot]
^+ +>.$
?~ rot
~& "autosync from {<sud>} on {<her>} to {<syd>} on {<who>} stopped"
+>.$
?: ?=(%y p.p.u.rot)
%= +>.$
tag
:_ tag
:* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/v
%c %warp [who her] sud
`[%& %v q.p.u.rot /]
==
==
?> ?=(%v p.p.u.rot)
=+ der=((hard dome) r.u.rot)
=+ ^= lum
^- (unit (unit mizu))
%^ ~(construct-merge ze now dom ran)
?:(=(0 let.dom) %init %mate)
who
:+ syd
`saba`[her sud [0 let.der] der]
now
=. tag
:_ tag
:* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/y
%c %warp [who her] sud
`[%& %y [%ud +(let.der)] /]
==
?~ lum
~& "autosync from {<sud>} on {<her>} to {<syd>} on {<who>} failed"
~& "please merge manually"
+>.$
?~ u.lum
~& "autosync from {<sud>} on {<her>} to {<syd>} on {<who>} up to date"
+>.$
%= +>.$
tag
:_ tag
:* hen /auto/(scot %p who)/[syd]/(scot %p her)/[sud]/merg
%c %merg who syd u.u.lum
==
==
::
++ wake :: update subscribers
^+ .
=+ xiq=(~(tap by qyx) ~)
@ -502,19 +552,25 @@
^- [p=(list move) q=_..^$]
?- -.q.hic
%init
[~ ..^$(fat.ruf (~(put by fat.ruf) p.q.hic [hen ~ ~]))]
:_ ..^$(fat.ruf (~(put by fat.ruf) p.q.hic [hen ~ ~]))
=+ bos=(sein p.q.hic)
~& [%bos bos p.q.hic]
?: =(bos p.q.hic) ~
^- (list move)
%+ turn (limo ~[%main %arvo %try])
|= syd=@tas
[hen %pass / %c %font p.q.hic syd bos syd]
::
%font
?: (~(has by sor.ruf) +.q.hic) `..^$
:_ ..^$(sor.ruf (~(put by sor.ruf) +.q.hic hen))
:~ :* hen %pass
/auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/y
%c %warp [p.q.hic r.q.hic] s.q.hic
`[%& %y [%da now] /]
==
==
::
%merg :: direct state up
=^ mos ruf
=+ une=(un p.q.hic now ruf)
=+ ^= zat
(exem:(di:wake:une q.q.hic) hen now r.q.hic)
=+ zot=abet.zat
:- -.zot
=. une (pish:une q.q.hic +.zot ran.zat)
abet:une(hez.yar ?.(=(%into -.q.hic) hez.yar.une [~ hen]))
[mos ..^$]
::
?(%info %into)
?: =(%$ q.q.hic)
?. ?=(%into -.q.hic) [~ ..^$]
@ -544,6 +600,31 @@
=. une (pish:une q.q.hic +.zot ran.zat)
abet:une(hez.yar ?.(=(%invo -.q.hic) hez.yar.une [~ hen]))
[mos ..^$]
::
%merg :: direct state up
=^ mos ruf
=+ une=(un p.q.hic now ruf)
=+ ^= zat
(exem:(di:wake:une q.q.hic) hen now r.q.hic)
=+ zot=abet.zat
:- -.zot
=. une (pish:une q.q.hic +.zot ran.zat)
abet:une(hez.yar ?.(=(%into -.q.hic) hez.yar.une [~ hen]))
[mos ..^$]
::
%plug
?. (~(has by sor.ruf) +.q.hic) `..^$
:_ ..^$(sor.ruf (~(del by sor.ruf) +.q.hic))
=+ hyn=(~(got by sor.ruf) +.q.hic)
:~ :* hyn %pass
/auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/y
%c %warp [p.q.hic r.q.hic] s.q.hic ~
==
:* hyn %pass
/auto/(scot %p p.q.hic)/[q.q.hic]/(scot %p r.q.hic)/[s.q.hic]/v
%c %warp [p.q.hic r.q.hic] s.q.hic ~
==
==
::
%warp
=^ mos ruf
@ -606,6 +687,17 @@
++ take :: accept response
|= [tea=wire hen=duct hin=(hypo sign)]
^- [p=(list move) q=_..^$]
?: ?=([%auto @ @ @ @ ?(%y %v) ~] tea)
?> ?=(%writ -.+.q.hin)
=+ our=(slav %p i.t.tea)
=* sud i.t.t.tea
=+ her=(slav %p i.t.t.t.tea)
=* syd i.t.t.t.t.tea
=+ une=(un our now ruf)
=+ wex=(di:une syd)
=+ wao=(sync:wex hen her sud p.q.hin)
=+ woo=abet:wao
[-.woo ..^$(ruf abet:(pish:une syd +.woo ran.wao))]
?- -.+.q.hin
%crud
[[[hen %slip %d %flog +.q.hin] ~] ..^$]

View File

@ -7,11 +7,11 @@
$% [%bbye ~] :: reset prompt
[%blit p=(list blit)] :: terminal output
[%init p=@p] :: report install
[%logo p=@] :: logout
[%logo ~] :: logout
[%veer p=@ta q=path r=@t] :: install vane
[%vega p=path] :: reboot by path
[%verb ~] :: by %batz
==
[%verb ~] ::
== ::
++ kiss :: in request ->$
$% [%belt p=belt] :: terminal input
[%blew p=blew] :: terminal config
@ -21,6 +21,7 @@
[%hail ~] :: terminal refresh
[%hook ~] :: this term hung up
[%harm ~] :: all terms hung up
[%init p=ship] :: after gall ready
[%noop ~] :: no operation
[%talk p=tank] ::
[%text p=tape] ::
@ -29,42 +30,92 @@
$% [%crud p=@tas q=(list tank)] ::
[%text p=tape] ::
== ::
++ mess :: message to terminal
$% [%term-ctrl p=(hypo ,%hail)] ::
[%term-in p=(hypo term-in)] ::
== ::
++ move ,[p=duct q=(mold note gift)] :: local move
++ note :: out request $->
$% $: %b :: to %batz
$% [%hail ~] ::
[%harm ~] ::
[%hook ~] ::
[%kill p=~] ::
[%line p=@t] ::
[%ling ~] ::
[%make p=(unit ,@t) q=@ud r=@ s=?] ::
$% $: %a ::
$% [%make p=(unit ,@t) q=@ud r=@ s=?] ::
[%sith p=@p q=@uw r=?] ::
== == ::
$: %d :: to %dill
$: %c ::
$% [%warp p=sock q=riff] ::
== == ::
::S $% $: %b :: to %batz
::S $% [%hail ~] ::
::S [%harm ~] ::
::S [%hook ~] ::
::S [%kill p=~] ::
::S [%line p=@t] ::
::S [%ling ~] ::
::S [%make p=(unit ,@t) q=@ud r=@ s=?] ::
::S [%sith p=@p q=@uw r=?] ::
::S == == ::
$: %d ::
$% [%crud p=@tas q=(list tank)] ::
[%text p=tape] ::
== == ::
$: %g ::
$% [%mess p=[p=ship q=path] q=ship r=mess] ::
[%show p=[p=ship q=path] q=ship r=path] ::
== == ::
$: %t ::
$% [%wait p=@da] ::
== == == ::
++ riff ,[p=desk q=(unit rave)] :: see %clay
++ sign :: in result $<-
$? $: %b :: by %batz
$% [%hail ~] ::
[%helo p=path q=prod] ::
[%logo p=@] ::
[%save p=path q=@] ::
[%sage p=path q=*] ::
[%talk p=tank] ::
[%tell p=(list ,@t)] ::
[%text p=tape] ::
$?
::S $: %b :: by %batz
::S $% [%hail ~] ::
::S [%helo p=path q=prod] ::
::S [%logo p=@] ::
::S [%save p=path q=@] ::
::S [%sage p=path q=*] ::
::S [%talk p=tank] ::
::S [%tell p=(list ,@t)] ::
::S [%text p=tape] ::
::S [%verb ~] ::
::S [%veer p=@ta q=path r=@t] ::
::S [%vega p=path] ::
::S [%warn p=tape] ::
::S == == ::
$: %c ::
$% [%writ p=riot] ::
== == ::
$: %g ::
$% [%mean p=ares] ::
[%nice ~] ::
$: %rush :: XX
$% [%term-line q=term-line] ::
[%hymn q=manx] ::
[%json q=json] ::
== == ::
$: %rust ::
$% [%term-line q=term-line] ::
[%hymn q=manx] ::
[%json q=json] ::
== == ::
[%verb ~] ::
[%sage p=path q=*] ::
[%veer p=@ta q=path r=@t] ::
[%vega p=path] ::
[%warn p=tape] ::
== == ::
$: @tas :: by any
$% [%crud p=@tas q=(list tank)] ::
[%init p=@p] ::
[%note p=@tD q=tank] ::
== == == ::
++ term-in ::
$: pax=path ::
$= jof ::
$% [%line p=span] ::
[%res p=span] ::
[%cmd p=char] ::
== == ::
++ term-line ,[p=[p=cord q=prom] q=(list cord) r=(list tark)]
++ tark ?(tank [%stem p=tank q=tank]) ::
:::::::: :: dill tiles
++ bein :: terminal control
$: $: bul=@ud :: buffer length
@ -107,6 +158,16 @@
r=(list (list ,@c)) :: kills
== ::
++ blur ,[p=@ud q=(unit bein) r=blot] :: columns, prompt
++ kyev ::
$: p=(set ?(%ctrl %shift %alt %meta)) ::
q=$|(cord [%act speck]) ::
== ::
++ speck ::
$? %ctrl %shift %alt %meta %entr %esc ::
%caps %uncap %pgup %pgdn %home %end ::
%baxp %del %ins %up %down %left ::
%right ::
== ::
++ yard :: terminal state
$: p=? :: verbose
q=blur :: display state
@ -115,10 +176,11 @@
-- =>
|%
++ dy
|= [hen=duct dug=(map duct yard)]
|= [hen=duct our=ship def=(unit duct) dug=(map duct yard)]
=+ ^= yar ^- yard
=+ yur=(~(get by dug) hen)
?^ yur u.yur
?^ def (~(got by dug) u.def)
[& [80 ~ *blot] ~]
=| mos=(list move)
|%
@ -267,53 +329,96 @@
?~ q.+.sih +>.^$
(fume:$(q.+.sih t.q.+.sih) '!' `tank`i.q.+.sih)
::
%helo :: trigger prompt
::S %helo :: trigger prompt
::S %- edit
::S =| bed=bein
::S =+ ^= hyt ^- hist
::S =+ hyt=(~(get by r.yar) p.+.sih)
::S ?~(hyt *hist u.hyt)
::S ?: &(?=(^ q.q.yar) =(p.+.sih hux.u.q.q.yar))
::S %= u.q.q.yar
::S hyt [+(p.hyt) [%$ q.hyt]]
::S pot q.q.+.sih
::S pol (lent q.q.+.sih)
::S buy p.q.+.sih
::S ==
::S =+ zon=(tuba r.q.+.sih)
::S =+ zow=(lent zon)
::S %= bed
::S bul zow
::S bus zow
::S but zon
::S buy p.q.+.sih
::S hux p.+.sih
::S hiz 0
::S hyt [+(p.hyt) [%$ q.hyt]]
::S pot q.q.+.sih
::S pol (lent q.q.+.sih)
::S ==
::S ::
::S ?(%hail %make %sith)
::S +>.$(mos :_(mos [hen %pass ~ %b +.sih]))
::S ::
%mean ~& %dill-mean +>.$
%nice +>.$
%note ?.(p.yar +>.$ (fume p.+.sih q.+.sih)) :: debug message
?(%rush %rust) :: XX reset prompt
?> ?=(%term-line +>-.sih)
=. +>.$
=- (furl (zing (turn (flop r.q.sih) -)))
|= a=tark
^- wall
?+ -.a (~(win re a) 0 p.q.yar)
%stem ~[~(ram re p.a) ~(ram re p.a)]
==
%- edit
=| bed=bein
=+ ^= hyt ^- hist
=+ hyt=(~(get by r.yar) p.+.sih)
=+ hyt=(~(get by r.yar) /)
?~(hyt *hist u.hyt)
?: &(?=(^ q.q.yar) =(p.+.sih hux.u.q.q.yar))
?: &(?=(^ q.q.yar) =(/ hux.u.q.q.yar))
%= u.q.q.yar
hyt [+(p.hyt) [%$ q.hyt]]
pot q.q.+.sih
pol (lent q.q.+.sih)
buy p.q.+.sih
pot (trip p.p.q.sih)
pol (met 3 p.p.q.sih)
buy q.p.q.sih
==
=+ zon=(tuba r.q.+.sih)
=+ zow=(lent zon)
%= bed
bul zow
bus zow
but zon
buy p.q.+.sih
hux p.+.sih
%_ bed
bul 0
bus 0
but ~
buy q.p.q.sih
hux /
hiz 0
hyt [+(p.hyt) [%$ q.hyt]]
pot q.q.+.sih
pol (lent q.q.+.sih)
pot (trip p.p.q.sih)
pol (met 3 p.p.q.sih)
==
::
?(%hail %make %sith)
+>.$(mos :_(mos [hen %pass ~ %b +.sih]))
::
%note ?.(p.yar +>.$ (fume p.+.sih q.+.sih)) :: debug message
%sage :: write a jamfile
%= +>.$
mos :_(mos [hen [%give %blit [%sag p.+.sih q.+.sih] ~]])
==
::
%save :: write a file
%= +>.$
mos :_(mos [hen [%give %blit [%sav p.+.sih q.+.sih] ~]])
==
::
%tell (furl (turn p.+.sih |=(a=@t (trip a)))) :: wall of text
%talk (furl (~(win re p.+.sih) 0 p.q.yar)) :: program output
%text $(+.sih [%talk %leaf p.+.sih]) :: simple message
%warn (fume '~' [%leaf p.+.sih]) :: system message
?(%init %logo %veer %vega %verb) :: drop-throughs
::S ::
::S %save :: write a file
::S %= +>.$
::S mos :_(mos [hen [%give %blit [%sav p.+.sih q.+.sih] ~]])
::S ==
::S ::
::S %tell (furl (turn p.+.sih |=(a=@t (trip a)))) :: wall of text
::S %talk (furl (~(win re p.+.sih) 0 p.q.yar)) :: program output
::S %text $(+.sih [%talk %leaf p.+.sih]) :: simple message
::S %warn (fume '~' [%leaf p.+.sih]) :: system message
::S ?(%init %logo %veer %vega %verb) :: drop-throughs
::S +>(mos :_(mos [hen %give +.sih]))
?(%init %veer %vega %verb) :: drop-throughs
+>(mos :_(mos [hen %give +.sih]))
%writ :: file exists
%= +>.$
mos
:_ mos
[hen %pass / %g %show [our /terminal] our /lines]
==
==
::
++ lear :: handle request
@ -324,6 +429,7 @@
%noop +>
%belt :: terminal input
?~ q.q.yar
~& %dill-no-bein
beep
?^ hyr.u.q.q.yar :: live search
?+ p.kyz $(hiz.u.q.q.yar 0, hyr.u.q.q.yar ~)
@ -389,7 +495,7 @@
%d ?: ?& =(0 bul.u.q.q.yar)
=(0 bus.u.q.q.yar)
==
+>.$(mos :_(mos [hen %pass ~ %b [%kill ~]]))
+>.$(mos :_(mos [hen %give %logo ~]))
$(kyz [%belt %del ~])
%e (edit u.q.q.yar(bus bul.u.q.q.yar))
%f $(kyz [%belt %aro %r])
@ -438,7 +544,8 @@
%r (edit u.q.q.yar(hyr [~ ~]))
:: TODO
:: %w +>.$(mos :_(mos [hen %pass ~ %b [%limn ~]]))
%x +>.$(mos :_(mos [hen %pass ~ %b [%ling ~]]))
%x +>.$(mos :_(mos (poke %term-in -:!>(*term-in) / %cmd %x)))
::S %x +>.$(mos :_(mos [hen %pass ~ %b [%ling ~]]))
%y ?: =(0 p.r.q.yar)
beep
$(kyz [%belt %txt (snag q.r.q.yar r.r.q.yar)])
@ -507,9 +614,11 @@
[p.hyt.u.q.q.yar [jab ?~(q.hyt.u.q.q.yar ~ +.q.hyt.u.q.q.yar)]]
::
mos
:* [hen %pass ~ %b [%hail ~]]
:* ::S [hen %pass ~ %b [%hail ~]]
(poke %term-ctrl -:!>(%hail) %hail)
[hen %give [%bbye ~]]
[hen %pass ~ %b [%line jab]]
::S [hen %pass ~ %b [%line jab]]
(poke %term-in -:!>(*term-in) / %line jab)
[hen %give [%blit [[%mor ~] ~]]]
mos
==
@ -533,9 +642,9 @@
::
%blew +>.$(p.q.yar p.p.kyz) :: window size
%boot
%= +>.$
mos
:_(mos [hen %pass ~ (note %b p.kyz)])
%= +>.$
mos
:_(mos [hen %pass ~ (note %a p.kyz)])
==
::
%crud :: error trace
@ -545,30 +654,51 @@
(fume:$(q.kyz t.q.kyz) '!' `tank`i.q.kyz)
::
%hail :: refresh
+>.$(mos :_(mos [hen %pass ~ %b kyz]))
+>.$
::S +>.$(mos :_(mos [hen %pass ~ %b kyz]))
::
%harm :: all terms hung up
=+ nug=((map duct yard) [[hen (~(get by dug) hen)] ~ ~])
^+ +>.$
%= +>.$
dug nug
mos :_(mos [hen %pass ~ %b kyz])
::S mos :_(mos [hen %pass ~ %b kyz])
==
::
%hook :: this term hung up
+>.$(dug (~(del by dug) hen), mos :_(mos [hen %pass ~ %b kyz]))
~& %dill-hook-not-implemented
+>.$
::S +>.$(dug (~(del by dug) hen), mos :_(mos [hen %pass ~ %b kyz]))
::
%init
=. def `(fall def +.hen)
%= +>.$
our p.kyz
mos
:_ mos
[(need def) %pass / %c %warp [p.kyz p.kyz] %main `[%& %y [%ud 1] /]]
==
::
%talk (furl (~(win re p.kyz) 0 p.q.yar)) :: program output
%text $(kyz [%talk %leaf p.kyz]) :: simple message
==
::
++ poke
|= msg=mess
^- move
:^ hen %pass /
:^ %g %mess [our /terminal]
:- our msg
::
++ yerk :: complete core
^- [p=(list move) q=(map duct yard)]
:- (flop mos)
^- [p=(list move) q=ship r=(unit duct) s=(map duct yard)]
:^ (flop mos) our def
(~(put by dug) hen yar)
--
--
=| $: %0 ::
our=ship ::
def=(unit duct) ::
dug=(map duct yard) ::
== ::
|= [now=@da eny=@ ski=sled] :: current invocation
@ -592,8 +722,8 @@
:_ ..^$
%+ turn (~(tap by dug) *(list ,[p=duct q=yard]))
|=([a=duct b=yard] [a %slip %d p.q.hic])
=^ moz dug yerk:(lear:(dy hen dug) q.hic)
[moz ..^$]
=+ res=yerk:(lear:(dy hen our def dug) q.hic)
[-.res ..^$(our +<.res, dug +>+.res, def +>-.res)]
::
++ doze
|= [now=@da hen=duct]
@ -601,19 +731,19 @@
~
::
++ load
|= old=[%0 dug=(map duct yard)]
|= old=[%0 our=ship def=(unit duct) dug=(map duct yard)]
^+ ..^$
..^$(dug dug.old)
..^$(our our.old, def def.old, dug dug.old)
::
++ scry
|= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path]
^- (unit (unit (pair mark ,*)))
[~ ~ [%tank >dug<]]
::
++ stay [%0 dug]
++ stay [%0 our def dug]
++ take :: process move
|= [tea=wire hen=duct hin=(hypo sign)]
^- [p=(list move) q=_..^$]
=^ moz dug yerk:(leap:(dy hen dug) tea q.hin)
[moz ..^$]
=+ res=yerk:(leap:(dy hen our def dug) tea q.hin)
[-.res ..^$(our +<.res, dug +>+.res, def +>-.res)]
--

View File

@ -28,11 +28,6 @@
++ note :: out request $->
$% $: %a :: to %ames
$% [%want p=sock q=path r=*] ::
== == ::
$: %b :: to %batz
$% [%hail ~] ::
[%line p=@t] ::
[%ling ~] ::
== == ::
$: %c :: to %clay
$% [%warp p=sock q=riff] ::

View File

@ -804,8 +804,7 @@
|= [cof=cafe vax=vase gen=twig]
=+ puz=(mule |.((~(mint ut p.vax) [%noun gen])))
?- -.puz
| ~& [%maim-fail p.puz]
(flaw cof p.puz)
| (flaw cof p.puz)
& %+ (coup cof) (mock [q.vax q.p.puz] (mole ska))
|= val=*
`vase`[p.p.puz val]

View File

@ -131,10 +131,11 @@
$% [%dirt p=twig] ::
== ::
++ sign :: in result $<-
$? [?(%b %c %d %e) @tas *] ::
$? [?(%c %d %e %t) @tas *] ::
$: %a :: by %ames
$% [%woot p=ship q=coop] ::
[%went p=ship q=cape] :: XX only for apps
$% [%init p=@p] :: only for :begin
[%woot p=ship q=coop] ::
[%went p=ship q=cape] :: only for apps
== == ::
$: %g :: by %gall
$% [%crud p=@tas q=(list tank)] ::
@ -144,6 +145,8 @@
[%nice ~] ::
[%rush p=mark q=*] ::
[%rust p=mark q=*] ::
[%sage p=path q=*] ::
[%verb ~] ::
[%veer p=@ta q=path r=@t] ::
[%vega p=path] ::
== == ::
@ -342,7 +345,7 @@
:- %meta
^- vase
:- :+ %cell [%cube sem %atom %tas]
[%cell [%atom %tas] p.q.cay]
[%cell [%cube p.cay %atom %tas] p.q.cay]
[sem p.cay q.q.cay]
::
++ gaff :: take and go
@ -358,7 +361,7 @@
?> ?=(?(%mess %show %nuke) -.kon)
=+ you=`ship`?-(-.kon %mess p.kon, %nuke p.kon, %show p.kon)
=+ mat=(~(got by pol.all) you)
=+ sad==+(sad=(~(get by sap.mat) our) ?^(sad u.sad *scad))
=+ sad==+(sad=(~(get by sap.mat) our) ?^(sad u.sad [.(p 1)]:*scad))
=^ num sad
=+ nym=(~(get by q.sad) hen)
?^ nym [u.nym sad]
@ -424,15 +427,16 @@
=+ rod=|=(ron=roon `note`[%a %wont [our you] [%q %gh imp] num ron])
?+ -.pax !!
%m ?: ?=(%a -.sih) ~
:_ ~ :- hen
?+ -.sih ~& [%gall-gave-m -.sih] !!
%f
:_ ~ :- hen
?- -.p.+.sih
%| [%give %mean ~ %ford-fail p.p.+.sih]
%& [%pass [%r pax] %g %mess [our imp] you `cage`q.p.p.+.sih]
==
::
%g
:_ ~ :- hen
?- -.+.sih
%crud !!
%dumb !!
@ -441,6 +445,8 @@
%nice [%give %nice ~]
%rush !!
%rust !!
%sage !!
%verb !!
%veer !!
%vega !!
==
@ -457,6 +463,8 @@
%nice [%give %nice ~]
%rush [%pass [%r pax] (rod %d p.+.sih q.+.sih)]
%rust [%pass [%r pax] (rod %f p.+.sih q.+.sih)]
%sage !!
%verb !!
%veer !!
%vega !!
==
@ -467,6 +475,7 @@
++ gawd :: %r handle response
|= [hen=duct saq=sack imp=path num=@ud ron=roon]
^- [p=(list move) q=_..^$]
?: =(0 num) ~& %shouldnt-get-zero `..^$
=+ mat=(~(got by pol.all) p.saq)
=+ sad=(~(got by sap.mat) q.saq)
=+ neh=(~(got by r.sad) num)

View File

@ -9882,7 +9882,6 @@
?+ hap !!
[@ %ames *] %a
[@ %newt *] %a
[@ %batz *] %b
[@ %sync *] %c
[@ %term *] %d
[@ %http *] %e

43
main/app/began/core.hook Normal file
View File

@ -0,0 +1,43 @@
/- begin-args
::
|%
++ sign
$% $: %a
$% [%went p=ship q=cape]
[%init p=@p]
== == ==
++ began-args ,[his=@p tic=@p eny=@t ges=gens]
--
::
!:
|_ [hid=hide %0 ust=bone his=@p mac=mace]
++ poke-began-args
|= [ost=bone you=ship began-args]
=+ bur=(shax :(mix (jam ges) eny))
=+ loy=(bruw 2.048 bur)
:_ +>.$(ust ost, his his, mac [0 sec:ex:loy]~)
:~ :* ost %pass /ticketing %a %want [our.hid (sein his)] /q/ta
his tic ges pub:ex:loy
==
==
::
++ poke-will
|= [ost=bone you=ship wil=will]
:_ +>.$ :_ ~
[ust %pass / %a %cash his mac wil]
::
++ pour
|= [ost=bone pax=path sih=*]
=+ sih=((soft sign) sih) :: seem to get blits
?~ sih `+>.$
:_ +>.$
?- +<.u.sih
%init ~
%went [ost %give ?:(?=(%good q.u.sih) [%nice ~] [%mean ~ %went-dead ~])]~
==
::
++ peer
|=
*
`+>
--

535
main/app/begin/core.hook Normal file
View File

@ -0,0 +1,535 @@
/- begin-args
::
|%
++ sign
$% $: %g
$% [%nice ~]
[%mean p=ares]
[%rush %txt p=cord]
== == ==
++ form ,[his=@p tic=@p eny=@t ges=gens]
++ state
$? %begin %his %tic %eny %lag
%name %form %psect %pname %year
%govt %sect %fname %mname %nname
%lname %done
==
--
::
!:
|_ [hid=hide sat=state form]
++ done
|= ost=bone
:_ +>.$
:~ :* ost %pass /to-gan %g %mess [our.hid /began] our.hid
%began-args !>([his tic eny ges])
==
==
::
++ 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 prn)))
::
++ next
|= txt=cord
^- [[[cord prom] (list cord)] _+>.$]
?- sat
%begin
:_ +>.$(sat %his)
:- ['Your ship: ~' %text]
%- lore %- crip
"""
Do you have a ship and a ticket? If not, please ask
urbit@urbit.org for one.
"""
%his
=+ her=(rash txt fed:ag)
=> .(-.q.ges (clan her))
=+ ^= cow
|- ^- @ud
?- -.q.ges
%czar 256
%king (mul 255 $(-.q.ges %czar))
%duke (mul 65.535 $(-.q.ges %king))
%earl (mul (dec (bex 32)) $(-.q.ges %duke))
%pawn (sub (bex 128) $(-.q.ges %earl))
==
=+ ^= ves ^- tape
?- -.q.ges
%czar "carriers"
%king "cruisers"
%duke "destroyers"
%earl "yachts"
%pawn "submarines"
==
:_ ^+ +>.$ +>.$(his (rash txt fed:ag), sat %tic)
:- ['Your ticket: ~' %text]
%- lore %- crip
"""
Launching {(scow %p her)}, one of {<cow>} Urbit {ves}...
If I did not build for myself
for whom should I build?
-- Bunting, _Chomei at Toyama_
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 ^D to cancel, then run the program again.
"""
::
%tic
:_ +>.$(tic (rash txt fed:ag), sat %eny)
:- ['Entropy: ' %pass]
%- lore %- crip
"""
Enter a passphrase or other unusual text. You (or your enemies)
can regenerate your ship from this entropy.
"""
::
%eny
:_ +>.$(eny (rash txt (boss 256 (more gon qit))), sat %lag)
:- ['Language: ' %text]
%- lore %- crip
"""
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.
"""
::
%lag
=+ ^= par
%+ sear
|= [a=@ b=@]
^- (unit ,@ta)
=+ c=(cat 3 a b)
=+(d=(glon c) ?~(d ~ [~ c]))
;~(plug low low)
?. ?=(%duke -.q.ges)
:_ +>.$(p.ges (rash txt par), sat %name)
[['Name: ' %text] ~]
:_ +>.$(p.ges (rash txt par), sat %form)
:- ['Form: ' %text]
%- lore %- crip
"""
Please select one of the pre-chosen forms:
%lady female-identified individual
%lord male-identified individual
%punk opaque handle
%anon totally anonymous
"""
::
%name
?> ?=(?(%earl %king) -.q.ges)
=+ nam=(rash txt (boss 256 (more gon qit)))
=+ gos=?-(-.q.ges %earl [%earl nam], %king [%king nam])
:_ +>.$(q.ges gos, sat %done)
[['' %text] ~]
::
%form
=+ ^= par
;~ pose
(jest %anon)
(jest %lady)
(jest %lord)
(jest %punk)
==
=+ fom=(rash txt par)
?+ fom !!
%anon [[['' %text] ~] +>.$(q.ges [%duke %anon ~], sat %done)]
%punk
:_ +>.$(q.ges [%duke %punk *sect ''], sat %pname)
[['Handle: ' %text] ~]
?(%lady %lord)
=+ wat=?-(fom %lady [%lady *whom], %lord [%lord *whom])
:_ +>.$(q.ges `gcos`[%duke wat], sat %year)
:- ['Year you were born: ' %text]
%- lore %- crip
"""
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 ^D 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.
"""
==
::
%pname
:_ +>.$(q.ges [%duke %punk *sect (rash txt loon)], sat %psect)
:- ['Banner: %' %text]
%- lore %- crip
"""
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.
"""
::
%psect
?> ?=(%duke -.q.ges)
?> ?=(%punk -.p.q.ges)
=+ ^= par
;~ pose
(jest %white)
(jest %blue)
(jest %red)
(jest %black)
(jest %orange)
==
:- [['' %text] ~]
%= +>.$
q.ges [%duke %punk ((hard sect) (rash txt par)) q.p.q.ges]
sat %done
==
::
%year
?> ?=(%duke -.q.ges)
?> ?=(?(%lord %lady) -.p.q.ges)
=+ woh=`whom`[(rash txt dim:ag) *govt *sect *name]
=+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
:_ +>.$(q.ges [%duke wat], sat %govt)
:- ['Location (e.g. us/94103):' %text]
%- lore %- crip
"""
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.
"""
::
%govt
?> ?=(%duke -.q.ges)
?> ?=(?(%lord %lady) -.p.q.ges)
=+ ^= par
;~ pose
;~ plug (cook |=([a=@ b=@] (cat 3 a b)) ;~(plug low low))
;~ pfix fas
%+ cook
|=(a=tape (rap 3 ^-((list ,@) a)))
(star ;~(pose hig hep nud))
==
(easy ~)
==
==
=+ woh=`whom`[p.p.p.q.ges (rash txt par) *sect *name]
=+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
:_ +>.$(q.ges [%duke wat], sat %sect)
:- ['Banner: %' %text]
%- lore %- crip
"""
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.
"""
::
%sect
?> ?=(%duke -.q.ges)
?> ?=(?(%lord %lady) -.p.q.ges)
=+ ^= par
;~ pose
(jest %white)
(jest %blue)
(jest %red)
(jest %black)
(jest %orange)
==
=+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges (sect (rash txt par)) *name]
=+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
:_ +>.$(q.ges [%duke wat], sat %fname)
[['First name: ' %text] ~]
::
%fname
?> ?=(%duke -.q.ges)
?> ?=(?(%lord %lady) -.p.q.ges)
=+ nam=[(rash txt loon) *(unit ,@t) *(unit ,@t) *@t]
=+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nam]
=+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
:_ +>.$(q.ges [%duke wat], sat %mname)
[['Middle name (or blank): ' %text] ~]
::
%mname
?> ?=(%duke -.q.ges)
?> ?=(?(%lord %lady) -.p.q.ges)
=+ uni=(rash txt ;~(pose (stag ~ loon) (easy ~)))
=+ nam=[p.s.p.p.q.ges uni *(unit ,@t) *@t]
=+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nam]
=+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
:_ +>.$(q.ges [%duke wat], sat %nname)
[['Nickname/handle (or blank): ' %text] ~]
::
%nname
?> ?=(%duke -.q.ges)
?> ?=(?(%lord %lady) -.p.q.ges)
=+ uni=(rash txt ;~(pose (stag ~ loon) (easy ~)))
=+ nam=[p.s.p.p.q.ges q.s.p.p.q.ges uni *@t]
=+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nam]
=+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
:_ +>.$(q.ges [%duke wat], sat %lname)
[['Last name: ' %text] ~]
::
%lname
?> ?=(%duke -.q.ges)
?> ?=(?(%lord %lady) -.p.q.ges)
=+ nam=[p.s.p.p.q.ges q.s.p.p.q.ges r.s.p.p.q.ges (rash txt loon)]
=+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nam]
=+ wat=`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
:_ +>.$(q.ges [%duke wat], sat %done)
[['' %text] ~]
::
%done !!
==
::
++ poke-begin-args
|= [ost=bone you=ship arg=(list)]
=^ sot +>.$
?~ arg [%begin +>.$]
=+ ((soft ,@p) i.arg)
?~ - [%begin +>.$]
=. his u.-
?~ t.arg [%his +>.$]
=+ ((soft ,@p) i.t.arg)
?~ - [%his +>.$]
=. tic u.-
?~ t.t.arg [%tic +>.$]
=+ ((soft ,@t) i.t.t.arg)
?~ - [%tic +>.$]
=. eny u.-
?~ t.t.t.arg [%eny +>.$]
=+ ((soft lang) i.t.t.t.arg)
?~ - [%eny +>.$]
?~ (glon u.-) [%eny +>.$]
=. p.ges u.-
=+ ran=(clan his)
=* sec t.t.t.t.arg
?~ sec [%lag +>.$]
?- ran
?(%czar %pawn) %begin
?(%king %earl)
=+ ((soft ,@t) i.sec)
?~ - [%lag +>.$]
=. q.ges
?- ran
%king [%king u.-]
%earl [%earl u.-]
==
[%done +>.$]
::
%duke
=+ ((soft ?(%anon %lady %lord %punk)) i.sec)
?~ - [%lag +>.$]
?- u.-
%anon
=. q.ges [%duke %anon ~]
[%done +>.$]
::
%punk
?~ t.sec [%form +>.$]
=+ ((soft ,@t) i.t.sec)
?~ - [%form +>.$]
=. q.ges [%duke %punk *sect u.-]
?~ t.t.sec [%pname +>.$]
=+ ((soft sect) i.t.t.sec)
?~ - [%pname +>.$]
?> ?=(%duke -.q.ges)
?> ?=(%punk -.p.q.ges)
=. q.ges [%duke %punk u.- q.p.q.ges]
[%done +>.$]
::
?(%lady %lord)
=. q.ges
^- gcos
:- %duke
?- u.-
%lady [%lady *whom]
%lord [%lord *whom]
==
?~ t.sec [%form +>.$]
=+ ((soft ,@ud) i.t.sec)
?~ - [%form +>.$]
=+ ^= wat
=+ woh=`whom`[u.- *govt *sect *name]
?> ?=(%duke -.q.ges)
?> ?=(?(%lady %lord) -.p.q.ges)
`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
=. q.ges `gcos`[%duke wat]
?~ t.t.sec [%year +>.$]
=+ ((soft govt) i.t.t.sec)
?~ - [%year +>.$]
=+ ^= wat
?> ?=(%duke -.q.ges)
?> ?=(?(%lady %lord) -.p.q.ges)
=+ woh=`whom`[p.p.p.q.ges u.- *sect *name]
`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
=. q.ges [%duke wat]
?~ t.t.t.sec [%govt +>.$]
=+ ((soft sect) i.t.t.t.sec)
?~ - [%govt +>.$]
=+ ^= wat
?> ?=(%duke -.q.ges)
?> ?=(?(%lady %lord) -.p.q.ges)
=+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges u.- *name]
`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
=. q.ges [%duke wat]
=+ nam=((hard (list)) |8.arg)
?~ nam [%sect +>.$]
=+ ((soft ,@t) i.nam)
?~ - [%sect +>.$]
=+ ^= wat
?> ?=(%duke -.q.ges)
?> ?=(?(%lady %lord) -.p.q.ges)
=+ nym=`name`[u.- *(unit ,@t) *(unit ,@t) *@t]
=+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nym]
`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
~! nama=nam
=. q.ges `gcos`[%duke wat]
~! namb=nam
?~ t.nam [%fname +>.$]
=+ ((soft (unit ,@t)) i.t.nam)
?~ - [%fname +>.$]
=+ ^= wat
?> ?=(%duke -.q.ges)
?> ?=(?(%lady %lord) -.p.q.ges)
=+ nym=[p.s.p.p.q.ges u.- *(unit ,@t) *@t]
=+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nym]
`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
=. q.ges [%duke wat]
?~ t.t.nam [%mname +>.$]
=+ ((soft (unit ,@t)) i.t.t.nam)
?~ - [%mname +>.$]
=+ ^= wat
?> ?=(%duke -.q.ges)
?> ?=(?(%lady %lord) -.p.q.ges)
=+ nym=[p.s.p.p.q.ges q.s.p.p.q.ges u.- *@t]
=+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nym]
`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
=. q.ges [%duke wat]
?~ t.t.t.nam [%nname +>.$]
=+ ((soft ,@t) i.t.t.t.nam)
?~ - [%nname +>.$]
=+ ^= wat
?> ?=(%duke -.q.ges)
?> ?=(?(%lady %lord) -.p.q.ges)
=+ nym=[p.s.p.p.q.ges q.s.p.p.q.ges r.s.p.p.q.ges u.-]
=+ woh=`whom`[p.p.p.q.ges q.p.p.q.ges r.p.p.q.ges nym]
`what`?-(-.p.q.ges %lord [%lord woh], %lady [%lady woh])
=. q.ges [%duke wat]
[%done +>.$]
==
==
=^ res +>.$
^- [[pot=[cord prom] tak=(list cord)] _+>.$]
(next(sat sot) '')
:_ +>.$
%+ welp
:~ [ost %pass /in %g %show [our.hid +.imp.hid] you /in/[-.imp.hid]]
[ost %give %nice ~]
==
%+ welp
(spam %rush %prompt pot.res)
%- zing
(turn (flop tak.res) |=(a=cord (spam %rush %txt a)))
::
++ pour
|= [ost=bone pax=path sih=*]
=+ sih=((hard sign) sih)
?: ?=([%in ~] pax)
?. ?=(%rush +<.sih) `+>.$
=^ res +>.$
^- [[pot=[cord prom] tak=(list cord)] _+>.$]
(next p.sih)
?: ?=(%done sat)
(done ost)
:_ +>.$
%+ welp (spam %rush %prompt pot.res)
%- zing
(turn (flop tak.res) |=(a=cord (spam %rush %txt a)))
:_ +>.$
:- [ost %give +.sih]
%+ turn (~(tap by sup.hid))
|= [ost=bone *]
:^ ost %give %rush
:- %tang :_ ~
[%leaf ?:(?=(%nice +<.sih) "begin successful" "begin failed")]
::
++ peer
|=
*
`+>
::
++ spam
|* git=*
%+ turn
(~(tap in (~(get ju pus.hid) /out)))
|=(a=bone [a %give git])
--

View File

@ -29,6 +29,7 @@
%nice
[ost %give %nice ~]~
%rush
%+ weld (spam %rush %prompt 'searching for {<arg>}...')
%- spam
?- &3.sih
%txt

View File

@ -9,11 +9,22 @@
:::: structures
::
|% ::
++ axle ::
$: pid=@u :: next process id
pax=_`path`/=try= :: working directory
act=(unit span) :: active child
pip=(map span span) :: pipe out->in
pop=(map span span) :: pipe in->out
pot=(map span ,[cord prom]) :: prompts
var=(map term vase) :: variables
== ::
++ gift ::
$% [%rush p=gilt] ::
[%mean p=ares] ::
[%nice ~] ::
[%meta p=vase] ::
[%sage p=path q=*] ::
[%verb ~] ::
[%veer p=@ta q=path r=@t] ::
[%vega p=path] ::
== ::
@ -21,6 +32,7 @@
$% [%term-line p=term-line] ::
[%txt p=cord] ::
== ::
++ glas $|(%out [%in p=cord]) ::
++ hapt ,[p=ship q=path] ::
++ move ,[p=bone q=(mold note gift)] ::
++ note ::
@ -54,6 +66,8 @@
[%nice ~] ::
[%rush p=mark q=*] ::
[%rust p=mark q=*] ::
[%sage p=path q=*] ::
[%verb ~] ::
[%veer p=@ta q=path r=@t] ::
[%vega p=path] ::
== == == ::
@ -87,7 +101,7 @@
^- $+(nail (like coma))
=+ paf=pax
=. pax ?.(&(?=([@ @ @ *] pax) =('0' &3.pax)) pax pax(&3 (scot da/lat)))
%+ ifix [(star ace) (star ace)]
%+ ifix [(star ace) gaw]
;~ pose
(stag %run ;~(plug (star ;~(sfix (task(tol %0) bar) ace)) (task col)))
(stag %end ;~(pfix col sem ;~(pose (stag %& dem) (stag %| sym))))
@ -117,261 +131,332 @@
--
--
!:
:::: program
:::: per event
::
|_ $: hid=hide
pid=@u
pax=_`path`/=try=
act=(unit span)
pip=(map span span)
pop=(map span span)
var=(map term vase)
==
::
++ peer :: handle subscription
|= [ost=bone you=ship pax=path]
^- [(list move) _+>]
?~ pax `+>.$
?+ i.pax `+>.$
%in :: to app
?~ t.pax `+>.$
?. (~(has by cub.hid) i.t.pax) `+>.$
?: (~(has by pop) i.t.pax) `+>.$
:_ +>.$(act `i.t.pax)
(print ost you ~)
%out :: to terminal
?> ?=(~ t.pax)
:_ +>.$
[ost %give %rush %term-line `term-line`[prompt ~ ~]]~
==
::
++ cubs :: tasks with open /in
%- sort :_ |=([a=span b=span] (lth (slav %ud a) (slav %ud b)))
^- (list span)
%+ murn (~(tap by sup.hid))
|= [@ @ a=path]
?. ?& ?=([%in cord ~] a)
(~(has by cub.hid) i.t.a)
!(~(has by pop) i.t.a)
==
~
(some i.t.a)
::
++ next-act :: rotate active task
=+ opt=[i=`(unit span)`~ t=(turn cubs |=(a=span `(unit span)`[~ a]))]
|-
?~ t.opt ~
?: =(act i.opt)
i.t.opt
$(opt t.opt)
::
++ poke-kyev :: handle key event
|= [ost=bone you=ship key=kyev]
^- [(list move) _+>]
?: ?=([~ @] key) (poke-txt ost you q.key) :: simple keypress
?> ?=([[%ctrl ~ ~] @t] key)
?+ q.key
:_ +>.$
:- [ost %give %nice ~]
(print ost you leaf/"no command \\{(trip q.key)}" ~)
%x =. act next-act
:_ +>.$
:- [ost %give %nice ~]
(print ost you ~)
%l =+ =- tak=rose/[" " "[" "]"]^(turn cubs -)
|= a=span
leaf/(trip (rap 3 (~(got by cub.hid) a) '(' a ')' ~))
[[[ost give/nice/~] (print ost you tak ~)] +>.$]
==
::
++ poke-txt :: handle command
|= [ost=bone you=ship txt=cord]
^- [(list move) _+>]
?: =('\\' (end 3 1 txt)) :: escaped ctrl-key
(poke-kyev ost you [%ctrl ~ ~] (rsh 3 1 txt))
?^ act :: pipe to child
:_ +>.$
:- [ost %give %nice ~]
(spam /in/[u.act] %rush %txt txt)
|%
++ ve
|= [hid=hide ost=bone axle]
=* vat +<+>
=| mow=(list move)
|%
++ abet
^- [(list move) axle]
[(flop mow) vat]
::
=- :_ con
%+ welp (stash:con ost you txt)
?~ tak
mof
%+ welp
(print:con ost you tak ~)
[[ost %give %nice ~] mof]
^- [con=_+>.$ tak=$|(~ tank) mof=(list move)]
=+ pas=((full ~(parse from pax lat.hid)) [1 1] (trip txt))
?~ q.pas
[+>.$ leaf/"<syntax error at {<`[@ @]`p.pas>}>" ~]
=+ com=(wonk pas)
^- [con=_+>.$ tak=$|(~ tank) mof=(list move)]
?- -.com
%path
=. pax p.com
[+>.$ leaf/"=% {(spud p.com)}" ~]
++ blab
|= mof=(list move)
+>.$(mow (welp mof mow))
::
?(%ins %mut %del)
:- +>.$
=+ paf=[.(&3 '=')]:?+(-.com p.com %del p.com)
=- :- palm/[" " ~ ~ ~]^~[leaf/msg (dank:ut paf)]
(turn (drop tor) |=(a=toro [ost %pass writ/paf %c %info our.hid a]))
^- [msg=tape tor=(unit toro)]
|-
?- -.com
%ins
?^ (file p.com) ["! exists" ~]
["written" `(foal p.com q:(exec (fall q.com [%bczp atom/%t])))]
%mut
?~ (file p.com) $(com [%del p.com])
["changed" `(foal p.com q:(exec q.com))]
%del
?~ (file p.com) ["! none" ~]
["written" `(fray p.com)]
++ chew-file
|= [paf=path msg=tape tor=(unit toro)]
^- (list move)
%+ welp
(print palm/[" " ~ ~ ~]^~[leaf/msg (dank:ut paf)])
%+ turn (drop tor)
|=(a=toro [ost %pass writ/paf %c %info our.hid a])
::
++ cubs :: tasks with open /in
%- sort :_ |=([a=span b=span] (lth (slav %ud a) (slav %ud b)))
^- (list span)
%+ murn (~(tap by sup.hid))
|= [@ @ a=path]
?. ?& ?=([%in cord ~] a)
(~(has by cub.hid) i.t.a)
!(~(has by pop) i.t.a)
==
~
(some i.t.a)
::
++ eat
|= [you=ship com=coma]
?- -.com
%comt +>.$
%del (eat-del +.com)
%end (eat-end +.com)
%hoon (eat-hoon +.com)
%ins (eat-ins +.com)
%mut (eat-mut +.com)
%path (eat-path +.com)
%run (eat-run you +.com)
%rvar (eat-rvar +.com)
%var (eat-var +.com)
==
::
%run
=+ mof=(print ost you leaf/"+ :{(trip p.q.com)}" ~)
++ eat-del
|= paf=path
^+ +>
=. &3.paf '='
%- blab
%+ chew-file paf
?^ (file paf) ["! none" ~]
["deleted" `(fray paf)]
::
++ eat-end :: XX clean up state
|= poc=(each ,@u cord)
^+ +>
?- -.poc
%&
=+ cil=(scot %ud p.poc)
=+ cin=(trip (~(got by cub.hid) cil))
%+ blab
[ost %pass /child/[cil]/fork %g %cide cil]
(print leaf/"- :{cin}({(trip cil)})")
::
%|
=+ ^- moz=(list move)
%+ murn (~(tap by cub.hid))
|= [a=span b=term]
?. =(b p.poc) ~
%- some
[ost %pass /child/[a]/fork %g %cide a]
%- blab %+ welp moz
(print leaf/"-{<(lent moz)>} :{(trip p.poc)}")
==
::
++ eat-hoon
|= gen=twig
^+ +>
(blab (print (sell (exec gen))))
::
++ eat-ins
|= [paf=path gen=(unit twig)]
^+ +>
=. &3.paf '='
%- blab
%+ chew-file paf
?^ (file paf) ["! exists" ~]
:- "written"
`(foal paf q:(exec (fall gen [%bczp atom/%t])))
::
++ eat-mut
|= [paf=path gen=twig]
^+ +>
=. &3.paf '='
%- blab
%+ chew-file paf
?^ (file paf) ["! none" ~]
["changed" `(foal paf q:(exec gen))]
::
++ eat-path
|= paf=path
^+ +>
=. pax paf
(blab (print leaf/"=% {(spud paf)}"))
::
++ eat-run
|= [you=ship mud=(list mand) mad=mand]
^+ +>
:: =. +>.$ (blab (print leaf/"+ :{(trip p.mad)}"))
=| inp=(unit span)
=< [+>.$ ~ mof]
=< +>.$
%+ reel
`(list mand)`(welp p.com q.com ~)
`(list mand)`(welp mud mad ~)
=+ a=[app=*mand .]
|.
=> a
=+ cil=(scot %ud pid)
::~& [%pipsqueak <inp> <app>]
%_ +>
%_ +>
pid +(pid)
pip ?~ inp pip (~(put by pip) cil u.inp)
pop ?~ inp pop (~(put by pop) u.inp cil)
inp `cil
mof
mow
=+ yon=[our.hid cil imp.hid]
=+ mez=[(cat 3 p.app '-args') (exec [%clsg q.app])]
=- (weld (flop -) mof) :: XX strange order
%- welp :_ mow
^- (list move)
:~ [ost %pass /child/[cil] %g %sire p.app cil]
:~ [ost %pass /child/[cil]/fork %g %sire p.app cil]
[ost %pass /child/[cil]/out %g %show yon you /out]
[ost %pass /child/[cil]/main %g %meta !>([%mess yon you mez])]
==
==
::
%end
?: ?=(%& -.p.com)
=+ cil=(scot %ud p.p.com)
=+ cin=(trip (~(got by cub.hid) cil))
:- +>.$ :- ~
:_ (print ost you leaf/"- :{cin}({(trip cil)})" ~)
[ost %pass /child/[cil] %g %cide cil]
=* cil p.p.com
=- [+>.$ leaf/"-{<(lent moz)>} :{(trip cil)}" moz]
^= moz
%+ murn (~(tap by cub.hid)) |= [a=span b=term]
?. =(b cil) ~
%- some
[ost %pass /child/[a] %g %cide a]
++ eat-rvar
|= vor=term
^+ +>
=+ mod=(~(has by var) vor)
=. var (~(del by var) vor)
(blab (print leaf/"{?:(mod "var gone" "no var")} {<vor>}"))
::
%var
=+ old=(~(get by var) p.com)
=+ new=(exec q.com)
++ eat-var
|= [vor=term gen=twig]
^+ +>
=+ old=(~(get by var) vor)
=+ new=(exec gen)
=+ mod=?~(old "new var" ?:(=(new u.old) "same var" "changed"))
=. var (~(put by var) p.com new)
[+>.$ leaf/"{mod} {<p.com>}" ~]
=. var (~(put by var) vor new)
(blab (print leaf/"{mod} {<vor>}"))
::
%rvar
=+ mod=(~(has by var) p.com)
=. var (~(del by var) p.com)
[+>.$ leaf/"{?:(mod "var gone" "no var")} {<p.com>}" ~]
++ exec
|= gen=twig
%- slap :_ gen
%+ roll (~(tap by var))
=< .(q pit)
|= [[n=term v=vase] q=vase]
(slop [[%face n p.v] q.v] q)
::
%hoon
[+>.$ (sell (exec p.com)) ~]
++ next-act :: rotate active task
=+ opt=[i=`(unit span)`~ t=(turn cubs |=(a=span `(unit span)`[~ a]))]
|-
?~ t.opt ~
?: =(act i.opt)
i.t.opt
$(opt t.opt)
::
%comt
[+>.$ ~ ~]
==
++ peer
|= [you=ship gal=glas]
^+ +>
?@ gal
%_ +>.$
mow :_(mow [ost %give %rush %term-line prompt ~ ~])
==
?. (~(has by cub.hid) p.gal) +>.$
?: (~(has by pop) p.gal) +>.$
=. act `p.gal
(blab ping)
::
++ ping (print-vase !>(*(list tank)))
++ poke-kyev
|= [you=ship key=kyev]
^+ +>
?: ?=([~ @] key) (poke-txt you q.key) :: simple keypress ?
?> ?=([[%ctrl ~ ~] @t] key)
?+ q.key
%+ blab
[ost %give %nice ~]
(print leaf/"no command \\{(trip q.key)}")
%x =. act next-act
(blab [ost %give %nice ~] ping)
%l =+ =- tak=rose/[" " "[" "]"]^(turn cubs -)
|= a=span
leaf/(trip (rap 3 (~(got by cub.hid) a) '(' a ')' ~))
(blab [ost give/nice/~] (print tak))
==
::
++ poke-txt :: handle command
|= [you=ship txt=cord]
^+ +>
?: =('\\' (end 3 1 txt)) :: escaped ctrl-key
(poke-kyev you [%ctrl ~ ~] (rsh 3 1 txt))
?^ act :: pipe to child
%+ blab
[ost %give %nice ~]
(spam /in/[u.act] %rush %txt txt)
=+ pas=((full ~(parse from pax lat.hid)) [1 1] (trip txt))
?~ q.pas
(blab (print leaf/"<syntax error at {<`[@ @]`p.pas>}>"))
=+ com=(wonk pas)
=> .(+>.$ (eat you com))
=. +>.$ (blab (stash txt))
+>.$(mow :_(mow [ost %give %nice ~]))
::
++ print |=(a=tank (print-vase !>(`(list tank)`[a ~])))
++ print-vase
|= tan=vase :: [p=p:!>(*(list tank)) q=*]
^- (list move)
%^ spam /out %meta
:(slop !>(%rush) !>(%term-line) !>(prompt) !>(~) tan)
::
++ prompt
^- [cord prom]
?^ act
=+ por=(~(get by pot) u.act)
?^ por u.por
[(rap 3 (~(got by cub.hid) u.act) '(' u.act ') ' ~) %text]
:_ %text
?. &(?=([@ @ @ *] pax) =('0' &3.pax))
(rsh 3 1 (spat pax))
(rap 3 &1.pax '/' &2.pax '=' ?~(|3.pax ~['> '] ~[(spat |3.pax) '> ']))
::
++ purr
|= [cil=span fom=?(%fork %out %main) typ=type sih=sign]
^+ +>
?< ?=(?(%sage %verb %veer %vega) +<.sih)
?- fom
%fork
?> ?=(%gone +<.sih)
%_ +>.$
mow :_(mow [ost %give %nice ~])
act ?:(=(act [~ cil]) ~ act)
==
::
%main
?> ?=(?(%nice %mean) +<.sih)
(blab [ost %give +.sih] ping)
::
%out
?. ?=(?(%rust %rush) +<.sih) +>.$
?: ?=(%prompt p.sih)
?: (~(has by pip) cil) +>.$
=. pot (~(put by pot) cil (,[cord prom] q.sih))
(blab ping)
%- blab
?: (~(has by pip) cil)
(spam /in/(~(got by pip) cil) %meta (slot 3 typ sih))
%- print-vase
?+ p.sih
!>([(sell (slot 15 [typ sih]))]~)
%tang (slot 15 [typ sih])
%txt
?^ q.sih !! :: move to vase space?
!>([leaf/(trip q.sih)]~)
==
==
::
++ spam
|= [pax=path gip=gift]
^- (list move)
%+ turn
(~(tap in (~(get ju pus.hid) pax)))
|=(a=bone [a %give gip])
::
++ stash
|= a=cord
%^ spam /out %meta
!>([%rush %term-line `term-line`[prompt [a]~ ~]])
--
--
!:
:::: formal interface
::
|_ [hid=hide vat=axle]
::
++ peer :: handle subscription
|= [ost=bone you=ship pax=path]
^- [(list move) _+>]
?~ pax `+>.$
?. ?=(?(%in %out) i.pax) `+>.$
=+ ^= gal
?: ?=(%out i.pax) %out
[%in ?<(?=(~ t.pax) i.t.pax)]
=+ abet:(peer:(ve hid ost vat) you gal)
[-< +>.$(vat ->)]
::
++ poke-kyev :: handle key event
|= [ost=bone you=ship key=kyev]
^- [(list move) _+>]
=+ abet:(poke-kyev:(ve hid ost vat) you key)
[-< +>.$(vat ->)]
::
++ poke-txt :: handle command
|= [ost=bone you=ship txt=cord]
^- [(list move) _+>]
=+ abet:(poke-txt:(ve hid ost vat) you txt)
[-< +>.$(vat ->)]
::
++ purr
|= [ost=bone pax=path typ=type sih=sign]
^- [(list move) _+>]
::~& shel-purr/pax
:: ~& [%shell-pour -.sih (,@ta +<.sih)]
::=+ sih=((hard sign) sih)
?: ?=(%sage +<.sih) :: vomit
[[ost %give +.sih]~ +>.$]
?: ?=(%verb +<.sih) :: vomit
[[ost %give +.sih]~ +>.$]
?: ?=(%veer +<.sih) :: vomit
[[ost %give +.sih]~ +>.$]
?: ?=(%vega +<.sih) :: vomit
[[ost %give +.sih]~ +>.$]
?~ pax ~& %no-path !!
?+ &1.pax ~& %strange-path !!
%print
`+>.$
::
%child
?~ |1.pax ~& %no-child !!
?~ |2.pax
?> ?=(%gone +<.sih)
:- [ost %give %nice ~]~
+>.$(act ?:(=(act [~ &2.pax]) ~ act))
:_ +>.$
?+ &3.pax ~& %strange-child-path !!
%main
?> ?=(?(%nice %mean) +<.sih)
:- [ost %give +.sih]
::~& act
(print ost our.hid ~)
%out
?. ?=(?(%rust %rush) +<.sih) ~
?: (~(has by pip) &2.pax)
:: ~& [%yay &2.pax <pip> <pop>]
:: ~& [%spamming-to /in/(~(got by pip) &2.pax) (~(get ju pus.hid) /in/(~(got by pip) &2.pax))]
(spam /in/(~(got by pip) &2.pax) %meta (slot 3 typ sih))
:: ~& [%nay &2.pax <pip> <pop>]
%^ print-vase ost our.hid
?+ p.sih
!>([(sell (slot 15 [typ sih]))]~)
%tang
(slot 15 [typ sih])
%txt
?^ q.sih !! :: move to vase space?
!>([leaf/(trip q.sih)]~)
==
== ==
::
++ stash
|= [a=bone b=ship c=cord]
::~& shel-stash/[prompt c]
%^ spam /out %meta
!>([%rush %term-line `term-line`[prompt [c]~ ~]])
::
++ print |=([a=bone b=ship c=(list tank)] (print-vase a b !>(c)))
++ print-vase
|= [ost=bone you=ship tan=vase] :: [p=p:!>(*(list tank)) q=*]
^- (list move)
::~& shel-print/prompt
%^ spam /out %meta
:(slop !>(%rush) !>(%term-line) !>(prompt) !>(~) tan)
::
++ prompt
^- @t
?^ act
(rap 3 (~(got by cub.hid) u.act) '(' u.act ') ' ~)
?. &(?=([@ @ @ *] pax) =('0' &3.pax))
(rsh 3 1 (spat pax))
(rap 3 &1.pax '/' &2.pax '=' ?~(|3.pax ~ [(spat |3.pax)]~))
++ exec
|= gen=twig
%- slap :_ gen
%+ roll (~(tap by var))
=< .(q pit)
|= [[n=term v=vase] q=vase]
(slop [[%face n p.v] q.v] q)
::
++ spam
|= [pax=path gip=gift]
^- (list move)
%+ turn
(~(tap in (~(get ju pus.hid) pax)))
|=(a=bone [a %give gip])
?> ?=([%child span ?(%fork %out %main) ~] pax)
=+ abet:(purr:(ve hid ost vat) i.t.pax i.t.t.pax typ sih)
[-< +>.$(vat ->)]
--

View File

@ -17,10 +17,10 @@
[%g %gall]
[%f %ford]
[%a %ames]
[%b %batz]
[%c %clay]
[%d %dill]
[%e %eyre]
[%t %time]
==
|- ^+ all
?~ vay all
@ -31,19 +31,21 @@
=+ gat=.*(all .*(all [0 42]))
=+ nex=+:.*([-.gat [sam +>.gat]] -.gat)
$(vay t.vay, all nex)
:_ ~ :_ ~
~& %solid-jamming
=+ pac=(jam [ken all])
~& %solid-finished
=+ nax=/(scot %p our.hid)/try/(scot %da lat.hid)/urbit/pill
:* [ost %pass /cp %c %info our.hid (foal nax pac)]
:~ [ost %give %sage [%urbit %pill ~] [ken all]]
[ost %give %nice ~]
%+ turn (~(tap by sup.hid))
|= [ost=bone *]
:^ ost %give %rush
:- %tang :_ ~
leaf/"done"
==
:: ~& %solid-jamming
:: =+ pac=(jam [ken all])
:: ~& %solid-finished
:: =+ nax=/(scot %p our.hid)/try/(scot %da lat.hid)/urbit/pill
:: :* [ost %pass /cp %c %info our.hid (foal nax pac)]
:: [ost %give %nice ~]
:: %+ turn (~(tap by sup.hid))
:: |= [ost=bone *]
:: :^ ost %give %rush
:: :- %tang :_ ~
:: leaf/"done"
:: ==
++ peer
|=
*

18
main/app/sync/core.hook Normal file
View File

@ -0,0 +1,18 @@
!:
|_ [hid=hide ~]
++ poke-sync-args
|= [ost=bone you=ship syd=@tas her=@p sud=@tas ~]
:_ +>.$
:* [ost %pass /sync %c %font our.hid syd her sud]
[ost %give %nice ~]
%+ turn (~(tap by sup.hid))
|= [ost=bone *]
:^ ost %give %rush
:- %tang :_ ~
leaf/"synced"
==
++ peer
|=
*
`+>
--

View File

@ -3,7 +3,7 @@
:::: /hook/core/terminal/app
::
/? 314 :: need urbit 314
/- term-line, kyev
/- term-line, term-in, term-ctrl, kyev
/= stat /:/%%/:/hymn/
::
:::: structures
@ -15,24 +15,30 @@
++ gilt ::
$% [%term-line p=term-line] ::
[%hymn p=manx] ::
[%json p=json] ::
== ::
++ gift ::
$% [%rush gilt] ::
[%rust gilt] ::
[%mean p=ares] ::
[%nice ~] ::
[%sage p=path q=*] ::
[%verb ~] ::
[%veer p=@ta q=path r=@t] ::
[%vega p=path] ::
== ::
++ glas ?(%term %lines) ::
++ hapt ,[p=ship q=path] ::
++ mess ::
$% [%txt p=(hypo cord)] ::
[%kyev p=(hypo kyev)] ::
== ::
++ move ,[p=bone q=(mold note gift)] ::
++ note ::
$% $: %g ::
$% [%cide p=span] ::
[%show p=hapt q=ship r=path] ::
[%sire p=term q=span] ::
[%mess p=hapt q=ship r=[?(%txt %kyev) vase]] ::
[%mess p=hapt q=ship r=mess] ::
== == == ::
++ sign ::
$% $: %g ::
@ -41,14 +47,17 @@
[%nice ~] ::
[%rust p=%term-line q=term-line] ::
[%rush p=%term-line q=term-line] ::
[%sage p=path q=*] ::
[%verb ~] ::
[%veer p=@ta q=path r=@t] ::
[%vega p=path] ::
== == ==
--
::
!:
:::: helpers
::
|%
++ aut %shell
++ encode
|= [a=term b=path] ^- span
(rap 3 a (turn b |=(c=span (cat 3 '_' c))))
@ -62,159 +71,184 @@
?~ t.a
man(c (weld c.man b))
man(c (turn c.man ^$(a t.a)))
::
++ start-shell
|= [our=ship imp=path ost=bone you=ship pax=path]
^- (list move)
=+ auc=(encode aut pax)
:- [ost %pass [%fork pax] %g %sire [aut auc]]
[ost %pass [%resp pax] %g %show [our [auc imp]] you /out]~
--
!:
:::: program
:::: per shell
::
|%
++ se
|= [hid=hide ost=bone you=ship hiz=(map path term-line) pax=path]
=+ tel=(fall (~(get by hiz) pax) *term-line)
=+ auc=(encode aut pax)
=^ mow tel
?: (~(has by cub.hid) auc)
[~ tel]
:- (start-shell our.hid imp.hid ost you pax)
tel(r :_(r.tel leaf/"+ {(trip aut)}"))
|%
++ abet
^- [(list move) (map path term-line)]
[(flop mow) (~(put by hiz) pax tel)]
::
++ page
%. stat
%+ inject
~[%html %head]
;= ;script: urb.appl = "{(trip app.hid)}"
;script: urb.term = \{pax: "{(spud pax)}"}
==
::
++ peer
|= gal=glas
%_ +>.$
mow
:_ mow
?- gal
%term [ost %give %rust %hymn page] :: hymn front end
%lines [ost %give %rust %term-line tel] :: term-line output
==
==
::
++ poke
|= jof=$%([%line p=span] [%res p=span] [%cmd p=char])
^+ +>
?- -.jof
%res :: restart shell
=. +>.$
?. (~(has by cub.hid) auc) +>.$
%_ +>.$
mow :_(mow [ost %pass [%fork pax] %g %cide auc])
r.tel :_(r.tel leaf/"- {(trip aut)}")
==
%_ +>.$
r.tel :_(r.tel leaf/"+ {(trip auc)}")
mow
;: welp
(spam tel)
[ost %give %nice ~]~
(start-shell our.hid imp.hid ost you pax)
mow
==
==
::
%line :: command entered
=. r.tel
:_ r.tel
stem/[leaf/(trip p.p.tel) leaf/(trip p.jof)]
?: =('\\' (end 3 1 p.jof))
$(jof [%cmd (rsh 3 1 p.jof)])
(send %txt -:!>(*cord) p.jof)
::
%cmd :: key command
?+ p.jof
(send %kyev -:!>(*kyev) [[%ctrl ~ ~] p.jof])
%r $(jof [%res 'shell'])
==
==
::
++ poke-ctrl
.(mow :_(mow [ost %give %rush %term-line [p q ~]:tel]))
::
++ pour
|= [dis=?(%fork %resp %txt %kyev) sih=sign]
^+ +>
?- dis
%fork ?>(?=(%gone +<.sih) +>.$) :: XX maybe mean?
%resp
?+ +<.sih !!
%nice +>.$
?(%rust %rush)
=. p.q.sih ?^(q.q.sih p.tel p.q.sih) :: XX prompt hack
%_ +>.$
mow (welp (spam q.sih) mow)
tel [p.q.sih (weld q.q.sih q.tel) (weld r.q.sih r.tel)]
==
==
::
?(%txt %kyev)
?+ +<.sih !!
%nice +>.$(mow :_(mow [ost %give +.sih]))
%mean
=+ ^= new
=- (turn - |=(a=tank rose/[~ "! " ~]^[a]~))
^- (list tank)
?~ p.sih ~
(welp q.u.p.sih leaf/(trip p.u.p.sih) ~)
%_ +>.$
r.tel (welp new r.tel)
mow
%- welp :_ mow
[[ost %give +.sih] (spam [p.tel q.tel new])]
==
==
==
::
++ send
|= mez=mess
%_ +>.$
mow
%- welp :_ mow
^- (list move)
%+ murn (~(tap by cub.hid))
|= [p=span q=term]
?. =(pax q:(decode p)) ~
%- some ^- move
:^ ost %pass [-.mez pax]
[%g %mess [our.hid p imp.hid] you mez]
==
::
++ spam
|= tol=term-line
^- (list move)
%+ murn
(~(tap by sup.hid))
|= [ost=bone @ paf=path]
?: =([%lines pax] paf)
(some ost %give %rush %term-line tol)
~
--
--
!:
:::: formal interface
::
|_ [hid=hide axle]
++ page
|= pax=path
%. stat
%+ inject
~[%html %head]
;= ;script: urb.appl = "{(trip app.hid)}"
;script: urb.term = \{pax: "{(spud pax)}"}
==
::
++ peer
|= [ost=bone you=ship pax=path]
^- [(list move) _+>]
?~ pax
$(pax /term)
?+ -.pax !!
%lines
:_ +>.$
:_ ~
(jell ost t.pax)
%term
=+ tel=(fall (~(get by hiz) t.pax) *term-line)
=^ mof r.tel
=+ aut=%shell
=+ auc=(encode aut t.pax)
?: (~(has by cub.hid) auc)
[~ r.tel]
:_ :_(r.tel leaf/"+ {(trip aut)}")
:_ [ost %pass [%hi auc mar/[t.pax]] %g %sire [aut auc]]~
:^ ost %pass [%hi auc in/[t.pax]]
:+ %g %show
[[our.hid [auc imp.hid]] you /out]
=. hiz (~(put by hiz) t.pax tel)
:_ +>.$
[[ost %give %rust %hymn (page t.pax)] mof]
==
?. ?=(glas i.pax)
[[ost %give %mean ~ %bad-path ~]~ +>.$]
=+ abet:(peer:(se hid ost you hiz t.pax) i.pax)
[-< +>.$(hiz ->)]
::
++ poke-json
|= [ost=bone you=ship jon=json]
++ poke-term-in
|= [ost=bone you=ship term-in]
^- [(list move) _+>]
::~& tem-poke/jon
=+ ^- [pax=path jof=$%([%line p=span] [%res p=span] [%cmd p=char])]
%- need
%. jon => jo
%^ ot
pax/(su ;~(pfix fas (more fas sym)))
act/(of line/so res/so cmd/so ~)
~
|-
=+ tel=(fall (~(get by hiz) pax) *term-line)
?- -.jof
%res
=+ joc=(encode p.jof pax)
=^ mof r.tel
?. (~(has by cub.hid) joc)
[~ r.tel]
:_ :_(r.tel leaf/"- {(trip p.jof)}")
[ost %pass [%hi joc mar/pax] %g %cide joc]~
::~& poke-sire/[jof cub.hid]
=. r.tel :_(r.tel leaf/"+ {(trip joc)}")
=. hiz (~(put by hiz) pax tel)
:_ +>.^$
%+ welp mof
:^ [ost %give %nice ~]
:^ ost %pass [%hi joc in/[pax]]
:^ %g %show [our.hid joc imp.hid]
:- you /out
[ost %pass [%hi joc mar/pax] %g %sire [p.jof joc]]
(spam pax)
::
%line
=. r.tel :_(r.tel rose/["> " ~ ~]^~[leaf/(trip p.tel) leaf/(trip p.jof)])
=. hiz (~(put by hiz) pax tel)
?: =('\\' (end 3 1 p.jof))
$(jof [%cmd (rsh 3 1 p.jof)])
:_ +>.^$
(send ost you pax %txt !>(p.jof))
%cmd
?+ p.jof :_(+>.^$ (send ost you pax %kyev !>(`kyev`[[%ctrl ~ ~] p.jof])))
%r $(jof [%res 'shell'])
==
==
++ send
|= [ost=bone you=ship pax=path mez=[?(%txt %kyev) vase]]
%+ murn (~(tap by cub.hid))
|= [p=span q=term]
?. =(pax q:(decode p)) ~
%- some ^- move
:^ ost %pass [-.mez p (scot %da lat.hid) pax]
[%g %mess [our.hid p imp.hid] you mez]
=+ abet:(poke:(se hid ost you hiz pax) jof)
[-< +>.$(hiz ->)]
::
++ jell
|= [a=bone b=path]
[a %give %rust %json (tel-to-jon (fall (~(get by hiz) b) *term-line))]
::
++ spam
|= pax=path
::~& tem-spam/(~(run by hiz) |=(term-line p))
%+ murn
(~(tap by sup.hid))
|= [ost=bone @ paf=path]
?. =([%lines pax] paf) ~
(some (jell ost pax))
++ poke-term-ctrl
|= [ost=bone you=ship col=term-ctrl]
^- [(list move) _+>]
=+ abet:poke-ctrl:(se hid ost you hiz /)
[-< +>.$(hiz ->)]
::
++ pour
|= [ost=bone pax=path sih=*]
^- [(list move) _+>]
=+ sih=((hard sign) sih)
?: ?=(?(%veer %vega) &2.sih) :: vomit
?: ?=(?(%sage %verb %veer %vega) &2.sih) :: vomit
[[ost %give +.sih]~ +>.$]
?: ?=(%gone &2.sih)
`+>.$
=* paf |3.pax
?: ?=([%hi @ %in *] pax)
?+ &2.sih !!
%nice `+>.$
?(%rust %rush)
=+ tol=(fall (~(get by hiz) paf) *term-line)
=. tol ?^ q.q.sih :: XX prompt hack
[p.tol (weld q.q.sih q.tol) (weld r.q.sih r.tol)]
[p.q.sih (weld q.q.sih q.tol) (weld r.q.sih r.tol)]
=. hiz (~(put by hiz) paf tol)
[(spam paf) +>.$]
==
=+ tel=(fall (~(get by hiz) paf) *term-line)
=+ old=tel
=. r.tel
?. ?=(%mean &2.sih) r.tel
%- welp :_ r.tel
=- (turn - |=(a=tank rose/[~ "! " ~]^[a]~))
^- (list tank)
?~ p.sih ~
(welp q.u.p.sih leaf/(trip p.u.p.sih) ~)
=. hiz (~(put by hiz) paf tel)
:_ +>.$
:- [ost %give +.sih]
::?: =(old tel) ~
(spam paf)
::
++ tel-to-jon
|= tel=term-line
%- jobe
:~ [%prompt %s p.tel]
[%history %a (turn q.tel |=(a=cord [%s a]))]
:+ %lines %a
%- zing ^- (list (list json))
%+ turn (flop r.tel) |= a=tank
?. ?=([%rose [[%'>' %' ' ~] ~ ~] [%leaf *] [%leaf *] ~] a)
(turn (wash 0^80 a) jape)
[(jobe prompt/(jape p.i.q.a) task/(jape p.i.t.q.a) ~)]~
==
?~ pax !!
?. ?=(?(%fork %resp %txt %kyev) i.pax) !!
=+ abet:(pour:(se hid ost our.hid hiz t.pax) i.pax sih)
[-< +>.$(hiz ->)]
--

View File

@ -1,7 +1,7 @@
function jpok(a,b){
var dat = {pax:urb.term.pax, act:{}}
dat.act[a] = b
urb.send({data:dat}, function(e,dat){
urb.send({data:dat,mark:"term-in"}, function(e,dat){
if(a === 'line' && dat.data.err){
hist.unshift(prom.val())
prom.val(b)
@ -81,19 +81,19 @@ $(function() {
if(urb.term.pax != "/") pax += urb.term.pax
urb.subscribe({path: pax}, function(e, dat){
if(dat.data.ok) return;
hist = dat.data.history
hist = dat.data.history.concat(hist)
hind = 0
cont.innerHTML = ''
// cont.innerHTML = ''
for(var i in dat.data.lines){
var lom = dat.data.lines[i]
if(typeof lom == 'string')
$(cont).append($('<div>').text(lom))
else {
$(cont).append($('<b>').text(lom.prompt + '> '),
$(cont).append($('<b>').text(lom.prompt),
$('<div class="prom">').text(lom.task))
}
}
window.scrollTo(0,document.body.scrollHeight)
prem.textContent = dat.data.prompt + '> '
prem.textContent = dat.data.prompt
})
});

33
main/app/ticket/core.hook Normal file
View File

@ -0,0 +1,33 @@
!:
|_ [hid=hide ~]
++ poke-ticket-args
|= [ost=bone you=ship her=@p num=?(~ [p=@ud ~])]
:_ +>.$
=+ n=?~(num 1 p.num)
=+ ^= sep ^- @
=+ mir=(clan her)
?+ mir ~|(%ticket-clan !!)
%king (bex 8)
%duke (bex 16)
%earl (bex 32)
==
:- [ost %give %nice ~]
|-
?: ?=(0 n) ~
=+ ^= tic
(,@p .^(%a (scot %p our.hid) %tick (scot %da lat.hid) (scot %p her) ~))
%+ welp
(spam ost "{<her>}: {<tic>}")
$(her (add sep her), n (dec n))
++ spam
|= [ost=bone msg=tape]
%+ turn (~(tap by sup.hid))
|= [ost=bone *]
:^ ost %give %rush
:- %tang :_ ~
leaf/msg
++ peer
|=
*
`+>
--

18
main/app/unsync/core.hook Normal file
View File

@ -0,0 +1,18 @@
!:
|_ [hid=hide ~]
++ poke-unsync-args
|= [ost=bone you=ship syd=@tas her=@p sud=@tas ~]
:_ +>.$
:* [ost %pass /sync %c %plug our.hid syd her sud]
[ost %give %nice ~]
%+ turn (~(tap by sup.hid))
|= [ost=bone *]
:^ ost %give %rush
:- %tang :_ ~
leaf/"unsynced"
==
++ peer
|=
*
`+>
--

13
main/app/verb/core.hook Normal file
View File

@ -0,0 +1,13 @@
!:
|_ [hid=hide ~]
++ poke-verb-args
|= [ost=bone you=ship ~]
:_ +>.$
:~ [ost %give %verb ~]
[ost %give %nice ~]
==
++ peer
|=
*
`+>
--

View File

@ -24,7 +24,6 @@
:~ [%$ %zuse]
[%f %ford]
[%a %ames]
[%b %batz]
[%c %clay]
[%d %dill]
[%e %eyre]

View File

@ -0,0 +1,15 @@
::
:::: /hoon/core/zing/pro
::
/? 314
/- begin-args
|_ arg=begin-args
::
++ grab :: convert from
|%
++ noun :: convert from %noun
|= src=*
^+ +>+
+>+(arg (begin-args src))
--
--

View File

@ -0,0 +1,15 @@
::
:::: /hoon/core/zing/pro
::
/? 314
/- sync-args
|_ arg=sync-args
::
++ grab :: convert from
|%
++ noun :: convert from %noun
|= src=*
^+ +>+
+>+(arg (sync-args src))
--
--

View File

@ -0,0 +1,21 @@
::
:::: /hook/door/term-in/mar
::
/? 314
/- term-in
!:
|_ term-in
::
++ grab :: convert from
|%
++ json
|= jon=^json
%- need
%. jon => jo
%^ ot
pax/(su ;~(pfix fas (more fas sym)))
act/(of line/so res/so cmd/so ~)
~
++ noun term-in :: clam from %noun
--
--

View File

@ -9,4 +9,19 @@
|%
++ noun term-line :: clam from %noun
--
::
++ grow
|%
++ json
%- jobe
:~ [%prompt %s p.p.tel]
[%history %a (turn q.tel |=(a=cord [%s a]))]
:+ %lines %a
%- zing ^- (list (list ^json))
%+ turn (flop r.tel) |= a=?(tank [%stem p=tank q=tank])
?. ?=(%stem -.a)
(turn (wash 0^80 a) jape)
[(jobe prompt/(jape ~(ram re p.a)) task/(jape ~(ram re q.a)) ~)]~
==
--
--

View File

@ -0,0 +1,15 @@
::
:::: /hoon/core/zing/pro
::
/? 314
/- ticket-args
|_ arg=ticket-args
::
++ grab :: convert from
|%
++ noun :: convert from %noun
|= src=*
^+ +>+
+>+(arg (ticket-args src))
--
--

View File

@ -0,0 +1,15 @@
::
:::: /hoon/core/zing/pro
::
/? 314
/- unsync-args
|_ arg=unsync-args
::
++ grab :: convert from
|%
++ noun :: convert from %noun
|= src=*
^+ +>+
+>+(arg (unsync-args src))
--
--

View File

@ -0,0 +1,15 @@
::
:::: /hoon/core/zing/pro
::
/? 314
/- verb-args
|_ arg=verb-args
::
++ grab :: convert from
|%
++ noun :: convert from %noun
|= src=*
^+ +>+
+>+(arg (verb-args src))
--
--

11
main/mar/will/door.hook Normal file
View File

@ -0,0 +1,11 @@
::
:::: /hook/door/will/mar
::
/? 314
|_ wyl=will
::
++ grab :: convert from
|%
++ noun will :: clam from %noun
--
--

View File

@ -0,0 +1 @@
,[mov=(mold) ~]

View File

@ -0,0 +1 @@
(list)

View File

@ -0,0 +1 @@
,[syd=@tas her=@p sud=@tas ~]

View File

@ -0,0 +1 @@
,%hail

View File

@ -0,0 +1 @@
,[pax=path jof=$%([%line p=span] [%res p=span] [%cmd p=char])]

View File

@ -1 +1 @@
,[p=cord q=(list cord) r=(list tank)]
,[p=[p=cord q=prom] q=(list cord) r=(list ?(tank [%stem p=tank q=tank]))]

View File

@ -0,0 +1 @@
,[her=@p num=?(~ [p=@ud ~])]

View File

@ -0,0 +1 @@
,[syd=@tas her=@p sud=@tas ~]

View File

@ -0,0 +1 @@
,[~]