From deaa14d27a53bc48e47bca07f9390b9c7dd3387f Mon Sep 17 00:00:00 2001 From: "C. Guy Yarvin" Date: Tue, 8 Apr 2014 15:26:01 -0700 Subject: [PATCH] Various fixes and improvements. --- arvo/eyre.hoon | 126 +++++++++++++++++++++++++++------ arvo/hoon.hoon | 34 +++++---- arvo/zuse.hoon | 55 +++++++++++++- try/syn/web/template/htmn.hoon | 82 +++++++++++---------- 4 files changed, 224 insertions(+), 73 deletions(-) diff --git a/arvo/eyre.hoon b/arvo/eyre.hoon index 55e0788736..2445db99c0 100644 --- a/arvo/eyre.hoon +++ b/arvo/eyre.hoon @@ -26,9 +26,11 @@ ++ loco ,[p=? q=(unit ,@tas) r=path] :: logical construct ++ pest :: request in progress $| $? %new :: virgin + %way :: waiting for %clay == :: $% [%err p=@ud q=(list tank)] :: error report [%fin p=love] :: ready to send + [%haz p=riot] :: clay responded [%raw p=hiss] :: wild url == :: ++ pimp :: traced request @@ -84,7 +86,13 @@ %mid [200 ~[content-type/(moon p.luv)] [~ q.luv]] %ham [200 ~[content-type/'text/html'] [~ (tact (xmlt | p.luv ~))]] %raw p.luv - %wan !! + %wan :+ 200 + ~[content-type/'text/plain'] + :- ~ + %- taco + %+ rap 3 + |- ^- (list ,@) + ?~(p.luv ~ [i.p.luv 10 $(p.luv t.p.luv)]) %zap :+ p.luv ~[content-type/'text/plain'] :- ~ @@ -201,6 +209,12 @@ :: %went +.$ + :: + %writ + ?. ?=([%hoot @ @ ~] tea) + +.$ + ?> ?=(^ wru) + (gout q.u.wru i.t.tea (need (slaw %ud i.t.t.tea)) p.fav) == :: ++ doss :: host to ship @@ -229,6 +243,14 @@ fon (~(put by fon) him rot(q.rem (~(del by q.rem.rot) num))) == :: + ++ gout + |= [our=ship ses=hole num=@ud rot=riot] + ^+ +> + ~& [%gout our ses num] + =+ sef=`serf`(need (~(get by own) our)) + =+ cyz=`cyst`(need (~(get by wup.sef) ses)) + abet:work:(~(iota ya [our ses] sef cyz) num rot) + :: ++ hajj :: send %pr response |= [him=ship tus=path har=httr] ^+ +> @@ -263,6 +285,16 @@ ?: (~(has by fon) who) | !=(~ (sky /a/(scot %p who)/buck/(scot %da now))) :: + ++ hoot :: clay request + |= [our=ship num=@ud ses=hole rif=riff] + %_ +> + mow + :_ mow + :+ [~ %gold our] + [/c [%e %hoot ses (scot %ud num) ~] hen] + [%warp our rif] + == + :: ++ hork :: remote request |= [him=ship hyx=httx] ^+ +> @@ -446,6 +478,30 @@ [[%$ %t p.i.quy] [%$ %t q.i.quy] $(quy t.quy)] == :: + ++ foin :: version request + |= [fur=(unit term) paw=(list ,@t) quy=quay] + ^- (unit seam) + ?. ?& ?=(~ fur) + ?=(~ quy) + ?=([@ @ ~] paw) + ((sane %tas) i.t.paw) + == ~ + %+ bind + ^- (unit moat) + =+ soy=(slay i.paw) + ?~ soy ~ + ?+ u.soy + ~ + :: + [%$ ?(%da %ud %tas) @] + [~ (case p.u.soy) (case p.u.soy)] + :: + [%many [%$ ?(%da %ud %tas) @] [%$ ?(%da %ud %tas) @] ~] + [~ (case i.p.u.soy) (case i.t.p.u.soy)] + == + |= mot=moat + `seam`[%det i.t.paw mot] + :: ++ funk :: functional request |= [nep=@tas fur=(unit term) paw=(list ,@t) quy=quay] ^- (unit seam) @@ -459,7 +515,7 @@ ?. ?=([~ %$ ?(%ud %da %tas) *] zac) ~ [~ i.paw t.paw] ?: ?| ?=(~ zac) - ?=(~ q.u.zac) + ?=(~ q.u.zac) !(levy t.q.u.zac (sane %ta)) == ~ :+ ~ ?~(fur %html u.fur) @@ -500,6 +556,7 @@ ?= $? %p :: application %c :: console %f :: functional + %v :: version %l :: login %n :: now == @@ -509,9 +566,33 @@ ~ ?- tri ?(%f %n) (funk nep p.q.pul paw r.pul) + %v (foin p.q.pul paw r.pul) ?(%p %c %l) !! == :: + ++ into + |= [pul=purl moh=moth] + ^+ +> + =+ num=p.rey + %= +>.$ + p.rey +(num) + q.rey + %+ ~(put by q.rey) num + ^- pimp + :* !?=(%head p.moh) + hen + *seam + `pest`[%raw pul moh] + == + == + :: + ++ iota :: change response + |= [num=@ud rot=riot] + ^+ +> + =+ pip=`pimp`(need (~(get by q.rey) num)) + ?> ?=(%way pez.pip) + +>.$(q.rey (~(put by q.rey) num pip(pez [%haz rot]))) + :: ++ lace :: load and execute |= [pax=path sam=vase] ^- [gank _+>] @@ -519,7 +600,13 @@ :_ +>.$ =+ mud=(need hum) ?: ?=(| -.mud) mud - (mule |.((slam p.mud sam))) + =+ typ=(~(play ut [%cell p.p.mud p.sam]) [%cncl [~ 2] [~ 3]]) + =+ ton=(mong [q.p.mud q.sam] sky) + ?- -.ton + %0 [%& typ p.ton] + %1 [%| (turn p.ton |=(a=* (smyt (path a))))] + %2 [%| p.ton] + == :: ++ lack :: probe/load |= pax=path @@ -780,6 +867,8 @@ =^ mun +>.$ (lobo for pre p.u.gun) [[~ mun] +>.$] :: + ++ moil :: filter search + :: ++ step :: step in work |- ^+ + =^ zib +.$ @@ -788,17 +877,24 @@ ?~ yub [~ +.^$] =^ sin +.^$ $(yub l.yub) =^ dex +.^$ $(yub r.yub) - =^ top +.^$ (wink q.n.yub) + =^ top +.^$ (wink n.yub) =+ pot=`(list ,[p=@ud q=pimp])`?~(top ~ [[p.n.yub u.top] ~]) [:(weld pot dex sin) +.^$] +.$(q.rey (~(gas by `_q.rey`~) zib)) :: ++ wink :: advance request - |= pip=pimp + |= [num=@ud pip=pimp] ^- [(unit pimp) _+>] ?- pez.pip + %way [[~ pip] +>.$] %new ?- -.som.pip + %det + ~& [%wink-det som.pip num ses] + :- [~ pip(pez %way)] + =+ rif=`riff`[p.som.pip ~ [%| q.som.pip]] + +>.$(..ya (hoot our num ses rif)) + :: %fun =^ syt +>.$ (lude p.som.pip q.som.pip) :_ +>.$ @@ -822,6 +918,10 @@ =+ har=(loft p.pez.pip) =. q.har (weld (turn cug |=(a=@t ['set-cookie' a])) q.har) [~ +>.$(..ya (muff [%thou har]))] + :: + [%haz *] + :_ +>.$ + [~ pip(pez [%fin %wan 'Hello, world' ~])] :: [%raw *] :_ +>.$ @@ -838,22 +938,6 @@ =+ sez=step ?: =(rey.sez rey) sez $(+ sez) - :: - ++ into - |= [pul=purl moh=moth] - ^+ +> - =+ num=p.rey - %= +>.$ - p.rey +(num) - q.rey - %+ ~(put by q.rey) num - ^- pimp - :* !?=(%head p.moh) - hen - *seam - `pest`[%raw pul moh] - == - == -- -- -- diff --git a/arvo/hoon.hoon b/arvo/hoon.hoon index a435957877..d54dbb41a5 100644 --- a/arvo/hoon.hoon +++ b/arvo/hoon.hoon @@ -6610,7 +6610,7 @@ ;~(pfix lus (stag %b ;~(pfix gap tall))) ;~(pfix tar (stag %c ;~(pfix gap tall))) ;~(pfix cen (stag %d ;~(pfix gap tall))) - (easy [%f [%a [%smdq " "]] ~]) + (easy [%f [%a [%smdq 10 ~]] ~]) == :: ++ bat :: wide outer top @@ -6675,22 +6675,22 @@ (easy ~) == == + :: + ++ hoy :: tall attributes + %- star + ;~ pfix ;~(plug gap tis) + ;~ plug + (stag %dtzz (stag %tas sym)) + ;~(pfix gap tall) + == + == + :: ++ hul :: tall preface %+ cook |= [a=[p=twig q=(list twig)] b=(list twig) c=(list tuna)] ^- [twig (list tuna)] [[p.a %clsg (weld q.a b)] c] - ;~ plug - hog - %+ more gap - ;~ pfix tis - ;~ plug - (stag %dtzz (stag %tas sym)) - ;~(pfix gap tall) - == - == - nol - == + ;~(plug hog hoy nol) :: ++ jaw :: wide attributes ;~ pose @@ -6713,7 +6713,13 @@ %+ cook |=(a=(list tuna) a) %+ ifix [gap ;~(plug gap duz)] %+ most gap - ;~(pfix ;~(plug sem ace) (stag %a (stag %smdq (star (shim 32 255))))) + ;~ pfix + ;~(plug sem ace) + %+ cook + |= a=tape + [%a %smdq (weld a `tape`[`@`10 ~])] + (star (shim 32 255)) + == :: ++ nol :: tall tail ?> tol @@ -6772,7 +6778,7 @@ ?~ reb =. sim ?. tol sim - [32 |-(?~(sim sim ?:(=(32 i.sim) $(sim t.sim) sim)))] + [10 |-(?~(sim sim ?:(=(32 i.sim) $(sim t.sim) sim)))] ?~(sim tuz [[%a %smdq (flop sim)] tuz]) ?@ i.reb $(reb t.reb, sim [i.reb sim]) diff --git a/arvo/zuse.hoon b/arvo/zuse.hoon index 9002d1253d..63d0ae640e 100644 --- a/arvo/zuse.hoon +++ b/arvo/zuse.hoon @@ -561,7 +561,6 @@ ++ tact :: tape to octstream |= tep=tape ^- octs (taco (rap 3 tep)) - :: ++ tell :: wall to octstream |= wol=wall ^- octs @@ -1099,6 +1098,59 @@ :- p.pok [i.rax q.pok] :: +++ gist :: html with now + |= yax=$+(epic marl) + %- give + |= piq=epic + ^- manx + =+ ^= sip + |= mal=marl + ?~(mal ~ ?.(|(=(:/(~) i.mal) =(:/([10 ~]) i.mal)) mal $(mal t.mal))) + =+ zay=`marl`(yax piq) + =. zay (sip zay) + =+ ^= twa + |- ^- [p=marl q=marl] + ?~ zay [~ ~] + ?: ?=([[[%head *] *] *] zay) + [c.i.zay ?:(?=([[[%body *] *] ~] t.zay) c.i.t.zay t.zay)] + ?: ?=([[[%title *] *] *] zay) + [[i.zay ~] t.zay] + [~ zay] + =. q.twa ^- marl + ?. =(%n (cut 3 [2 1] nep.piq)) q.twa + =- =+ pey=(cat 3 (end 3 2 nep.piq) %v) + =+ ven=+((,@ .^(%cw pos.piq))) + =+ ^= cal :/ + "call('". + "/{+:(scow %p own.piq)}". + "/{(trip pey)}". + "/{(scow %ud ven)}". + "/{(trip q.pos.piq)}');" + ~& [%ven ven %call cal] + (weld q.twa `marl`[[-.sac (weld `marl`+.sac `marl`[cal ~])] ~]) + ^= sac + ;script + ; tries = 0; + ; call = function(path) { + ; xhr = new XMLHttpRequest(); + ; xhr.open('GET', path, true); + ; xhr.addEventListener('load', function() { + ; if(this.status !== 200) { + ; return keep(); + ; } + ; document.location.reload(); + ; }); + ; xhr.addEventListener('error', keep); + ; xhr.addEventListener('abort', keep); + ; xhr.send(); + ; } + ; keep = function() { + ; setTimeout(call,1000*tries); + ; tries++; + ; } + == + [/html [/head p.twa] [/body q.twa] ~] +:: ++ give !: :: web synthesizer |* yax=$+(epic *) |= [for=@tas pre=path suf=path but=path] @@ -2236,6 +2288,7 @@ ++ seam :: logical request $% :: [%app p=seep] :: application :: [%con p=seer] :: console + [%det p=disc q=moat] :: load changes [%fun p=term q=tube] :: functional :: [%log p=seal] :: login == :: diff --git a/try/syn/web/template/htmn.hoon b/try/syn/web/template/htmn.hoon index c125c89398..84856c646d 100644 --- a/try/syn/web/template/htmn.hoon +++ b/try/syn/web/template/htmn.hoon @@ -1,49 +1,57 @@ !: :: Some uses of template syntax :: -%- give +%- gist |= epic -^- manx +^- marl =+ lim=;li:"second ;{a/funky."http://www.urbit.org" "link"} item" =+ lum=;li:"third [owner: {(scow %p own)}] item" =+ lom=;li:"fourth (;{i "italics"}) item" =+ bar=;br; -=+ foo=`manx`i/;"foobar" +=+ foo=`manx`i/;"foobarz" =+ lam=`(list manx)`[lim lum lom ~] -;html - ;head - ;title: Urbi et Gorby - == - ;body - ;p: Hello, world. - ;p:"Hello" - ;- "Goodbye" - ;+ ;p:"Hello again" - ;* ~[;p:"One" ;p:"Two" ;p:"Three"] - ;br; - ;p: Behold a

aragraph with an embedded {"string"}. - ;p: Or an embedded ;{i "tag"}. - ;p: Or even a *{;i:"list" ;i:" of" ;i:" tags" ~}, - ;p: Sometimes %{|*(a=* [;i:"functionally " ;i:"applied" a])}. - ;p: It's nice to just be able to use "quotes." - ; Now, some flow at the same level - ; as the paragraph tag above; - ; it is fun to flow along, - ;a."http://www.urbit.org": with fun links - ; - ; ;{a."http://www.urbit.org" "and more fun links,"} - ; or without, - ; but not accepting any kind of trailing whitespace - ;p - ; We are also very good at lists: - ;ul - ;li: first item - ;* lam - ;li: last item - == +;= + ;title: Hi again! + ; + ;p: Hello, world. + ;p:"Hello: pos is {}" + ;- "Goodbye" + ;+ ;p:"Hello again" + ;* ~[;p:"One" ;p:"Two" ;p:"Three"] + ;br; + ;p: Let's add some more stuff and just type + ;p: of text! It could definitely be snappier, jowever! + ;p: Behold a

aragraph with an embedded {"string"}. + ;p: Or an embedded ;{i "tag"}. + ;p: Or even a *{;i:"list" ;i:" of" ;i:" tags" ~}, + ;p: Sometimes %{|*(a=* [;i:"functionally " ;i:"applied" a])}. + ;p: It's nice to just be able to use "quotes." Maybe it works! + ; Now, some flow at the same level or above + ; I'm going to write some more text + ; as the paragraph tag + ; it is fun to flow along, + ;a."http://www.urbit.org": with + ; + ; ;{a."http://www.urbit.org" "and more fun links,"} + ; or without, + ; but not accepting any kind of trailing whitespace + ;p + ; We are also very good at random odd foo lists: + ;ul + ;li: first item + ;* lam + ;li: last item == - :: ;script - :: ; alert("I am not an alert box!"); - :: == == + ;p + ; And we can also do + ;pre + ; preformatted text? + ; in lines? + ; with linebreaks! + == + == + :: ;script + :: ; alert("I am not an alert box!"); + :: == ==