Merge branch 'master' into clayhammer

This commit is contained in:
Philip C Monk 2015-09-15 19:16:09 -04:00
commit 852bd5a202
60 changed files with 345 additions and 225 deletions

View File

@ -10,7 +10,7 @@
!: :: :: !: :: ::
=> |% :: external structures => |% :: external structures
++ house :: all state ++ house :: all state
$: %1 $: %2
hoc=(map bone session) :: conversations hoc=(map bone session) :: conversations
== :: == ::
++ session :: per conversation ++ session :: per conversation
@ -27,6 +27,7 @@
[%pill p=path q=dojo-source] :: noun to unix pill [%pill p=path q=dojo-source] :: noun to unix pill
:: [%tree p=path q=dojo-source] :: noun to unix tree :: [%tree p=path q=dojo-source] :: noun to unix tree
[%file p=beam q=dojo-source] :: save to clay [%file p=beam q=dojo-source] :: save to clay
[%http p=?(%post %put) q=purl r=dojo-source] :: http outbound
[%poke p=goal q=dojo-source] :: make and poke [%poke p=goal q=dojo-source] :: make and poke
[%show p=dojo-source] :: print [%show p=dojo-source] :: print
[%verb p=term q=(unit dojo-source)] :: store variable [%verb p=term q=(unit dojo-source)] :: store variable
@ -36,20 +37,14 @@
q=dojo-build :: general build q=dojo-build :: general build
== :: == ::
++ dojo-build :: one ford step ++ dojo-build :: one ford step
$% [%ec p=mark q=twig] :: caged expression $% [%ur p=purl] :: http GET request
[%ex p=twig] :: hoon expression
[%di p=dojo-model] :: dialog
[%dv p=path] :: gate from source
[%fi p=dojo-filter q=dojo-source] :: filter
[%ge p=dojo-model] :: generator [%ge p=dojo-model] :: generator
[%sc p=dojo-model] :: script [%dv p=path] :: core from source
[%ex p=twig] :: hoon expression
[%as p=mark q=dojo-source] :: simple transmute
[%do p=twig q=dojo-source] :: gate apply
[%tu p=(list dojo-source)] :: tuple [%tu p=(list dojo-source)] :: tuple
[%ur p=purl] :: http GET request
== :: == ::
++ dojo-filter :: pipeline filter
$| mark :: simple transmute
twig :: function gate
::
++ dojo-model :: data construction ++ dojo-model :: data construction
$: p=dojo-server :: core source $: p=dojo-server :: core source
q=dojo-config :: configuration q=dojo-config :: configuration
@ -76,7 +71,7 @@
++ goal ,[p=ship q=term] :: flat application ++ goal ,[p=ship q=term] :: flat application
++ clap :: action, user ++ clap :: action, user
$% [%peer p=path] :: subscribe $% [%peer p=path] :: subscribe
[%poke p=term q=*] :: apply [%poke p=(cask)] :: apply
[%pull ~] :: unsubscribe [%pull ~] :: unsubscribe
== :: == ::
++ club :: action, system ++ club :: action, system
@ -87,7 +82,7 @@
++ card :: general card ++ card :: general card
$% [%diff %sole-effect sole-effect] :: $% [%diff %sole-effect sole-effect] ::
[%send wire [ship term] clap] :: [%send wire [ship term] clap] ::
[%hiss wire mark [%purl purl]] :: [%hiss wire mark [%hiss hiss]] ::
[%exec wire @p (unit ,[beak silk])] :: [%exec wire @p (unit ,[beak silk])] ::
[%deal wire sock term club] :: [%deal wire sock term club] ::
[%info wire @p toro] :: [%info wire @p toro] ::
@ -108,67 +103,44 @@
|_ [[ost=bone moz=(list move)] session] :: |_ [[ost=bone moz=(list move)] session] ::
++ dp :: dojo parser ++ dp :: dojo parser
|% |%
++ dp-default-app %hood
++ dp-specify
|= [gol=goal mod=dojo-model]
^- (pair goal dojo-source)
[gol [0 [%ge mod(q.p [q.gol q.p.mod])]]]
::
++ dp-command-line ;~(sfix dp-command (just '\0a')) ++ dp-command-line ;~(sfix dp-command (just '\0a'))
++ dp-command :: ++dojo-command ++ dp-command :: ++dojo-command
%+ knee *dojo-command |. ~+ %+ knee *dojo-command |. ~+
;~ pose ;~ pose
;~ pfix bar ;~ plug (cold %poke bar)
%+ cook %+ cook dp-specify
|= [a=path b=dojo-config] (stag [our.hid dp-default-app] dp-model)
^- dojo-command
[%poke [our.hid %hood] [0 %ge [0 [%cat %hood a]] b]]
;~(plug (most fas sym) dp-config)
== ==
:: ::
;~ plug (cold %poke col) ;~ plug (cold %poke col)
%+ cook %+ cook
|= [a=goal b=(each dojo-source (trel term path dojo-config))] |= [a=goal b=$&(dojo-model dojo-source)]
^- (pair goal dojo-source) ^- (pair goal dojo-source)
:- a ?@ -.b [a b]
?- -.b (dp-specify a b)
%& p.b
%| ?+ p.p.b !!
%di [0 %di [0 [%dog q.a q.p.b]] r.p.b]
%ge [0 %ge [0 [%cat q.a q.p.b]] r.p.b]
%sc [0 %sc [0 [%pig q.a q.p.b]] r.p.b]
==
==
;~ plug ;~ plug
dp-goal dp-goal
%+ pick ;~(pfix ace dp-source) ;~ pose
;~ plug ;~(pfix bar dp-model)
;~ pose ;~(pfix ace dp-source)
(cold %di wut)
(cold %ge lus)
(cold %sc pam)
==
(most fas sym)
dp-config
== ==
== ==
== ==
:: ::
;~ plug (cold %verb tis) ;~(plug (cold %file tar) dp-beam ;~(pfix ace dp-source))
;~(plug sym (punt ;~(pfix ace dp-source))) ;~(plug (cold %flat pat) (most fas sym) ;~(pfix ace dp-source))
== ;~(plug (cold %pill dot) (most fas sym) ;~(pfix ace dp-source))
:: ;~(plug (cold %http lus) (easy %post) auri:epur ;~(pfix ace dp-source))
;~ pfix fas ;~(plug (cold %http hep) (easy %put) auri:epur ;~(pfix ace dp-source))
%+ cook ;~(plug (cold %verb tis) sym (punt ;~(pfix ace dp-source)))
|=(a=(list twig) `dojo-command`[%verb %dir ~ [0 %ex %clsg a]]) =< ;~(plug (cold %verb fas) (cook . dp-poor))
dp-poor |=(a=(list twig) [%dir ~ [0 %ex %clsg a]])
==
::
;~ plug (cold %file tar)
;~((glue ace) dp-beam dp-source)
==
::
;~ plug (cold %flat pat)
;~((glue ace) (most fas sym) dp-source)
==
::
;~ plug (cold %pill dot)
;~((glue ace) (most fas sym) dp-source)
==
:: ::
(stag %show dp-source) (stag %show dp-source)
== ==
@ -176,38 +148,33 @@
++ dp-build :: ++dojo-build ++ dp-build :: ++dojo-build
%+ knee *dojo-build |. ~+ %+ knee *dojo-build |. ~+
;~ pose ;~ pose
;~(pfix lus ;~(pose (stag %ur auri:epur) (stag %ge dp-model-cat))) ;~(plug (cold %ur lus) auri:epur)
;~(plug (cold %di wut) dp-model-dog) ;~(plug (cold %ge lus) dp-model)
;~(plug (cold %fi cab) ;~((glue ace) dp-filter dp-source)) ;~(plug (cold %as pam) sym ;~(pfix ace dp-source))
;~(plug (cold %do cab) dp-twig ;~(pfix ace dp-source))
dp-value dp-value
== ==
:: ::
++ dp-filter ;~(pose ;~(sfix sym cab) dp-twig) :: ++dojo-filter
++ dp-goal :: ++goal ++ dp-goal :: ++goal
%+ cook |=(a=goal a) %+ cook |=(a=goal a)
;~ pose ;~ pose
;~ plug ;~ plug
;~(pfix sig fed:ag) ;~(pfix sig fed:ag)
;~(pfix fas sym) ;~(pose ;~(pfix fas sym) (easy dp-default-app))
== ==
(cook |=(a=term `goal`[our.hid a]) sym) %+ stag our.hid
(easy [our.hid %hood]) ;~(pose sym (easy dp-default-app))
== ==
++ dp-beam :: ++beam ++ dp-beam :: ++beam
%+ sear tome %+ sear tome
=+ vez=(vang & dp-path) =+ vez=(vang & dp-path)
(sear plex:vez (stag %clsg poor:vez)) (sear plex:vez (stag %clsg poor:vez))
:: ::
++ dp-model-cat ;~(plug dp-server-cat dp-config) :: ++dojo-model ++ dp-model ;~(plug dp-server dp-config) :: ++dojo-model
++ dp-model-dog ;~(plug dp-server-dog dp-config) :: ++dojo-model ++ dp-path (tope he-beam) :: ++path
++ dp-model-pig ;~(plug dp-server-pig dp-config) :: ++dojo-model ++ dp-server (stag 0 (most fas sym)) :: ++dojo-server
++ dp-path (tope he-beam) :: ++path ++ dp-twig tall:(vang & dp-path) :: ++twig
++ dp-server-cat (stag 0 (stag %cat dp-device)) :: ++dojo-server ++ dp-poor poor:(vang & (tope dir)) :: (list ++twig)
++ dp-server-dog (stag 0 (stag %dog dp-device)) :: ++dojo-server
++ dp-server-pig (stag 0 (stag %pig dp-device)) :: ++dojo-server
++ dp-twig tall:(vang & dp-path) :: ++twig
++ dp-poor poor:(vang & (tope dir)) :: (list ++twig)
++ dp-device (most fas sym) :: ++dojo-device
++ dp-value :: ++dojo-source ++ dp-value :: ++dojo-source
;~ pose ;~ pose
(stag %tu (ifix [kel ker] (most ace dp-source))) (stag %tu (ifix [kel ker] (most ace dp-source)))
@ -238,10 +205,10 @@
(he-card(poy `+>+<(pux `way)) %exec way our.hid `[he-beak kas]) (he-card(poy `+>+<(pux `way)) %exec way our.hid `[he-beak kas])
:: ::
++ dy-eyre :: send work to eyre ++ dy-eyre :: send work to eyre
|= [way=wire req=[%purl purl]] |= [way=wire req=hiss]
^+ +>+> ^+ +>+>
?> ?=(~ pux) ?> ?=(~ pux)
(he-card(poy `+>+<(pux `way)) %hiss way %httr req) (he-card(poy `+>+<(pux `way)) %hiss way %httr %hiss req)
:: ::
++ dy-stop :: stop work ++ dy-stop :: stop work
^+ +> ^+ +>
@ -267,12 +234,16 @@
|= mad=dojo-command |= mad=dojo-command
^+ [mad +>] ^+ [mad +>]
?- -.mad ?- -.mad
%file =^(src +>.$ (dy-init-source q.mad) [[%file p.mad src] +>.$]) %file =^(src +>.$ (dy-init-source q.mad) [mad(q src) +>.$])
%flat =^(src +>.$ (dy-init-source q.mad) [[%flat p.mad src] +>.$]) %flat =^(src +>.$ (dy-init-source q.mad) [mad(q src) +>.$])
%pill =^(src +>.$ (dy-init-source q.mad) [[%pill p.mad src] +>.$]) %pill =^(src +>.$ (dy-init-source q.mad) [mad(q src) +>.$])
%poke =^(src +>.$ (dy-init-source q.mad) [[%poke p.mad src] +>.$]) %poke =^(src +>.$ (dy-init-source q.mad) [mad(q src) +>.$])
%show =^(src +>.$ (dy-init-source p.mad) [[%show src] +>.$]) %show =^(src +>.$ (dy-init-source p.mad) [mad(p src) +>.$])
%verb =^(src +>.$ (dy-init-source-unit q.mad) [[%verb p.mad src] +>.$]) %verb =^(src +>.$ (dy-init-source-unit q.mad) [mad(q src) +>.$])
%http
=. r.mad [0 %as %mime r.mad]
=^ src +>.$ (dy-init-source r.mad)
[mad(r src) +>.$]
== ==
:: ::
++ dy-init-source-unit :: (unit dojo-source) ++ dy-init-source-unit :: (unit dojo-source)
@ -295,14 +266,11 @@
|= bul=dojo-build |= bul=dojo-build
^+ [bul +>] ^+ [bul +>]
?- -.bul ?- -.bul
%ec [bul +>.$]
%ex [bul +>.$] %ex [bul +>.$]
%di =^(mod +>.$ (dy-init-model p.bul) [[%di mod] +>.$])
%dv [bul +>.$] %dv [bul +>.$]
%fi =^ mor +>.$ (dy-init-source q.bul) %as =^(mor +>.$ (dy-init-source q.bul) [bul(q mor) +>.$])
[bul(q mor) +>.$] %do =^(mor +>.$ (dy-init-source q.bul) [bul(q mor) +>.$])
%ge =^(mod +>.$ (dy-init-model p.bul) [[%ge mod] +>.$]) %ge =^(mod +>.$ (dy-init-model p.bul) [[%ge mod] +>.$])
%sc !!
%ur [bul +>.$] %ur [bul +>.$]
%tu =^ dof +>.$ %tu =^ dof +>.$
|- ^+ [p.bul +>.^$] |- ^+ [p.bul +>.^$]
@ -323,7 +291,7 @@
++ dy-init-server :: ++dojo-server ++ dy-init-server :: ++dojo-server
|= srv=dojo-server |= srv=dojo-server
=. p.srv num =. p.srv num
[srv +>.$(num +(num), job (~(put by job) num [%dv q.srv]))] [srv +>.$(num +(num), job (~(put by job) num [%dv [%gen q.srv]]))]
:: ::
++ dy-init-config :: prepare config ++ dy-init-config :: prepare config
|= cig=dojo-config |= cig=dojo-config
@ -380,7 +348,7 @@
:: ::
++ dy-done :: dialog submit ++ dy-done :: dialog submit
|= txt=tape |= txt=tape
?. ?=(^ pro) ?: |(?=(^ per) ?=(^ pux) ?=(~ pro))
~& %dy-no-prompt ~& %dy-no-prompt
(dy-diff %bel ~) (dy-diff %bel ~)
(dy-slam /dial u.pro !>(txt)) (dy-slam /dial u.pro !>(txt))
@ -445,20 +413,30 @@
=- +(..dy (he-diff %tan - ~)) =- +(..dy (he-diff %tan - ~))
rose/[" " `~]^~[leaf/"=%" (smyt (tope he-beak s.dir))] rose/[" " `~]^~[leaf/"=%" (smyt (tope he-beak s.dir))]
== ==
::
%http
=+ cay=(~(got by rez) p.r.mad)
?> ?=(%mime p.cay)
=+ mim=;;(mime q.q.cay)
=+ maf=(~(add ja *math) content-type/(moon p.mim))
(dy-eyre /show [q.mad p.mad maf ~ q.mim])
:: ::
%show %show
=+ cay=(~(got by rez) p.p.mad) (dy-show (~(got by rez) p.p.mad))
%+ dy-rash %tan ==
?+ p.cay [(sell q.cay)]~ ::
%tang ;;(tang q.q.cay) ++ dy-show
%httr |= cay=cage
=+ hit=;;(httr q.q.cay) %+ dy-rash %tan
=- (flop (turn `wall`- |=(a=tape leaf/(dash:ut a '')))) ?+ p.cay [(sell q.cay)]~
:- "HTTP {<p.hit>}" %tang ;;(tang q.q.cay)
%+ weld %httr
(turn q.hit |=([a=@t b=@t] "{(trip a)}: {(trip b)}")) =+ hit=;;(httr q.q.cay)
(turn `wain`?~(r.hit ~ (lore q.u.r.hit)) trip) =- (flop (turn `wall`- |=(a=tape leaf/(dash:ut a ''))))
== :- "HTTP {<p.hit>}"
%+ weld
(turn q.hit |=([a=@t b=@t] "{(trip a)}: {(trip b)}"))
(turn `wain`?~(r.hit ~ (lore q.u.r.hit)) trip)
== ==
:: ::
++ dy-edit :: handle edit ++ dy-edit :: handle edit
@ -480,34 +458,33 @@
:: ::
++ dy-cage |=(num=@ud (~(got by rez) num)) :: known cage ++ dy-cage |=(num=@ud (~(got by rez) num)) :: known cage
++ dy-vase |=(num=@ud q:(dy-cage num)) :: known vase ++ dy-vase |=(num=@ud q:(dy-cage num)) :: known vase
++ dy-silk-vase |=(vax=vase [%$ %noun vax]) :: vase to silk ++ dy-silk-vase |=(vax=vase [%$ %noun vax]) :: vase to silk
++ dy-silk-config :: configure ++ dy-silk-sources :: sources to silk
|= [cag=cage cig=dojo-config] |= src=(list dojo-source) ^- silk
^- silk %- dy-silk-vase
:+ %ride [%cnzy %$] |-
:+ %mute [%$ cag] ?~ src !>(~)
^- (list (pair wing silk)) (slop (dy-vase p.i.src) $(src t.src))
:* :- [[~ 12] ~]
(dy-silk-vase !>([now=now.hid eny=eny.hid bec=he-beak]))
::
:- [[~ 26] ~]
%- dy-silk-vase
|- ^- vase
?~ p.cig !>(~)
(slop (dy-vase p.i.p.cig) $(p.cig t.p.cig))
::
%+ turn (~(tap by q.cig))
|= [a=term b=(unit dojo-source)]
^- (pair wing silk)
:- [a [~ 27] ~]
%- dy-silk-vase
?~(b !>([~ ~]) (dy-vase p.u.b))
==
:: ::
++ dy-silk-init-modo :: init and config ++ dy-silk-config :: configure
|= [cag=cage cig=dojo-config] |= [cay=cage cig=dojo-config]
^- silk ^- [wire silk]
(dy-silk-config cag cig) :- ?+ -.q.q.cay ~|(%bad-gen ~_((sell (slot 2 q.cay)) !!))
%say /gent
%ask /dial
%get /scar
==
=+ gat=(slot 3 q.cay)
:+ %call (dy-silk-vase gat)
:+ (dy-silk-vase !>([now=now.hid eny=eny.hid bec=he-beak]))
(dy-silk-sources p.cig)
:+ %mute (dy-silk-vase (fall (slew 27 gat) !>(~)))
%+ turn (~(tap by q.cig))
|= [a=term b=(unit dojo-source)]
^- (pair wing silk)
:- [a ~]
%- dy-silk-vase
?~(b !>([~ ~]) (dy-vase p.u.b))
:: ::
++ dy-twig-head :: dynamic state ++ dy-twig-head :: dynamic state
^- cage ^- cage
@ -517,7 +494,7 @@
%- ~(rep by var) %- ~(rep by var)
|= [[a=term @ b=vase] c=vase] ^- vase |= [[a=term @ b=vase] c=vase] ^- vase
(sloop b(p face/[a p.b]) c) (sloop b(p face/[a p.b]) c)
!>(`[our=@p now=@da eny=@uvI]`[our now eny]:hid) !>([our=our now=now eny=eny]:hid)
:: ::
++ dy-made-dial :: dialog product ++ dy-made-dial :: dialog product
|= cag=cage |= cag=cage
@ -541,6 +518,35 @@
[%pro pom(cad [':' ' ' cad.pom])] [%pro pom(cad [':' ' ' cad.pom])]
== ==
:: ::
++ dy-made-scar :: scraper product
|= cag=cage
^+ +>+>
?. ?=(^ q.q.cag)
(dy-diff %err q.q.cag)
=+ tan=((list tank) +2.q.q.cag)
=. +>+>.$ (he-diff %tan tan)
=+ vax=(spec (slot 3 q.cag))
~_ (sell q.cag)
?+ -.q.vax !!
%&
?~ +.q.vax
~& %dy-made-scar-abort
(dy-rash %bel ~)
(dy-meal (slot 7 vax))
::
%|
=+ hiz=;;(hiss +<.q.vax)
=. ..dy (he-diff %tan leaf/"< {(earn p.hiz)}" ~)
(dy-eyre(pro `(slap (slot 7 vax) cnzy/%q)) /scar hiz)
==
::
++ dy-sigh-scar :: scraper result
|= dat=cage
?~ pro
~& %dy-no-scraper
(dy-show dat)
(dy-slam(pux ~) /scar u.pro q.dat)
::
++ dy-made-gent :: generator product ++ dy-made-gent :: generator product
|= cag=cage |= cag=cage
(dy-meal q.cag) (dy-meal q.cag)
@ -550,17 +556,15 @@
?> ?=(^ cud) ?> ?=(^ cud)
=+ bil=q.u.cud :: XX =* =+ bil=q.u.cud :: XX =*
?: ?=(%ur -.bil) ?: ?=(%ur -.bil)
(dy-eyre /hand %purl p.bil) (dy-eyre /hand [p.bil %get ~ ~])
%- dy-ford %- dy-ford
^- (pair path silk) ^- (pair path silk)
?+ -.bil !! ?- -.bil
%di [/dial (dy-silk-init-modo (dy-cage p.p.p.bil) q.p.bil)] %ge (dy-silk-config (dy-cage p.p.p.bil) q.p.bil)
%ge [/gent (dy-silk-init-modo (dy-cage p.p.p.bil) q.p.bil)]
%dv [/hand [%core he-beak (flop p.bil)]] %dv [/hand [%core he-beak (flop p.bil)]]
%ec [/hand [%cast p.bil (dy-mare q.bil)]]
%ex [/hand (dy-mare p.bil)] %ex [/hand (dy-mare p.bil)]
%fi =+ dat=[%$ (dy-cage p.q.bil)] %as [/hand [%cast p.bil [%$ (dy-cage p.q.bil)]]]
[/hand ?@(p.bil [%cast p.bil dat] [%call (dy-mare p.bil) dat])] %do [/hand [%call (dy-mare p.bil) [%$ (dy-cage p.q.bil)]]]
%tu :- /hand %tu :- /hand
:- %$ :- %$
:- %noun :- %noun
@ -694,18 +698,25 @@
[%hand ~] dy-hand:dye [%hand ~] dy-hand:dye
[%dial ~] dy-made-dial:dye [%dial ~] dy-made-dial:dye
[%gent ~] dy-made-gent:dye [%gent ~] dy-made-gent:dye
[%scar ~] dy-made-scar:dye
[%edit ~] dy-made-edit:dye [%edit ~] dy-made-edit:dye
== ==
%| (he-diff(poy ~) %tan p.reg) %| (he-diff(poy ~) %tan p.reg)
%tabl !! %tabl !!
== ==
:: ::
++ he-sigh :: result from ford ++ he-sigh :: result from eyre
|= [way=wire hit=httr] |= [way=wire hit=httr]
^+ +> ^+ +>
?> ?=(^ poy) ?> ?=(^ poy)
?> ?=([%hand ~] way) :: XX options? =< he-pine
he-pine:(~(dy-hand dy u.poy(pux ~)) %httr !>(hit)) %. [%httr !>(hit)]
=+ dye=~(. dy u.poy(pux ~))
?+ way !!
[%hand ~] dy-hand:dye
[%show ~] dy-show:dye
[%scar ~] dy-sigh-scar:dye
==
:: ::
++ he-unto :: result from behn ++ he-unto :: result from behn
|= [way=wire cit=cuft] |= [way=wire cit=cuft]
@ -789,15 +800,19 @@
-- --
:: ::
++ prep ++ prep
=+ sosh==+(*session ,[_say syd=desk * (unit) _|3.-]) =+ session-1==+(*session ,_-(poy *(unit)))
=+ session-0==+(*session-1 ,[_say syd=desk * _|2.-])
:: ,_`..prep :: ,_`..prep
|= old=(unit ?(house [%0 p=(map bone sosh)])) ^+ [~ ..prep] =+ hoze=$%([%0 p=(map bone session-0)] [%1 p=(map bone session-1)])
|= old=(unit ?(house hoze)) ^+ [~ ..prep]
?~ old `..prep ?~ old `..prep
?: ?=(%1 -.u.old) `..prep(+<+ u.old) ?- -.u.old
=< ^$(u.old [%1 (~(run by p.u.old) .)]) %2 `..prep(+<+ u.old)
|= sos=sosh ^- session %1 `..prep(+<+ [%2 (~(run by p.u.old) |=(session-1 +<(poy ~)))])
=- ~! [%*(. *session poy *(unit)) -] - %0 =< ^$(u.old [%1 (~(run by p.u.old) .)])
[-.sos [[our.hid syd.sos ud/0] /] ~ |4.sos] |= sos=session-0 ^- session-1
[-.sos [[our.hid syd.sos ud/0] /] |3.sos]
==
:: ::
:: pattern: ++ foo |=(data he-abet:(~(he-foo he (~(got by hoc) ost)) data)) :: pattern: ++ foo |=(data he-abet:(~(he-foo he (~(got by hoc) ost)) data))
++ arm (arm-session (~(got by hoc) ost.hid)) ++ arm (arm-session (~(got by hoc) ost.hid))

View File

@ -81,6 +81,7 @@
++ peer-drum (wrap peer):from-drum ++ peer-drum (wrap peer):from-drum
++ poke-dill-belt (wrap poke-dill-belt):from-drum ++ poke-dill-belt (wrap poke-dill-belt):from-drum
++ poke-drum-link (wrap poke-link):from-drum ++ poke-drum-link (wrap poke-link):from-drum
::++ poke-drum-exit (wrap poke-exit):from-drum
++ poke-drum-start (wrap poke-start):from-drum ++ poke-drum-start (wrap poke-start):from-drum
++ poke-helm-hi (wrap poke-hi):from-helm ++ poke-helm-hi (wrap poke-hi):from-helm
++ poke-helm-init (wrap poke-init):from-helm ++ poke-helm-init (wrap poke-init):from-helm

View File

@ -355,7 +355,7 @@
if(this.status !== 205) { if(this.status !== 205) {
return urb.keep() return urb.keep()
} }
document.location.reload() urb.onupdate()
}) })
urb.wreq.addEventListener('error', urb.keep) urb.wreq.addEventListener('error', urb.keep)
urb.wreq.addEventListener('abort', urb.keep) urb.wreq.addEventListener('abort', urb.keep)
@ -365,6 +365,7 @@
setTimeout(urb.call,1000*urb.tries) setTimeout(urb.call,1000*urb.tries)
urb.tries++ urb.tries++
} }
urb.onupdate = function(){document.location.reload()}
urb.call() urb.call()
urb.wasp = function(deh){ urb.wasp = function(deh){
var old = /[^/]*$/.exec(urb.wurl)[0] var old = /[^/]*$/.exec(urb.wurl)[0]

View File

@ -993,9 +993,10 @@
(fine cof [%atom %t] u.mas) (fine cof [%atom %t] u.mas)
%+ cope (fang cof for) %+ cope (fang cof for)
|= [cof=cafe tux=vase] |= [cof=cafe tux=vase]
=+ bob=(slot 6 tux) =+ typ=p:(slot 6 tux)
?: (~(nest ut p.bob) | p.sam) =. typ ?+(-.typ typ %face q.typ) :: XX vulcanization
(fine cof sam) ?: (~(nest ut typ) | p.sam)
(fine cof typ q.sam)
?. (slob %grab p.tux) ?. (slob %grab p.tux)
(flaw cof [%leaf "ford: no grab: {<[for bek]>}"]~) (flaw cof [%leaf "ford: no grab: {<[for bek]>}"]~)
=+ gab=(slap tux [%cnzy %grab]) =+ gab=(slap tux [%cnzy %grab])
@ -1003,9 +1004,9 @@
(flaw cof [%leaf "ford: no noun: {<[for bek]>}"]~) (flaw cof [%leaf "ford: no noun: {<[for bek]>}"]~)
%+ cope (maul cof (slap gab [%cnzy %noun]) [%noun q.sam]) %+ cope (maul cof (slap gab [%cnzy %noun]) [%noun q.sam])
|= [cof=cafe pro=vase] |= [cof=cafe pro=vase]
?> (~(nest ut p.bob) | p.pro) ?> (~(nest ut typ) | p.pro)
?: =(q.pro q.sam) ?: =(q.pro q.sam)
(fine cof p.bob q.pro) (fine cof typ q.pro)
(flaw cof [%leaf "ford: invalid content: {<[for bek]>}"]~) (flaw cof [%leaf "ford: invalid content: {<[for bek]>}"]~)
:: ::
++ lamp :: normalize version ++ lamp :: normalize version
@ -1285,7 +1286,9 @@
(fine cof %& p.kas [%atom %t] '') (fine cof %& p.kas [%atom %t] '')
%+ cope (fang cof p.kas) %+ cope (fang cof p.kas)
|= [cof=cafe tux=vase] |= [cof=cafe tux=vase]
(fine cof [%& p.kas (slot 6 tux)]) =+ [typ=p val=q]:(slot 6 tux)
=. typ ?+(-.typ typ %face q.typ) :: XX vulcanization
(fine cof [%& p.kas [typ val]])
:: ::
%call %call
:: %+ cool |.(leaf/"ford: call {<`@p`(mug kas)>}") :: %+ cool |.(leaf/"ford: call {<`@p`(mug kas)>}")

View File

@ -6,6 +6,7 @@
:: ::
::::::: :::::::
!: !:
:- %say
|= [^ arg=[address=@t contact=@t ~] ~] |= [^ arg=[address=@t contact=@t ~] ~]
:- %address-contact :- %address-contact
[address.arg contact.arg] [address.arg contact.arg]

View File

@ -5,6 +5,7 @@
:: ::
::::: :::::
!: !:
:- %say
|= [^ [arg1=cord arg2=cord ~] ~] ::[arg=[cord cord ~] ~]] |= [^ [arg1=cord arg2=cord ~] ~] ::[arg=[cord cord ~] ~]]
:- %auth :- %auth
[arg1 arg2] [arg1 arg2]

View File

@ -5,6 +5,7 @@
:: ::
::::::: :::::::
!: !:
:- %say
|= [^ [amount=@t currency=@t ~] ~] |= [^ [amount=@t currency=@t ~] ~]
:- %buy :- %buy
[amount currency] [amount currency]

View File

@ -6,6 +6,7 @@
:: ::
::::::: :::::::
!: !:
:- %say
|= [^ arg=[contact=@t address=@t ~] ~] |= [^ arg=[contact=@t address=@t ~] ~]
:- %bit-contact :- %bit-contact
[contact.arg address.arg] [contact.arg address.arg]

View File

@ -5,6 +5,7 @@
:: ::
::::::: :::::::
!: !:
:- %say
|= [^ ~ ~] |= [^ ~ ~]
:- %list :- %list
~ ~

View File

@ -5,6 +5,7 @@
:: ::
::::::: :::::::
!: !:
:- %say
|= [^ [amount=@t currency=@t ~] ~] |= [^ [amount=@t currency=@t ~] ~]
:- %sell :- %sell
[amount currency] [amount currency]

View File

@ -5,6 +5,7 @@
:: ::
::::::: :::::::
!: !:
:- %say
|= [^ [to=@uc amo=@t ~] ~] |= [^ [to=@uc amo=@t ~] ~]
[%bit-send to amo] [%bit-send to amo]

View File

@ -1,12 +1,13 @@
:: ConCATenate file listings :: ConCATenate file listings
:: ::
:::: /hoon/cat/cat :::: /hoon/gen/cat
:: ::
// /%%/ls/subdir // /%%/ls/subdir
// /%/pretty // /%/pretty
!: !:
:::: ::::
:: ::
:- %say
|= [^ [arg=(list path)] ~] |= [^ [arg=(list path)] ~]
=- tang/(flop `tang`(zing -)) =- tang/(flop `tang`(zing -))
%+ turn arg %+ turn arg

View File

@ -5,6 +5,7 @@
:: ::
:::: ::::
!: !:
:- %say
|= [^ [arg=(list cord) ~]] |= [^ [arg=(list cord) ~]]
:- %keys :- %keys
arg arg

6
gen/curl.hoon Normal file
View File

@ -0,0 +1,6 @@
/- sole
[sole]
:- %get |= [^ [a=tape ~] ~]
%+ sole-at (scan a auri:epur)
|= hit=httr
(sole-so %httr hit)

View File

@ -5,5 +5,6 @@
:: ::
::::: :::::
!: !:
:- %say
|= [^ [arg=tape ~] ~] |= [^ [arg=tape ~] ~]
purl/(scan arg auri:epur) purl/(scan arg auri:epur)

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/hello/cat :::: /hoon/hello/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
|= [* [[txt=@tas ~] ~]] :- %say
|= [^ [[txt=@tas ~] ~]]
:- %noun :- %noun
(crip (weld "hello, " (flop (trip txt)))) (crip (weld "hello, " (flop (trip txt))))

View File

@ -11,6 +11,7 @@
++ scug |*([a=@ b=(pole)] ?~(b ~ ?~(a ~ [-.b $(b +.b, a (dec a))]))) ++ scug |*([a=@ b=(pole)] ?~(b ~ ?~(a ~ [-.b $(b +.b, a (dec a))])))
-- --
[sole .] [sole .]
:- %ask
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=_(scug *@ ~[his=*@p tic=*@p]) ~] [arg=_(scug *@ ~[his=*@p tic=*@p]) ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/reload/hood/cat :::: /hoon/reload/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=(list term) ~] [arg=(list term) ~]
== ==

View File

@ -1 +1,2 @@
:- %say
|=([^ [input=path output=path ~] ~] kiln-cp/[input output]) |=([^ [input=path output=path ~] ~] kiln-cp/[input output])

View File

@ -1 +1,2 @@
:- %say
|=([^ [who=ship mez=$|(~ [a=tape ~])] ~] helm-send-hi/[who ?~(mez ~ `a.mez)]) |=([^ [who=ship mez=$|(~ [a=tape ~])] ~] helm-send-hi/[who ?~(mez ~ `a.mez)])

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/reload/hood/cat :::: /hoon/reload/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[~ ~] [~ ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/invite/hood/cat :::: /hoon/invite/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[[who=@p myl=@t ~] ~] [[who=@p myl=@t ~] ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/label/hood/cat :::: /hoon/label/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=[syd=desk lab=@tas ~] ~] [arg=[syd=desk lab=@tas ~] ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/link/hood/cat :::: /hoon/link/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI byk=beak] |= $: [now=@da eny=@uvI byk=beak]
[arg=$?([dap=term ~] [who=ship dap=term ~]) ~] [arg=$?([dap=term ~] [who=ship dap=term ~]) ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/mass/hood/cat :::: /hoon/mass/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=~ ~] [arg=~ ~]
== ==

View File

@ -1,5 +1,5 @@
:: ::
:::: /hoon/merge/hood/cat :::: /hoon/merge/hood/gen
:: ::
/? 314 /? 314
!: !:
@ -10,6 +10,7 @@
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bek=beak] |= $: [now=@da eny=@uvI bek=beak]
[arg=[?(sorc [syd=$|(desk beaky) sorc])] gem=?(%auto germ)] [arg=[?(sorc [syd=$|(desk beaky) sorc])] gem=?(%auto germ)]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/mount/hood/cat :::: /hoon/mount/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[[pax=path pot=$|(~ [v=@tas ~])] ~] [[pax=path pot=$|(~ [v=@tas ~])] ~]
== ==

View File

@ -1 +1,2 @@
:- %say
|=([^ [input=path output=path ~] ~] kiln-mv/[input output]) |=([^ [input=path output=path ~] ~] kiln-mv/[input output])

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/reload/hood/cat :::: /hoon/reload/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=~ ~] [arg=~ ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/reload/hood/cat :::: /hoon/reload/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=~ ~] [arg=~ ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/reload/hood/cat :::: /hoon/reload/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=[desk (list term)] ~] [arg=[desk (list term)] ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/reload/hood/cat :::: /hoon/reload/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=(list term) ~] [arg=(list term) ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/reset/hood/cat :::: /hoon/reset/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=~ ~] [arg=~ ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/reload/hood/cat :::: /hoon/reload/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=~ ~] [arg=~ ~]
== ==

View File

@ -1 +1,2 @@
:- %say
|=([^ [input=path ~] ~] kiln-rm/input) |=([^ [input=path ~] ~] kiln-rm/input)

View File

@ -1 +1,2 @@
:- %say
|=([^ [where=path tym=@da eve=@t ~] ~] kiln-schedule/[where tym eve]) |=([^ [where=path tym=@da eve=@t ~] ~] kiln-schedule/[where tym eve])

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/start/hood/cat :::: /hoon/start/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=[@ $|(~ [@ ~])] ~] [arg=[@ $|(~ [@ ~])] ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/sync/hood/cat :::: /hoon/sync/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=[syd=@tas her=@p sud=@tas ~] ~] [arg=[syd=@tas her=@p sud=@tas ~] ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/unix/hood/cat :::: /hoon/unix/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[[syd=@tas syn=?(~ [? ~])] ~] [[syd=@tas syn=?(~ [? ~])] ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/mount/hood/cat :::: /hoon/mount/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[[mon=$|(term [span path]) ~] ~] [[mon=$|(term [span path]) ~] ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/unsync/hood/cat :::: /hoon/unsync/hood/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[arg=[syd=@tas her=@p sud=@tas ~] ~] [arg=[syd=@tas her=@p sud=@tas ~] ~]
== ==

View File

@ -7,6 +7,7 @@
:::: ::::
!: !:
[sole .] [sole .]
:- %say
|= $: [now=@da eny=@ bec=beak] |= $: [now=@da eny=@ bec=beak]
[~ ~] [~ ~]
== ==

View File

@ -1,11 +1,12 @@
:: LiSt directory subnodes :: LiSt directory subnodes
:: ::
:::: /hoon/ls/cat :::: /hoon/ls/gen
:: ::
// /%/subdir // /%/subdir
!: !:
:::: ::::
:: ::
:- %say
|= [^ [arg=path ~] ~] |= [^ [arg=path ~] ~]
=+ lon=((hard arch) .^(%cy arg)) =+ lon=((hard arch) .^(%cy arg))
tang/[?~(dir.lon leaf/"~" (subdir arg dir.lon))]~ tang/[?~(dir.lon leaf/"~" (subdir arg dir.lon))]~

2
gen/make.hoon Normal file
View File

@ -0,0 +1,2 @@
:- %say
|=([^ arg=(list ,@) foo=_`@`1 bar=_`@`2] noun/[arg foo bar])

24
gen/pope.hoon Normal file
View File

@ -0,0 +1,24 @@
:: Input twitter keys
/- sole
!:
=+ cryp=bruw :: XX change to ec2 ++brew eventually
=+ [sole]
:- %ask
|= $: [now=@da eny=@uvI bec=beak]
[[who=ship ~] ~]
==
^- (sole-result (cask tang))
%+ sole-yo leaf/"generating carrier {(scow %p who)} (#{(scow %ud who)})"
%+ sole-lo [%| %pope-pass "passphrase: "]
%+ sole-go (boss 256 (star prn))
|= fra=@t
%+ sole-lo [%| %pope-none "[press enter to compute]"] :: XX oy
%+ sole-go (easy ~)
|= ~
=+ bur=(shax (add who (shax fra)))
~& %computing-fingerprint
=+ arc=(cryp 2.048 bur)
%+ sole-so %tang
:~ leaf/"generator: {(scow %uw bur)}"
leaf/"fingerprint: {(scow %uw fig:ex:arc)}"
==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/solid/cat :::: /hoon/solid/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[~ ~] [~ ~]
== ==

View File

@ -1,10 +1,11 @@
:: ::
:::: /hoon/ticket/cat :::: /hoon/ticket/gen
:: ::
/? 314 /? 314
:: ::
:::: ::::
!: !:
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[[her=@p ~] ~] [[her=@p ~] ~]
== ==

View File

@ -1,10 +1,11 @@
:: Tree view recursive directory contents :: Tree view recursive directory contents
:: ::
:::: /hoon/tree/cat :::: /hoon/tree/gen
:: ::
!: !:
:::: ::::
:: ::
:- %say
|= [^ [pax=path fla=$|(~ [%full ~])] ~] |= [^ [pax=path fla=$|(~ [%full ~])] ~]
=+ len=(lent pax) =+ len=(lent pax)
=+ rend=?^(fla dank:ut |=(a=path (dank:ut (slag len a)))) =+ rend=?^(fla dank:ut |=(a=path (dank:ut (slag len a))))

View File

@ -3,6 +3,7 @@
:::: ::::
:: ::
[twitter .] [twitter .]
:- %say
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[[who=span msg=cord ~] ~] [[who=span msg=cord ~] ~]
== ==

View File

@ -6,6 +6,7 @@
++ baz64 (cook crip (star alp)) ++ baz64 (cook crip (star alp))
-- --
!: !:
:- %ask
|= $: [now=@da eny=@uvI bec=beak] |= $: [now=@da eny=@uvI bec=beak]
[~ ~] [~ ~]
== ==

View File

@ -10,6 +10,7 @@
|_ [hide ~] |_ [hide ~]
++ stat ,[id=@u who=@ta now=@da txt=@t] ++ stat ,[id=@u who=@ta now=@da txt=@t]
++ rens ++ rens
:- %say
|=(stat rose/[": " `~]^~[leaf/"{<now>} @{(trip who)}" leaf/(trip txt)]) |=(stat rose/[": " `~]^~[leaf/"{<now>} @{(trip who)}" leaf/(trip txt)])
++ peer ,_`. ++ peer ,_`.
++ poke--args ++ poke--args

View File

@ -215,6 +215,9 @@
=< se-abet =< se-view =< se-abet =< se-view
(se-link gyl) (se-link gyl)
:: ::
:: ++ poke-exit ::
:: |=(~ se-abet:(se-blit `dill-blit`[%qit ~])) :: XX find bone
:: ::
++ reap-phat :: ++ reap-phat ::
|= [way=wire saw=(unit tang)] |= [way=wire saw=(unit tang)]
=< se-abet =< se-view =< se-abet =< se-view

View File

@ -7,7 +7,7 @@
|_ ato=@ |_ ato=@
++ grab |% ++ grab |%
++ noun ,@ ++ noun ,@
++ mime |=([^ p=octs] q.p) ++ mime |=([* p=octs] q.p)
-- --
++ grow |% ++ grow |%
++ mime [/aplication/x-urb-unknown (taco ato)] ++ mime [/aplication/x-urb-unknown (taco ato)]

View File

@ -1,8 +1,8 @@
/+ tree /+ tree
/: /%%/ /% /: /%%/ /%
/^ [tip=marl sub=(map span marl) ~] /^ [tip=marl sub=(map span marl) ~]
/. /; (getall %h1 ~) /elem/ /. /; (getall:tree %h1 ~) /elem/
/_ /; (getall %h1 ~) /elem/ /_ /; (getall:tree %h1 ~) /elem/
== ==
!: !:
:::: ::::

View File

@ -13,44 +13,6 @@
haw=@uvH :: source hash haw=@uvH :: source hash
ted=sole-edit :: state change ted=sole-edit :: state change
== :: == ::
++ sole-dialog :: standard dialog
|* out=$+(* *) :: output structure
$+(sole-input (sole-result out)) :: output function
:: ::
++ sole-result :: conditional result
|* out=$+(* *) :: output structure
$|(@ud (sole-product out)) :: error position
:: ::
++ sole-product :: success result
|* out=$+(* *) ::
%+ pair (list tank) ::
%+ each (unit out) :: ~ is abort
(pair sole-prompt (sole-dialog out)) :: ask and continue
:: ::
++ sole-so :: construct result
|* pro=* ::
[p=*(list tank) q=[%& p=[~ u=pro]]] ::
:: ::
++ sole-yo :: add output tank
|* [tan=tank res=(sole-result)] ::
?@ res res ::
[p=[i=tan t=p.res] q=q.res] ::
:: ::
++ sole-lo :: construct prompt
|* [pom=sole-prompt mor=(sole-dialog)] ::
[p=*(list tank) q=[%| p=pom q=mor]] ::
:: ::
++ sole-no :: empty result
[p=*(list tank) q=~] ::
:: ::
++ sole-go :: parse by rule
|* [sef=_rule fun=$+(* *)] ::
|= txt=sole-input ::
=+ vex=(sef [0 0] txt) ::
?: |(!=((lent txt) q.p.vex) ?=(~ q.vex)) ::
q.p.vex ::
(fun p.u.q.vex) ::
:: ::
++ sole-clock ,[own=@ud his=@ud] :: vector clock ++ sole-clock ,[own=@ud his=@ud] :: vector clock
++ sole-edit :: shared state change ++ sole-edit :: shared state change
$% [%del p=@ud] :: delete one at $% [%del p=@ud] :: delete one at
@ -83,10 +45,69 @@
tag=term :: history mode tag=term :: history mode
cad=tape :: caption cad=tape :: caption
== :: == ::
++ sole-input tape :: prompt input
++ sole-share :: symmetric state ++ sole-share :: symmetric state
$: ven=sole-clock :: our vector clock $: ven=sole-clock :: our vector clock
leg=(list sole-edit) :: unmerged edits leg=(list sole-edit) :: unmerged edits
buf=sole-buffer :: sole state buf=sole-buffer :: sole state
== :: == ::
:: ::
:: ::
++ sole-dialog :: standard dialog
|* out=$+(* *) :: output structure
$+(sole-input (sole-result out)) :: output function
:: ::
++ sole-input tape :: prompt input
++ sole-result :: conditional result
|* out=$+(* *) :: output structure
$|(@ud (sole-product out)) :: error position
:: ::
++ sole-product :: success result
|* out=$+(* *) ::
%+ pair (list tank) ::
%+ each (unit out) :: ~ is abort
(pair sole-prompt (sole-dialog out)) :: ask and continue
:: ::
++ sole-request :: scraper result
|* out=$+(* *) :: output structure
%+ pair (list tank) ::
%+ each (unit out) :: ~ is abort
(pair hiss $+(httr (sole-request out))) :: fetch and continue
:: ::
++ sole-gen :: XX virtual type
$% [%say $+((sole-args) (cask))] :: direct noun
[%ask $+((sole-args) (sole-product (cask)))] :: dialog
[%get $+((sole-args) (sole-request (cask)))] :: scraper
== ::
++ sole-args :: generator arguments
|* _[lit=,* opt=,*] ::
,[[now=@da eny=@uvI bek=beak] [lit opt]] ::
:: ::
:: ::
++ sole-so :: construct result
|* pro=* ::
[p=*(list tank) q=[%& p=[~ u=pro]]] ::
:: ::
++ sole-yo :: add output tank
|* [tan=tank res=(sole-result)] ::
?@ res res ::
[p=[i=tan t=p.res] q=q.res] ::
:: ::
++ sole-lo :: construct prompt
|* [pom=sole-prompt mor=(sole-dialog)] ::
[p=*(list tank) q=[%| p=pom q=mor]] ::
:: ::
++ sole-at :: fetch url
|* [pul=_purl fun=$+(httr *)] ::
[p=*(list tank) q=[%| p=[pul %get ~ ~] q=fun]] ::
:: ::
++ sole-no :: empty result
[p=*(list tank) q=~] ::
:: ::
++ sole-go :: parse by rule
|* [sef=_rule fun=$+(* *)] ::
|= txt=sole-input ::
=+ vex=(sef [0 0] txt) ::
?: |(!=((lent txt) q.p.vex) ?=(~ q.vex)) ::
q.p.vex ::
(fun p.u.q.vex) ::
-- --