mirror of
https://github.com/urbit/shrub.git
synced 2024-12-12 10:29:01 +03:00
Merge branch 'master' into typedclay
Conflicts: n/t.c urb/urbit.pill urb/zod/main/app/reload/core.hook urb/zod/main/app/shell/core.hook urb/zod/main/app/solid/core.hook urb/zod/main/arvo/dill.hoon urb/zod/main/arvo/eyre.hoon urb/zod/main/arvo/ford.hoon urb/zod/main/arvo/gall.hoon urb/zod/main/arvo/hoon.hoon urb/zod/main/mar/json/door.hook urb/zod/main/mar/md/door.hook urb/zod/main/mar/txt/door.hook v/raft.c v/unix.c
This commit is contained in:
commit
dd0716eb72
@ -33,7 +33,6 @@
|
|||||||
[ust %pass / %c %plug our.hid %try (sein our.hid) %try]
|
[ust %pass / %c %plug our.hid %try (sein our.hid) %try]
|
||||||
[ust %give %nice ~]
|
[ust %give %nice ~]
|
||||||
==
|
==
|
||||||
|
|
||||||
::
|
::
|
||||||
++ pour
|
++ pour
|
||||||
|= [ost=bone pax=path sih=*]
|
|= [ost=bone pax=path sih=*]
|
||||||
@ -45,4 +44,15 @@
|
|||||||
%went ~
|
%went ~
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
|
++ poke-will
|
||||||
|
|= [ost=bone you=ship wil=(unit will)]
|
||||||
|
:_ +>.$
|
||||||
|
?~ wil
|
||||||
|
[ust %give %mean ~ %rejected ~]~
|
||||||
|
:~ [ust %pass / %a %cash his mac u.wil]
|
||||||
|
[ust %pass / %c %plug our.hid %main (sein our.hid) %main]
|
||||||
|
[ust %pass / %c %plug our.hid %arvo (sein our.hid) %arvo]
|
||||||
|
[ust %pass / %c %plug our.hid %try (sein our.hid) %try]
|
||||||
|
[ust %give %nice ~]
|
||||||
|
==
|
||||||
--
|
--
|
||||||
|
@ -221,12 +221,12 @@
|
|||||||
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs".
|
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs".
|
||||||
"/jquery/2.1.1/jquery.min.js");
|
"/jquery/2.1.1/jquery.min.js");
|
||||||
;script:'try{Typekit.load();}catch(e){}'
|
;script:'try{Typekit.load();}catch(e){}'
|
||||||
;link(rel "stylesheet", type "text/css", href "/gen/main/pub/src/chat/main.css");
|
;link(rel "stylesheet", type "text/css", href "/main/pub/src/chat/main.css");
|
||||||
==
|
==
|
||||||
;body
|
;body
|
||||||
;div#c;
|
;div#c;
|
||||||
;script(type "text/javascript", src "/gen/main/lib/urb.js");
|
;script(type "text/javascript", src "/main/lib/urb.js");
|
||||||
;script(type "text/javascript", src "/gen/main/pub/src/chat/main.js");
|
;script(type "text/javascript", src "/main/pub/src/chat/main.js");
|
||||||
==
|
==
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
|
736
main/app/dojo/core.hook
Normal file
736
main/app/dojo/core.hook
Normal file
@ -0,0 +1,736 @@
|
|||||||
|
:: :: ::
|
||||||
|
:::: /hook/core/dojo/app :: ::::
|
||||||
|
:: :: ::
|
||||||
|
/? 314 :: arvo kelvin
|
||||||
|
/- *sole :: console structures
|
||||||
|
/+ sole :: console library
|
||||||
|
:: :: ::
|
||||||
|
:::: :: ::::
|
||||||
|
!: :: ::
|
||||||
|
=> |% :: external structures
|
||||||
|
++ house :: all state
|
||||||
|
$: hoc=(map bone session) :: conversations
|
||||||
|
== ::
|
||||||
|
++ session :: per conversation
|
||||||
|
$: say=sole-share :: command-line state
|
||||||
|
syd=desk :: active desk
|
||||||
|
luc=(unit case) :: special case
|
||||||
|
poy=(unit dojo-project) :: working
|
||||||
|
var=(map term cage) :: variable state
|
||||||
|
old=(set term) :: used TLVs
|
||||||
|
== ::
|
||||||
|
++ dojo-command ::
|
||||||
|
$% [%flat p=path q=dojo-source] :: noun to unix atom
|
||||||
|
[%pill p=path q=dojo-source] :: noun to unix pill
|
||||||
|
:: [%tree p=path q=dojo-source] :: noun to unix tree
|
||||||
|
[%poke p=goal q=dojo-source] :: make and poke
|
||||||
|
[%show p=dojo-source] :: print
|
||||||
|
[%verb p=term q=dojo-source] :: store variable
|
||||||
|
== ::
|
||||||
|
++ dojo-source :: construction node
|
||||||
|
$: p=@ud :: assembly index
|
||||||
|
q=dojo-build :: general build
|
||||||
|
== ::
|
||||||
|
++ dojo-build :: one ford step
|
||||||
|
$% [%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
|
||||||
|
[%sc p=dojo-model] :: script
|
||||||
|
[%tu p=(list dojo-source)] :: tuple
|
||||||
|
[%va p=term] :: dojo variable
|
||||||
|
== ::
|
||||||
|
++ dojo-filter :: pipeline filter
|
||||||
|
$% [%a p=twig] :: function gate
|
||||||
|
[%b p=mark] :: simple transmute
|
||||||
|
[%c p=dojo-model] :: formal filter
|
||||||
|
== ::
|
||||||
|
++ dojo-model :: data construction
|
||||||
|
$: p=dojo-server :: core source
|
||||||
|
q=dojo-config :: configuration
|
||||||
|
== ::
|
||||||
|
++ dojo-server :: numbered device
|
||||||
|
$: p=@ud :: assembly index
|
||||||
|
q=path :: gate path
|
||||||
|
== ::
|
||||||
|
++ dojo-config :: configuration
|
||||||
|
$: p=(list dojo-source) :: by order
|
||||||
|
q=(map term (unit dojo-source)) :: by keyword
|
||||||
|
== ::
|
||||||
|
++ dojo-project :: construction state
|
||||||
|
$: mad=dojo-command :: operation
|
||||||
|
num=@ud :: number of tasks
|
||||||
|
cud=(unit dojo-source) :: now solving
|
||||||
|
pux=(unit path) :: ford working
|
||||||
|
pro=(unit vase) :: prompting loop
|
||||||
|
per=(unit sole-edit) :: pending reverse
|
||||||
|
job=(map ,@ud dojo-build) :: problems
|
||||||
|
rez=(map ,@ud cage) :: results
|
||||||
|
== ::
|
||||||
|
++ bead ,[p=(set beam) q=cage] :: computed result
|
||||||
|
++ goal ,[p=ship q=term] :: flat application
|
||||||
|
++ gift :: out result <-$
|
||||||
|
$% [%mean p=ares] :: error
|
||||||
|
[%nice ~] :: acknowledge
|
||||||
|
[%rush %sole-effect sole-effect] ::
|
||||||
|
== ::
|
||||||
|
++ hapt ,[p=ship q=path] ::
|
||||||
|
++ move ,[p=bone q=(mold note gift)] ::
|
||||||
|
++ hood :: assembly plan
|
||||||
|
$: zus=@ud :: zuse kelvin
|
||||||
|
sur=(list hoot) :: structures
|
||||||
|
lib=(list hoof) :: libraries
|
||||||
|
fan=(list horn) :: resources
|
||||||
|
src=(list hoop) :: program
|
||||||
|
== ::
|
||||||
|
++ hoof (pair term (unit (pair case ship))) :: resource reference
|
||||||
|
++ hoot (pair bean hoof) :: structure gate/core
|
||||||
|
++ hoop :: source in hood
|
||||||
|
$% [%& p=twig] :: direct twig
|
||||||
|
[%| p=beam] :: resource location
|
||||||
|
== ::
|
||||||
|
++ horn :: resource tree
|
||||||
|
$% [%ape p=twig] :: /~ twig by hand
|
||||||
|
[%arg p=twig] :: /$ argument
|
||||||
|
[%day p=horn] :: /| list by @dr
|
||||||
|
[%dub p=term q=horn] :: /= apply face
|
||||||
|
[%fan p=(list horn)] :: /. list
|
||||||
|
[%for p=path q=horn] :: /, descend
|
||||||
|
[%hel p=@ud q=horn] :: /% propagate heel
|
||||||
|
[%hub p=horn] :: /@ list by @ud
|
||||||
|
[%man p=(map span horn)] :: /* hetero map
|
||||||
|
[%nap p=horn] :: /_ homo map
|
||||||
|
[%now p=horn] :: /& list by @da
|
||||||
|
[%saw p=twig q=horn] :: /; operate on
|
||||||
|
[%see p=beam q=horn] :: /: relative to
|
||||||
|
[%sic p=tile q=horn] :: /^ cast
|
||||||
|
[%toy p=mark] :: /mark/ static
|
||||||
|
== ::
|
||||||
|
++ silk :: construction layer
|
||||||
|
$& [p=silk q=silk] :: cons
|
||||||
|
$% [%bake p=mark q=beam r=path] :: local synthesis
|
||||||
|
[%boil p=mark q=beam r=path] :: general synthesis
|
||||||
|
[%call p=silk q=silk] :: slam
|
||||||
|
[%cast p=mark q=silk] :: translate
|
||||||
|
[%done p=(set beam) q=cage] :: literal
|
||||||
|
[%dude p=tank q=silk] :: error wrap
|
||||||
|
[%dune p=(set beam) q=(unit cage)] :: unit literal
|
||||||
|
[%mute p=silk q=(list (pair wing silk))] :: mutant
|
||||||
|
[%plan p=beam q=spur r=hood] :: structured assembly
|
||||||
|
[%reef ~] :: kernel reef
|
||||||
|
[%ride p=twig q=silk] :: silk thru twig
|
||||||
|
[%vale p=mark q=ship r=*] :: validate [our his]
|
||||||
|
== ::
|
||||||
|
++ note-ford :: note to ford
|
||||||
|
$% [%exec p=@p q=beak r=(unit silk)] :: make / kill
|
||||||
|
== ::
|
||||||
|
++ note-gall :: note to %gall
|
||||||
|
$% [%mess p=[p=ship q=path] q=ship r=cage] ::
|
||||||
|
== ::
|
||||||
|
++ sign-gall :: sign from %gall
|
||||||
|
$% [%mean p=ares] ::
|
||||||
|
[%nice ~] ::
|
||||||
|
== ::
|
||||||
|
++ sign-ford :: sign from ford
|
||||||
|
$% [%made p=@uvH q=(each gage tang)] :: computed result
|
||||||
|
== ::
|
||||||
|
++ note :: out request $->
|
||||||
|
$% [%f note-ford] ::
|
||||||
|
[%g note-gall] ::
|
||||||
|
== ::
|
||||||
|
++ sign :: in result $<-
|
||||||
|
$% [%f sign-ford] ::
|
||||||
|
[%g sign-gall] ::
|
||||||
|
== ::
|
||||||
|
-- ::
|
||||||
|
:: ::
|
||||||
|
:::: ::
|
||||||
|
:: ::
|
||||||
|
|_ $: hid=hide :: system state
|
||||||
|
house :: program state
|
||||||
|
== ::
|
||||||
|
++ he :: per session
|
||||||
|
|_ [[ost=bone moz=(list move)] session] ::
|
||||||
|
++ dp :: dojo parser
|
||||||
|
|%
|
||||||
|
++ dp-command :: ++dojo-command
|
||||||
|
%+ knee *dojo-command |. ~+
|
||||||
|
;~ pose
|
||||||
|
%+ stag %poke
|
||||||
|
;~ pfix col
|
||||||
|
%+ cook
|
||||||
|
|= [a=goal b=(each dojo-source (trel term path dojo-config))]
|
||||||
|
^- (pair goal dojo-source)
|
||||||
|
:- 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
|
||||||
|
dp-goal
|
||||||
|
;~ pose
|
||||||
|
(stag %& ;~(pfix ace dp-source))
|
||||||
|
%+ stag %|
|
||||||
|
;~ plug
|
||||||
|
;~ pose
|
||||||
|
(cold %di wut)
|
||||||
|
(cold %ge lus)
|
||||||
|
(cold %sc pam)
|
||||||
|
==
|
||||||
|
(most fas sym)
|
||||||
|
dp-config
|
||||||
|
==
|
||||||
|
==
|
||||||
|
==
|
||||||
|
==
|
||||||
|
::
|
||||||
|
%+ stag %verb
|
||||||
|
;~ pfix tis
|
||||||
|
;~(plug sym ;~(pfix ace dp-source))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
%+ stag %flat
|
||||||
|
;~ pfix pat
|
||||||
|
;~(plug (most fas sym) ;~(pfix ace dp-source))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
%+ stag %pill
|
||||||
|
;~ pfix dot
|
||||||
|
;~(plug (most fas sym) ;~(pfix ace dp-source))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
(stag %show dp-source)
|
||||||
|
==
|
||||||
|
++ dp-source (stag 0 dp-build) :: ++dojo-source
|
||||||
|
++ dp-build :: ++dojo-build
|
||||||
|
%+ knee *dojo-build |. ~+
|
||||||
|
;~ pose
|
||||||
|
;~(pfix lus (stag %ge dp-model-cat))
|
||||||
|
;~(pfix wut (stag %di dp-model-dog))
|
||||||
|
;~(pfix pam (stag %sc dp-model-pig))
|
||||||
|
;~(pfix buc (stag %va sym))
|
||||||
|
(stag %ex dp-twig)
|
||||||
|
(ifix [sel ser] (stag %tu (most ace dp-source)))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ dp-goal :: ++goal
|
||||||
|
%+ cook |=(a=goal a)
|
||||||
|
;~ pose
|
||||||
|
;~ plug
|
||||||
|
;~(pfix sig fed:ag)
|
||||||
|
;~(pfix fas sym)
|
||||||
|
==
|
||||||
|
(cook |=(a=term `goal`[our.hid a]) sym)
|
||||||
|
==
|
||||||
|
++ dp-model-cat ;~(plug dp-server-cat dp-config) :: ++dojo-model
|
||||||
|
++ dp-model-dog ;~(plug dp-server-dog dp-config) :: ++dojo-model
|
||||||
|
++ dp-model-pig ;~(plug dp-server-pig dp-config) :: ++dojo-model
|
||||||
|
++ dp-server-cat (stag 0 (stag %cat dp-device)) :: ++dojo-server
|
||||||
|
++ dp-server-dog (stag 0 (stag %dog dp-device)) :: ++dojo-server
|
||||||
|
++ dp-server-pig (stag 0 (stag %pig dp-device)) :: ++dojo-server
|
||||||
|
++ dp-twig wide:(vang | ~) :: ++twig
|
||||||
|
++ dp-device (most fas sym) :: ++dojo-device
|
||||||
|
++ dp-value :: ++dojo-source
|
||||||
|
%+ cook |=(a=dojo-source a)
|
||||||
|
%+ stag 0
|
||||||
|
;~ pose
|
||||||
|
(ifix [kel ker] (stag %tu (most ace dp-source)))
|
||||||
|
(stag %va ;~(pfix buc sym))
|
||||||
|
(stag %ex dp-twig)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ dp-config :: ++dojo-config
|
||||||
|
%+ cook |=(a=dojo-config a)
|
||||||
|
;~ plug
|
||||||
|
(star ;~(pfix ace dp-value))
|
||||||
|
%+ cook
|
||||||
|
~(gas by *(map term (unit dojo-source)))
|
||||||
|
%+ more
|
||||||
|
;~(plug com ace)
|
||||||
|
;~ plug
|
||||||
|
;~(pfix tis sym)
|
||||||
|
;~ pose
|
||||||
|
;~(pfix ace (stag ~ dp-value))
|
||||||
|
(easy ~)
|
||||||
|
==
|
||||||
|
==
|
||||||
|
==
|
||||||
|
--
|
||||||
|
::
|
||||||
|
++ dy :: project work
|
||||||
|
|_ dojo-project ::
|
||||||
|
++ dy-abet +>(poy `+<) :: resolve
|
||||||
|
++ dy-amok +>(poy ~) :: terminate
|
||||||
|
++ dy-ford :: send work to ford
|
||||||
|
|= [pax=path kas=silk]
|
||||||
|
^+ +>+>
|
||||||
|
?> ?=(~ pux)
|
||||||
|
=+ bek=[our.hid %main %da lat.hid]
|
||||||
|
(he-pass(poy `+>+<.$(pux `pax)) pax %f %exec our.hid bek `kas)
|
||||||
|
::
|
||||||
|
++ dy-stop :: stop work
|
||||||
|
^+ +>
|
||||||
|
?~ pux +>
|
||||||
|
=+ bek=[our.hid %main %da lat.hid]
|
||||||
|
(he-pass(poy ~) u.pux %f %exec our.hid bek ~)
|
||||||
|
::
|
||||||
|
++ dy-slam :: call by ford
|
||||||
|
|= [pax=path gat=vase sam=vase]
|
||||||
|
^+ +>+>
|
||||||
|
(dy-ford pax %call [%done ~ %noun gat] [%done ~ %noun sam])
|
||||||
|
::
|
||||||
|
++ dy-rush :: send effects, abet
|
||||||
|
|= fec=sole-effect
|
||||||
|
^+ +>+>
|
||||||
|
(he-rush(poy `+>+<) fec)
|
||||||
|
::
|
||||||
|
++ dy-rash :: send effects, amok
|
||||||
|
|= fec=sole-effect
|
||||||
|
^+ +>+>
|
||||||
|
(he-rush(poy ~) fec)
|
||||||
|
::
|
||||||
|
++ dy-init-command :: ++dojo-command
|
||||||
|
|= mad=dojo-command
|
||||||
|
^+ [mad +>]
|
||||||
|
?- -.mad
|
||||||
|
%flat =^(src +>.$ (dy-init-source q.mad) [[%flat p.mad src] +>.$])
|
||||||
|
%pill =^(src +>.$ (dy-init-source q.mad) [[%pill p.mad src] +>.$])
|
||||||
|
%poke =^(src +>.$ (dy-init-source q.mad) [[%poke p.mad src] +>.$])
|
||||||
|
%show =^(src +>.$ (dy-init-source p.mad) [[%show src] +>.$])
|
||||||
|
%verb =^(src +>.$ (dy-init-source q.mad) [[%verb p.mad src] +>.$])
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ dy-init-source-unit :: (unit dojo-source)
|
||||||
|
|= urc=(unit dojo-source)
|
||||||
|
^+ [urc +>]
|
||||||
|
?~ urc [~ +>]
|
||||||
|
=^ src +> (dy-init-source u.urc)
|
||||||
|
[`src +>.$]
|
||||||
|
::
|
||||||
|
++ dy-init-source :: ++dojo-source
|
||||||
|
|= src=dojo-source
|
||||||
|
^+ [src +>]
|
||||||
|
=^ bul +> (dy-init-build q.src)
|
||||||
|
=: p.src num
|
||||||
|
q.src bul
|
||||||
|
==
|
||||||
|
[src +>.$(num +(num), job (~(put by job) num q.src))]
|
||||||
|
::
|
||||||
|
++ dy-init-build :: ++dojo-build
|
||||||
|
|= bul=dojo-build
|
||||||
|
^+ [bul +>]
|
||||||
|
?- -.bul
|
||||||
|
%ex [bul +>.$]
|
||||||
|
%di =^(mod +>.$ (dy-init-model p.bul) [[%di mod] +>.$])
|
||||||
|
%dv [bul +>.$]
|
||||||
|
%fi !!
|
||||||
|
%ge =^(mod +>.$ (dy-init-model p.bul) [[%ge mod] +>.$])
|
||||||
|
%sc !!
|
||||||
|
%tu =^ dof +>.$
|
||||||
|
|- ^+ [p.bul +>.^$]
|
||||||
|
?~ p.bul [~ +>.^$]
|
||||||
|
=^ dis +>.^$ (dy-init-source i.p.bul)
|
||||||
|
=^ mor +>.^$ $(p.bul t.p.bul)
|
||||||
|
[[dis mor] +>.^$]
|
||||||
|
[[%tu dof] +>.$]
|
||||||
|
%va [bul +>.$]
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ dy-init-model :: ++dojo-model
|
||||||
|
|= mol=dojo-model
|
||||||
|
^+ [mol +>]
|
||||||
|
=^ one +>.$ (dy-init-server p.mol)
|
||||||
|
=^ two +>.$ (dy-init-config q.mol)
|
||||||
|
[[one two] +>.$]
|
||||||
|
::
|
||||||
|
++ dy-init-server :: ++dojo-server
|
||||||
|
|= srv=dojo-server
|
||||||
|
=. p.srv num
|
||||||
|
[srv +>.$(num +(num), job (~(put by job) num [%dv q.srv]))]
|
||||||
|
::
|
||||||
|
++ dy-init-config :: prepare config
|
||||||
|
|= cig=dojo-config
|
||||||
|
^+ [cig +>]
|
||||||
|
=^ ord +>.$ (dy-init-ordered p.cig)
|
||||||
|
=^ key +>.$ (dy-init-named q.cig)
|
||||||
|
[[ord key] +>.$]
|
||||||
|
::
|
||||||
|
++ dy-init-ordered :: (list dojo-source)
|
||||||
|
|= ord=(list dojo-source)
|
||||||
|
^+ [ord +>]
|
||||||
|
?~ ord [~ +>.$]
|
||||||
|
=^ fir +>.$ (dy-init-source i.ord)
|
||||||
|
=^ mor +>.$ $(ord t.ord)
|
||||||
|
[[fir mor] +>.$]
|
||||||
|
::
|
||||||
|
++ dy-init-named :: (map @tas dojo-src)
|
||||||
|
|= key=(map term (unit dojo-source))
|
||||||
|
^+ [key +>.$]
|
||||||
|
?~ key [~ +>.$]
|
||||||
|
=^ top +>.$ (dy-init-source-unit q.n.key)
|
||||||
|
=^ lef +>.$ $(key l.key)
|
||||||
|
=^ rit +>.$ $(key r.key)
|
||||||
|
[[[p.n.key top] lef rit] +>.$]
|
||||||
|
::
|
||||||
|
++ dy-init :: full initialize
|
||||||
|
^+ .
|
||||||
|
=^(dam . (dy-init-command mad) +(mad dam))
|
||||||
|
::
|
||||||
|
++ dy-hand :: complete step
|
||||||
|
|= cag=cage
|
||||||
|
^+ +>+>
|
||||||
|
?> ?=(^ cud)
|
||||||
|
(dy-step(cud ~, rez (~(put by rez) p.u.cud cag)) +(p.u.cud))
|
||||||
|
::
|
||||||
|
++ dy-meal :: vase to cage
|
||||||
|
|= vax=vase
|
||||||
|
?. &(?=(@ -.q.vax) ((sane %tas) -.q.vax))
|
||||||
|
~& %dy-meal-cage
|
||||||
|
(dy-rash %bel ~)
|
||||||
|
(dy-hand -.q.vax (slot 3 vax))
|
||||||
|
::
|
||||||
|
++ dy-made-edit :: sole edit
|
||||||
|
|= cag=cage
|
||||||
|
^+ +>+>
|
||||||
|
?> ?=(^ per)
|
||||||
|
?: ?| ?=(^ q.q.cag)
|
||||||
|
=((lent buf.say) q.q.cag)
|
||||||
|
!&(?=(%del -.u.per) =(+(p.u.per) (lent buf.say)))
|
||||||
|
==
|
||||||
|
dy-abet(per ~)
|
||||||
|
=^ lic say (~(transmit cs say) u.per)
|
||||||
|
(dy-rush(per ~) %mor [%det lic] [%err q.q.cag] ~)
|
||||||
|
::
|
||||||
|
++ dy-done :: dialog submit
|
||||||
|
|= txt=tape
|
||||||
|
?> ?=(^ pro)
|
||||||
|
(dy-slam /dial u.pro !>(txt))
|
||||||
|
::
|
||||||
|
++ dy-over :: finish construction
|
||||||
|
^+ +>
|
||||||
|
?- -.mad
|
||||||
|
%poke
|
||||||
|
%- he-pass(poy ~)
|
||||||
|
:* /poke
|
||||||
|
%g
|
||||||
|
%mess
|
||||||
|
[p.p.mad [q.p.mad ~]]
|
||||||
|
our.hid
|
||||||
|
(~(got by rez) p.q.mad)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
%flat
|
||||||
|
=+ out=q.q:(~(got by rez) p.q.mad)
|
||||||
|
?^ out
|
||||||
|
(dy-rash %tan [%leaf "not an atom"]~)
|
||||||
|
(dy-rash %sav p.mad out)
|
||||||
|
::
|
||||||
|
%pill
|
||||||
|
(dy-rash %sag p.mad q.q:(~(got by rez) p.q.mad))
|
||||||
|
::
|
||||||
|
%verb
|
||||||
|
dy-amok(var (~(put by var) p.mad (~(got by rez) p.q.mad)))
|
||||||
|
::
|
||||||
|
%show
|
||||||
|
(dy-rash %tan (sell q:(~(got by rez) p.p.mad)) ~)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ dy-edit :: handle edit
|
||||||
|
|= cal=sole-change
|
||||||
|
^+ +>+>
|
||||||
|
=^ dat say (~(transceive cs say) cal)
|
||||||
|
?: |(?=(^ per) ?=(^ pux) ?=(~ pro))
|
||||||
|
~& %dy-edit-busy
|
||||||
|
=^ lic say (~(transmit cs say) dat)
|
||||||
|
(dy-rush %mor [%det lic] [%bel ~] ~)
|
||||||
|
(dy-slam(per `dat) /edit u.pro !>((tufa buf.say)))
|
||||||
|
::
|
||||||
|
++ dy-type :: sole action
|
||||||
|
|= act=sole-action
|
||||||
|
?- -.act
|
||||||
|
%det (dy-edit +.act)
|
||||||
|
%ret (dy-done (tufa buf.say))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ dy-cage |=(num=@ud (~(got by rez) num)) :: known cage
|
||||||
|
++ dy-vase |=(num=@ud q:(dy-cage num)) :: known vase
|
||||||
|
++ dy-silk-vase |=(vax=vase [%done ~ %noun vax]) :: vase to silk
|
||||||
|
++ dy-silk-config :: configure
|
||||||
|
|= [cag=cage cig=dojo-config]
|
||||||
|
^- silk
|
||||||
|
:+ %ride [%cnzy %$]
|
||||||
|
:+ %mute [%done ~ cag]
|
||||||
|
^- (list (pair wing silk))
|
||||||
|
:* :- [[~ 12] ~]
|
||||||
|
(dy-silk-vase !>([now=lat.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
|
||||||
|
|= [cag=cage cig=dojo-config]
|
||||||
|
^- silk
|
||||||
|
(dy-silk-config cag cig)
|
||||||
|
::
|
||||||
|
++ dy-silk-device :: device to silk
|
||||||
|
|= pax=path
|
||||||
|
^- silk
|
||||||
|
[%boil %gate [he-beak (flop pax)] ~]
|
||||||
|
::
|
||||||
|
++ dy-made-dial :: dialog product
|
||||||
|
|= cag=cage
|
||||||
|
^+ +>+>
|
||||||
|
?. ?=(^ q.q.cag)
|
||||||
|
(dy-rush %err q.q.cag)
|
||||||
|
=+ tan=((list tank) +2.q.q.cag)
|
||||||
|
=. +>+>.$ (he-rush %tan tan)
|
||||||
|
=+ vax=(spec (slot 3 q.cag))
|
||||||
|
?+ -.q.vax !!
|
||||||
|
%&
|
||||||
|
?~ +.q.vax
|
||||||
|
~& %dy-made-dial-abort
|
||||||
|
(dy-rash %bel ~)
|
||||||
|
(dy-meal (slot 7 vax))
|
||||||
|
::
|
||||||
|
%|
|
||||||
|
=< he-pone
|
||||||
|
%- dy-rush(pro `(slap (slot 7 vax) [%cnzy %q]))
|
||||||
|
=+ pom=(sole-prompt +<.q.vax)
|
||||||
|
[%pro pom(cad [':' ' ' cad.pom])]
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ dy-made-gent :: generator product
|
||||||
|
|= cag=cage
|
||||||
|
(dy-meal q.cag)
|
||||||
|
::
|
||||||
|
++ dy-make :: build step
|
||||||
|
^+ +>
|
||||||
|
?> ?=(^ cud)
|
||||||
|
%- dy-ford
|
||||||
|
^- (pair path silk)
|
||||||
|
?+ -.q.u.cud !!
|
||||||
|
%di [/dial (dy-silk-init-modo (dy-cage p.p.p.q.u.cud) q.p.q.u.cud)]
|
||||||
|
%ge [/gent (dy-silk-init-modo (dy-cage p.p.p.q.u.cud) q.p.q.u.cud)]
|
||||||
|
%dv [/hand (dy-silk-device p.q.u.cud)]
|
||||||
|
%ex [/hand [%ride p.q.u.cud [%reef ~]]]
|
||||||
|
%tu :- /hand
|
||||||
|
:+ %done ~
|
||||||
|
:- %noun
|
||||||
|
|- ^- vase
|
||||||
|
?~ p.q.u.cud !!
|
||||||
|
=+ hed=(dy-vase p.i.p.q.u.cud)
|
||||||
|
?~ t.p.q.u.cud hed
|
||||||
|
(slop hed $(p.q.u.cud t.p.q.u.cud))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ dy-step :: advance project
|
||||||
|
|= nex=@ud
|
||||||
|
^+ +>+>
|
||||||
|
?> ?=(~ cud)
|
||||||
|
?: =(nex num)
|
||||||
|
dy-over
|
||||||
|
dy-make(cud `[nex (~(got by job) nex)])
|
||||||
|
--
|
||||||
|
::
|
||||||
|
++ he-dope :: sole user of ++dp
|
||||||
|
|= txt=tape ::
|
||||||
|
^- (each (unit dojo-command) hair) :: prefix/result
|
||||||
|
=+ vex=(dp-command:dp [1 1] txt) ::
|
||||||
|
?. =(+((lent txt)) q.p.vex) :: fully parsed
|
||||||
|
[%| p.p.vex (dec q.p.vex)] :: syntax error
|
||||||
|
[%& ?~(q.vex ~ `p.u.q.vex)] :: prefix/complete
|
||||||
|
::
|
||||||
|
++ he-duke :: ++he-dope variant
|
||||||
|
|= txt=tape
|
||||||
|
^- (each dojo-command ,@ud)
|
||||||
|
=+ foy=(he-dope txt)
|
||||||
|
?- -.foy
|
||||||
|
%| [%| q.p.foy]
|
||||||
|
%& ?~(p.foy [%| (lent txt)] [%& u.p.foy])
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ he-abet :: resolve
|
||||||
|
[(flop moz) %_(+> hoc (~(put by hoc) ost +<+))]
|
||||||
|
::
|
||||||
|
++ he-beak :: logical beam
|
||||||
|
^- beak
|
||||||
|
[our.hid syd ?^(luc u.luc [%da lat.hid])]
|
||||||
|
::
|
||||||
|
++ he-give :: emit gift
|
||||||
|
|= git=gift
|
||||||
|
^+ +>
|
||||||
|
%_(+> moz [[ost %give git] moz])
|
||||||
|
::
|
||||||
|
++ he-pass
|
||||||
|
|= [pax=path noy=note]
|
||||||
|
%_(+> moz [[ost %pass pax noy] moz])
|
||||||
|
::
|
||||||
|
++ he-rush :: emit update
|
||||||
|
|= fec=sole-effect
|
||||||
|
^+ +>
|
||||||
|
(he-give %rush %sole-effect fec)
|
||||||
|
::
|
||||||
|
++ he-stop :: abort work
|
||||||
|
^+ .
|
||||||
|
?~(poy . ~(dy-stop dy u.poy))
|
||||||
|
::
|
||||||
|
++ he-peer :: subscribe to
|
||||||
|
he-prom
|
||||||
|
::
|
||||||
|
++ he-pine :: restore prompt
|
||||||
|
^+ .
|
||||||
|
?^ poy .
|
||||||
|
he-prom:he-pone
|
||||||
|
::
|
||||||
|
++ he-pone :: clear prompt
|
||||||
|
^+ .
|
||||||
|
=^ cal say (~(transmit cs say) [%set ~])
|
||||||
|
(he-rush %mor [%det cal] ~)
|
||||||
|
::
|
||||||
|
++ he-prom :: send prompt
|
||||||
|
%- he-rush
|
||||||
|
:- %pro
|
||||||
|
[& %$ "> "]
|
||||||
|
::
|
||||||
|
++ he-made :: result from ford
|
||||||
|
|= [pax=path dep=@uvH rey=(each gage tang)]
|
||||||
|
^+ +>
|
||||||
|
?> ?=(^ poy)
|
||||||
|
=< he-pine
|
||||||
|
?- -.rey
|
||||||
|
%& ?> ?=(@ p.p.rey)
|
||||||
|
%. p.rey
|
||||||
|
=+ dye=~(. dy u.poy(pux ~))
|
||||||
|
?+ pax !!
|
||||||
|
[%hand ~] dy-hand:dye
|
||||||
|
[%dial ~] dy-made-dial:dye
|
||||||
|
[%gent ~] dy-made-gent:dye
|
||||||
|
[%edit ~] dy-made-edit:dye
|
||||||
|
==
|
||||||
|
%| ~& [%he-made-fail pax]
|
||||||
|
(he-rush(poy ~) %tan p.rey)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ he-like :: accept line
|
||||||
|
|= buf=(list ,@c)
|
||||||
|
=(%& -:(he-dope (tufa buf)))
|
||||||
|
::
|
||||||
|
++ he-stir :: apply change
|
||||||
|
|= cal=sole-change
|
||||||
|
^+ +>
|
||||||
|
:: ~& [%his-clock ler.cal]
|
||||||
|
:: ~& [%our-clock ven.say]
|
||||||
|
=^ dat say (~(transceive cs say) cal)
|
||||||
|
?. ?& ?=(%del -.dat)
|
||||||
|
=(+(p.dat) (lent buf.say))
|
||||||
|
==
|
||||||
|
+>.$
|
||||||
|
=+ foy=(he-dope (tufa buf.say))
|
||||||
|
?: ?=(%& -.foy) +>.$
|
||||||
|
:: ~& [%bad-change dat ted.cal]
|
||||||
|
=^ lic say (~(transmit cs say) dat)
|
||||||
|
:: ~& [%our-leg leg.say]
|
||||||
|
(he-rush %mor [%det lic] [%err q.p.foy] ~)
|
||||||
|
::
|
||||||
|
++ he-plan :: execute command
|
||||||
|
|= mad=dojo-command
|
||||||
|
^+ +>
|
||||||
|
?> ?=(~ poy)
|
||||||
|
he-pine:(dy-step:~(dy-init dy mad [0 ~ ~ ~ ~ ~ ~]) 0)
|
||||||
|
::
|
||||||
|
++ he-done :: parse command
|
||||||
|
|= txt=tape
|
||||||
|
^+ +>
|
||||||
|
?~ txt
|
||||||
|
%- he-rush
|
||||||
|
:~ %mor
|
||||||
|
[%txt "> "]
|
||||||
|
[%nex ~]
|
||||||
|
==
|
||||||
|
=+ doy=(he-duke txt)
|
||||||
|
?- -.doy
|
||||||
|
%| (he-rush [%err p.doy])
|
||||||
|
%&
|
||||||
|
=+ old=(weld "> " (tufa buf.say))
|
||||||
|
=^ cal say (~(transmit cs say) [%set ~])
|
||||||
|
%. p.doy
|
||||||
|
=< he-plan
|
||||||
|
%- he-rush
|
||||||
|
:~ %mor
|
||||||
|
[%txt old]
|
||||||
|
[%nex ~]
|
||||||
|
[%det cal]
|
||||||
|
==
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ he-type :: apply input
|
||||||
|
|= act=sole-action
|
||||||
|
^+ +>
|
||||||
|
?^ poy
|
||||||
|
he-pine:(~(dy-type dy u.poy) act)
|
||||||
|
?- -.act
|
||||||
|
%det (he-stir +.act)
|
||||||
|
%ret (he-done (tufa buf.say))
|
||||||
|
==
|
||||||
|
--
|
||||||
|
::
|
||||||
|
++ peer
|
||||||
|
|= [ost=bone her=ship pax=path]
|
||||||
|
^- [(list move) _+>]
|
||||||
|
~? !=(her our.hid) [%dojo-peer ost her pax]
|
||||||
|
?< (~(has by hoc) ost)
|
||||||
|
?> =(/sole pax)
|
||||||
|
:: ?> =(her our.hid)
|
||||||
|
=< he-abet
|
||||||
|
%~ he-peer he
|
||||||
|
:- [ost ~]
|
||||||
|
^- session
|
||||||
|
:* *sole-share :: say=sole-share
|
||||||
|
%main :: syd=desk
|
||||||
|
~ :: luc=(unit case)
|
||||||
|
~ :: poy=(unit dojo-project)
|
||||||
|
~ :: var=(map term cage)
|
||||||
|
~ :: old=(set term)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ poke-sole-action
|
||||||
|
|= [ost=bone her=ship act=sole-action]
|
||||||
|
^- [(list move) _+>]
|
||||||
|
:: ~? !=(her our.hid) [%dojo-poke ost her]
|
||||||
|
he-abet:(~(he-type he [ost [ost %give %nice ~]~] (~(got by hoc) ost)) act)
|
||||||
|
::
|
||||||
|
++ pour
|
||||||
|
|= [ost=bone pax=path sih=sign]
|
||||||
|
^- [(list move) _+>]
|
||||||
|
:: ~& [%dojo-pour pax]
|
||||||
|
?- -.sih
|
||||||
|
%f
|
||||||
|
he-abet:(~(he-made he [[ost ~] (~(got by hoc) ost)]) pax +>.sih)
|
||||||
|
::
|
||||||
|
%g
|
||||||
|
[~ +>.$]
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ pull
|
||||||
|
|= ost=bone
|
||||||
|
^- [(list move) _+>]
|
||||||
|
=^ moz +>
|
||||||
|
he-abet:~(he-stop he [[ost ~] (~(got by hoc) ost)])
|
||||||
|
[moz +>.$(hoc (~(del by hoc) ost))]
|
||||||
|
--
|
201
main/app/helm/core.hook
Normal file
201
main/app/helm/core.hook
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
:: :: ::
|
||||||
|
:::: /hook/core/helm/app :: ::
|
||||||
|
:: :: ::
|
||||||
|
/? 314 :: zuse version
|
||||||
|
/- *sole :: structures
|
||||||
|
/+ sole :: libraries
|
||||||
|
:: :: ::
|
||||||
|
:::: :: ::
|
||||||
|
!: :: ::
|
||||||
|
=> |% :: principal structures
|
||||||
|
++ helm-house :: all state
|
||||||
|
$: %0 :: state version
|
||||||
|
bur=(unit (pair ship mace)) :: requesting ticket
|
||||||
|
hoc=(map bone helm-session) :: consoles
|
||||||
|
== ::
|
||||||
|
++ helm-session ::
|
||||||
|
$: say=sole-share ::
|
||||||
|
mud=(unit (sole-dialog ,@ud)) ::
|
||||||
|
== ::
|
||||||
|
++ funk (pair ,@ ,@) ::
|
||||||
|
++ begs ,[his=@p tic=@p eny=@t ges=gens] :: begin data
|
||||||
|
++ helm-wish ::
|
||||||
|
$| $? %reset :: reset kernel
|
||||||
|
%verb :: verbose mode
|
||||||
|
== ::
|
||||||
|
$% [%reload p=(list term)] :: reload vanes
|
||||||
|
[%sync p=@tas q=@p r=@tas ~] ::
|
||||||
|
== ::
|
||||||
|
++ dill-flog :: sent to %dill
|
||||||
|
$% [%crud p=%hax-init [%leaf p=tape] ~] :: initialize ship
|
||||||
|
[%veer p=@ta q=path r=@t] :: install vane
|
||||||
|
[%vega p=path] :: reboot by path
|
||||||
|
[%verb ~] :: verbose mode
|
||||||
|
== ::
|
||||||
|
:: ::
|
||||||
|
++ gift :: out result <-$
|
||||||
|
$% [%mean p=ares] :: error
|
||||||
|
[%nice ~] :: acknowledge
|
||||||
|
[%rush %sole-effect sole-effect] :: effect
|
||||||
|
== ::
|
||||||
|
++ hapt ,[p=ship q=path] ::
|
||||||
|
++ move ,[p=bone q=(mold note gift)] ::
|
||||||
|
++ note-gall :: note to %gall
|
||||||
|
$% [%mess p=[p=ship q=path] q=ship r=cage] ::
|
||||||
|
[%show p=[p=ship q=path] q=ship r=path] ::
|
||||||
|
[%took p=[p=ship q=path] q=ship] ::
|
||||||
|
== ::
|
||||||
|
++ note-dill :: system command
|
||||||
|
$% [%flog p=dill-flog] ::
|
||||||
|
== ::
|
||||||
|
++ note-clay :: filesystem command
|
||||||
|
$% [%font p=@p q=@tas r=@p s=@tas] ::
|
||||||
|
== ::
|
||||||
|
++ note :: out request $->
|
||||||
|
$% [%c note-clay] ::
|
||||||
|
[%d note-dill] ::
|
||||||
|
[%g note-gall] ::
|
||||||
|
== ::
|
||||||
|
-- ::
|
||||||
|
:: ::
|
||||||
|
:::: ::
|
||||||
|
:: ::
|
||||||
|
|_ $: hid=hide :: system state
|
||||||
|
helm-house :: program state
|
||||||
|
== ::
|
||||||
|
++ he :: per session
|
||||||
|
|_ [[ost=bone moz=(list move)] helm-session] ::
|
||||||
|
++ he-abet :: resolve
|
||||||
|
[(flop moz) %_(+> hoc (~(put by hoc) ost +<+))] ::
|
||||||
|
:: ::
|
||||||
|
++ he-give :: emit gift
|
||||||
|
|= git=gift
|
||||||
|
%_(+> moz [[ost %give git] moz])
|
||||||
|
::
|
||||||
|
++ he-wish-reset
|
||||||
|
^+ .
|
||||||
|
=- %_(+ moz (weld zum moz))
|
||||||
|
^= zum %- flop ^- (list move)
|
||||||
|
=+ top=`path`/(scot %p our.hid)/main/(scot %da lat.hid)/arvo
|
||||||
|
:- [ost %pass /reset %d %flog %vega (weld top `path`/hoon)]
|
||||||
|
%+ turn
|
||||||
|
^- (list ,[p=@tas q=@tas])
|
||||||
|
:~ [%$ %zuse]
|
||||||
|
[%a %ames]
|
||||||
|
[%c %clay]
|
||||||
|
[%d %dill]
|
||||||
|
[%e %eyre]
|
||||||
|
[%f %ford]
|
||||||
|
[%g %gall]
|
||||||
|
[%t %time]
|
||||||
|
==
|
||||||
|
|= [p=@tas q=@tas]
|
||||||
|
=+ pax=`path`(welp top /[q])
|
||||||
|
=+ txt=((hard ,@) .^(%cx (welp pax /hoon)))
|
||||||
|
[ost %pass /reset %d %flog %veer p pax txt]
|
||||||
|
::
|
||||||
|
++ he-wish-reload
|
||||||
|
|= all=(list term)
|
||||||
|
%_ +>.$
|
||||||
|
moz
|
||||||
|
%- weld
|
||||||
|
:_ moz
|
||||||
|
%+ turn all
|
||||||
|
=+ ark=(arch .^(%cy /(scot %p our.hid)/main/(scot %da lat.hid)/arvo))
|
||||||
|
=+ van=(~(tap by r.ark))
|
||||||
|
|= nam=@tas
|
||||||
|
=. nam
|
||||||
|
?. =(1 (met 3 nam))
|
||||||
|
nam
|
||||||
|
=+ ^- zaz=(list ,[p=span ~])
|
||||||
|
(skim van |=([a=term ~] =(nam (end 3 1 a))))
|
||||||
|
?> ?=([[@ ~] ~] zaz)
|
||||||
|
`term`p.i.zaz
|
||||||
|
=+ tip=(end 3 1 nam)
|
||||||
|
=+ pax=[(scot %p our.hid) %main (scot %da lat.hid) %arvo nam %hoon ~]
|
||||||
|
:* ost
|
||||||
|
%pass
|
||||||
|
/reload
|
||||||
|
%d
|
||||||
|
%flog
|
||||||
|
[%veer ?:(=('z' tip) %$ tip) pax (,@ .^(%cx pax))]
|
||||||
|
==
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ he-wish-sync
|
||||||
|
|= [syd=@tas her=@p sud=@tas ~]
|
||||||
|
%_ .
|
||||||
|
moz
|
||||||
|
:_ moz
|
||||||
|
[ost %pass /sync %c %font our.hid syd her sud]
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ he-wish-verb
|
||||||
|
%_ .
|
||||||
|
moz
|
||||||
|
:_ moz
|
||||||
|
[ost %pass /verb %d %flog %verb ~]
|
||||||
|
==
|
||||||
|
++ he-wish-init
|
||||||
|
|= him=ship
|
||||||
|
%_ +>.$
|
||||||
|
moz
|
||||||
|
:_ moz
|
||||||
|
[ost %pass /init %d %flog %crud %hax-init leaf/(scow %p him) ~]
|
||||||
|
==
|
||||||
|
--
|
||||||
|
::
|
||||||
|
++ hake :: poke core
|
||||||
|
|= [ost=bone her=ship]
|
||||||
|
?> =(her our.hid)
|
||||||
|
~(. he [ost [ost %give %nice ~]~] (fall (~(get by hoc) ost) *helm-session))
|
||||||
|
::
|
||||||
|
++ poke-helm-reset
|
||||||
|
|= [ost=bone her=ship ~]
|
||||||
|
~& %poke-helm-reset
|
||||||
|
he-abet:he-wish-reset:(hake ost her)
|
||||||
|
::
|
||||||
|
++ poke-helm-verb
|
||||||
|
|= [ost=bone her=ship ~]
|
||||||
|
~& %poke-helm-verb
|
||||||
|
he-abet:he-wish-verb:(hake ost her)
|
||||||
|
::
|
||||||
|
++ poke-helm-init
|
||||||
|
|= [ost=bone her=ship him=ship]
|
||||||
|
~& %poke-helm-init
|
||||||
|
he-abet:(he-wish-init:(hake ost her) him)
|
||||||
|
::
|
||||||
|
++ poke-helm-reload
|
||||||
|
|= [ost=bone her=ship all=(list term)]
|
||||||
|
~& %poke-helm-reload
|
||||||
|
he-abet:(he-wish-reload:(hake ost her) all)
|
||||||
|
::
|
||||||
|
++ poke-helm-sync
|
||||||
|
|= [ost=bone her=ship all=[@tas @p @tas ~]]
|
||||||
|
~& %poke-helm-sync
|
||||||
|
he-abet:(he-wish-sync:(hake ost her) all)
|
||||||
|
::
|
||||||
|
++ poke-helm-begin
|
||||||
|
|= [ost=bone you=ship begs]
|
||||||
|
~& %poke-helm-begin
|
||||||
|
?> ?=(~ bur)
|
||||||
|
=+ buz=(shax :(mix (jam ges) eny))
|
||||||
|
=+ loy=(bruw 2.048 buz)
|
||||||
|
:_ +>.$(bur `[his [0 sec:ex:loy]~])
|
||||||
|
:~ :* ost %pass /ticketing %a %want [our.hid (sein his)] /q/ta
|
||||||
|
his tic ges pub:ex:loy
|
||||||
|
==
|
||||||
|
[ost %give %nice ~]
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ poke-will
|
||||||
|
|= [ost=bone you=ship wil=(unit will)]
|
||||||
|
?> ?=(^ bur)
|
||||||
|
:_ +>.$(bur ~)
|
||||||
|
?~ wil
|
||||||
|
[ost %give %mean ~ %rejected ~]~
|
||||||
|
:~ [ost %pass / %a %cash p.u.bur q.u.bur u.wil]
|
||||||
|
[ost %pass / %c %plug our.hid %main (sein our.hid) %main]
|
||||||
|
[ost %give %nice ~]
|
||||||
|
==
|
||||||
|
--
|
@ -1,46 +0,0 @@
|
|||||||
:: Hi, send optional message to a ship
|
|
||||||
::
|
|
||||||
:::: /hook/core/hi/bin
|
|
||||||
::
|
|
||||||
/+ sh-utils
|
|
||||||
::
|
|
||||||
::::
|
|
||||||
::
|
|
||||||
|%
|
|
||||||
++ sign ::
|
|
||||||
$% $: %g ::
|
|
||||||
$% [%nice ~] ::
|
|
||||||
[%mean p=ares] ::
|
|
||||||
== == ==
|
|
||||||
++ flog :: sent to %dill
|
|
||||||
$% [%crud p=@tas q=(list tank)] ::
|
|
||||||
[%text p=tape] ::
|
|
||||||
== ::
|
|
||||||
--
|
|
||||||
!:
|
|
||||||
::::
|
|
||||||
::
|
|
||||||
|_ [hid=hide ~]
|
|
||||||
++ peer ,_`.
|
|
||||||
++ poke--args
|
|
||||||
|= [bone you=ship her=ship mes=?(~ [tex=tape ~])]
|
|
||||||
%. +<
|
|
||||||
%+ add-resp
|
|
||||||
=+ mez=[%txt !>(?~(mes '' (crip tex.mes)))]
|
|
||||||
[%pass /hi/(scot %p her) %g %mess [her /hi] you mez]
|
|
||||||
(add-nice ,_`+>.$)
|
|
||||||
::
|
|
||||||
++ poke-txt
|
|
||||||
%- add-nice
|
|
||||||
|= [ost=bone him=ship cor=@t]
|
|
||||||
:_ +>.$
|
|
||||||
[ost %pass /di %d %flog %text "< {<him>}: {(trip cor)}"]~
|
|
||||||
::
|
|
||||||
++ pour
|
|
||||||
|= [ost=bone pax=path sih=sign]
|
|
||||||
?> ?=([%hi @t ~] pax)
|
|
||||||
%. +<
|
|
||||||
=+ ack=?+(+<.sih "unsuccesful" %nice "succesful")
|
|
||||||
(add-exit (print +>.$ "hi {(trip i.t.pax)} {ack}"))
|
|
||||||
::
|
|
||||||
--
|
|
165
main/app/matrix/hymn.hook
Normal file
165
main/app/matrix/hymn.hook
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
:: Matrix GUI
|
||||||
|
::
|
||||||
|
:::: /hook/hymn/matr/app
|
||||||
|
::
|
||||||
|
/? 310
|
||||||
|
|%
|
||||||
|
++ cdnj |=(a=tape ;script(src "//cdnjs.cloudflare.com/ajax/libs/{a}");)
|
||||||
|
--
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
::
|
||||||
|
^- manx
|
||||||
|
;html
|
||||||
|
;head
|
||||||
|
;title: Matrix
|
||||||
|
;* %- turn :_ cdnj ^- wall
|
||||||
|
:~ "jquery/2.1.1/jquery.min.js"
|
||||||
|
"mousetrap/1.4.6/mousetrap.js"
|
||||||
|
"react/0.11.0/react.js"
|
||||||
|
==
|
||||||
|
;script(src "/~/at/main/lib/urb.js");
|
||||||
|
;script: urb.appl = 'sole'
|
||||||
|
;style:'''
|
||||||
|
#term {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
#term * {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
==
|
||||||
|
;body
|
||||||
|
;div#err;
|
||||||
|
;div#term:""
|
||||||
|
;script(type "text/coffeescript") ;- %- trip
|
||||||
|
'''
|
||||||
|
[DOM,recl,rend] = [React.DOM, React.createClass, React.renderComponent]
|
||||||
|
[div, pre] = [DOM.div, DOM.pre]
|
||||||
|
Matr = recl render: ->
|
||||||
|
[pro,cur] = [@props.prompt + " ", @props.cursor + 1]
|
||||||
|
prompt = "#{pro.slice(0,cur)}\u0332#{pro.slice(cur)}"
|
||||||
|
lines = [prompt, @props.rows...]
|
||||||
|
div {}, lines.slice().reverse().map (lin)->
|
||||||
|
pre {}, lin
|
||||||
|
|
||||||
|
$ ->
|
||||||
|
termRev = 0
|
||||||
|
pressed = []
|
||||||
|
deltim = null
|
||||||
|
|
||||||
|
met = $('<pre>').text('m').css(display: 'none').appendTo(term).width()
|
||||||
|
subs = ""
|
||||||
|
# $(window).resize ->
|
||||||
|
# window.termWif = ($(term).width() / met).toFixed()
|
||||||
|
# path = "/new/#{termWif}"
|
||||||
|
# if path is subs
|
||||||
|
# return
|
||||||
|
# if subs
|
||||||
|
# urb.unsubscribe {path:subs}
|
||||||
|
# subs = path
|
||||||
|
# urb.subscribe {path}, (err,dat)->
|
||||||
|
# if err or dat.data.ok
|
||||||
|
# return;
|
||||||
|
# syncRev = dat.data.rev
|
||||||
|
# unless termRev > syncRev
|
||||||
|
# termRev = syncRev
|
||||||
|
# matr.setProps rows: dat.data.stak
|
||||||
|
# document.title = "Matrix" # XX debug
|
||||||
|
# $(window).resize()
|
||||||
|
|
||||||
|
matr = rend (Matr rows:[], prompt:"", cursor:1), term
|
||||||
|
flash = ($el, background)->
|
||||||
|
$el.css {background}
|
||||||
|
if background
|
||||||
|
setTimeout (()-> flash $el,''), 50
|
||||||
|
|
||||||
|
peer = (ruh) ->
|
||||||
|
switch false
|
||||||
|
when !ruh.map then ruh.map peer
|
||||||
|
when !ruh.pro then matr.setProps prompt: ruh.pro
|
||||||
|
when !ruh.hop then matr.setProps cursor: ruh.hop
|
||||||
|
when !ruh.out
|
||||||
|
matr.setProps rows: [ruh.out, matr.props.rows...]
|
||||||
|
when !ruh.act then switch ruh.act
|
||||||
|
when 'clr' then matr.setProps rows:[]
|
||||||
|
when 'bel' then flash ($ 'body'), 'black'
|
||||||
|
else throw "Unknown "+(JSON.stringify ruh)
|
||||||
|
else console.log ruh
|
||||||
|
|
||||||
|
urb.bind "", (err,d)->
|
||||||
|
if d.data then peer d.data
|
||||||
|
|
||||||
|
#later = (data)->
|
||||||
|
# if data
|
||||||
|
# pressed.push data
|
||||||
|
# clearTimeout deltim
|
||||||
|
# setTimeout (->
|
||||||
|
# if urb.reqq.length > 0
|
||||||
|
# return deltim = later()
|
||||||
|
# urb.send data: pressed
|
||||||
|
# pressed = []
|
||||||
|
# ), 500
|
||||||
|
|
||||||
|
Mousetrap.handleKey = (char, mod, e)->
|
||||||
|
norm = {
|
||||||
|
capslock: 'caps'
|
||||||
|
pageup: 'pgup'
|
||||||
|
pagedown: 'pgdn'
|
||||||
|
backspace: 'baxp'
|
||||||
|
enter: 'entr'
|
||||||
|
}
|
||||||
|
key =
|
||||||
|
if char.length is 1
|
||||||
|
if e.type is 'keypress'
|
||||||
|
str: char
|
||||||
|
else if e.type is 'keydown'
|
||||||
|
if char isnt 'space'
|
||||||
|
act: norm[char] ? char
|
||||||
|
else if e.type is 'keyup' and norm[key] is 'caps'
|
||||||
|
act: 'uncap'
|
||||||
|
if key
|
||||||
|
e.preventDefault()
|
||||||
|
urb.send mark: 'dill-belt', data: {mod,key}
|
||||||
|
|
||||||
|
# amod = (arr)->
|
||||||
|
# for i in arr
|
||||||
|
# unless mod.indexOf(i) < 0
|
||||||
|
# return yes
|
||||||
|
# no
|
||||||
|
# if key.str or key.act is 'baxp' or key.act is 'entr'
|
||||||
|
# termRev++
|
||||||
|
# [bot, rest...] = old = matr.props.rows
|
||||||
|
# matr.setProps rows:(
|
||||||
|
# switch key.act
|
||||||
|
# when 'baxp'
|
||||||
|
# if amod ['ctrl', 'meta']
|
||||||
|
# ['', rest...]
|
||||||
|
# else if amod ['alt']
|
||||||
|
# [(bot.replace /\ *[^ ]*$/, ''), rest...]
|
||||||
|
# else if bot and bot.length
|
||||||
|
# [bot.slice(0, -1), rest...]
|
||||||
|
# else if rest[0] and rest[0].length
|
||||||
|
# res = rest.slice()
|
||||||
|
# res[0] = res[0].slice(0, -1)
|
||||||
|
# res
|
||||||
|
# else rest
|
||||||
|
# when 'entr'
|
||||||
|
# ['', old...]
|
||||||
|
# when undefined
|
||||||
|
# if mod.length > 1 or (mod.length and !amod ['shift'])
|
||||||
|
# old
|
||||||
|
# else unless old and bot isnt null
|
||||||
|
# [key.str]
|
||||||
|
# #else if bot.length is termWif
|
||||||
|
# # [key.str, old...]
|
||||||
|
# else [bot + key.str, rest...]
|
||||||
|
# )
|
||||||
|
# document.title = "Matri" # XX debug
|
||||||
|
# later {mod, key}
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
==
|
||||||
|
;+ (cdnj "coffee-script/1.7.1/coffee-script.min.js")
|
||||||
|
== ==
|
@ -1,94 +0,0 @@
|
|||||||
/- mess,user,users,zing,zong
|
|
||||||
!:
|
|
||||||
=> |%
|
|
||||||
++ axle
|
|
||||||
$% [%0 p=(map path ,[p=(list zong) q=(map ship ,?)])]
|
|
||||||
==
|
|
||||||
++ blitz
|
|
||||||
$% [%zong p=zong]
|
|
||||||
[%user p=user]
|
|
||||||
==
|
|
||||||
++ iron
|
|
||||||
$% [%zongs p=(list zong)]
|
|
||||||
[%users p=users]
|
|
||||||
==
|
|
||||||
++ gift
|
|
||||||
$% [%rush blitz]
|
|
||||||
[%rust iron]
|
|
||||||
[%mean ares]
|
|
||||||
[%nice ~]
|
|
||||||
==
|
|
||||||
++ move ,[p=bone q=(mold note gift)]
|
|
||||||
++ note ,[%c %info p=@p q=@tas r=nori] :: internal edit
|
|
||||||
--
|
|
||||||
|_ [hid=hide vat=axle]
|
|
||||||
++ grab
|
|
||||||
|= sta=path
|
|
||||||
(fall (~(get by p.vat) sta) *[p=(list zong) q=(map ship ,?)])
|
|
||||||
::
|
|
||||||
++ ident
|
|
||||||
|= you=ship
|
|
||||||
%- (hard ,@t)
|
|
||||||
.^(%a (scot %p our.hid) %name (scot %da lat.hid) (scot %p you) ~)
|
|
||||||
::
|
|
||||||
++ peer
|
|
||||||
|= [ost=bone you=ship pax=path]
|
|
||||||
^- [(list move) _+>]
|
|
||||||
?~ pax
|
|
||||||
[[ost %give %mean ~ %radio-bad-path ~]~ +>.$]
|
|
||||||
=+ ya=(grab t.pax)
|
|
||||||
?+ -.pax [~ +>.$]
|
|
||||||
%mensajes
|
|
||||||
[[ost %give %rust %zongs p.ya]~ +>.$]
|
|
||||||
%amigos
|
|
||||||
=. q.ya (~(put by q.ya) you %.y)
|
|
||||||
:_ +>.$(p.vat (~(put by p.vat) t.pax ya))
|
|
||||||
:_ (send pax %give %rush %user %in you (ident you))
|
|
||||||
:* ost %give %rust %users
|
|
||||||
%+ murn (~(tap by q.ya))
|
|
||||||
|= [shi=ship liv=?]
|
|
||||||
?. liv
|
|
||||||
~
|
|
||||||
(some [shi (ident shi)])
|
|
||||||
==
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ poke-zing
|
|
||||||
|= [ost=bone you=ship zig=zing]
|
|
||||||
^- [(list move) _+>]
|
|
||||||
=+ ya=(grab p.zig)
|
|
||||||
?. (~(has by q.ya) you)
|
|
||||||
[[ost %give %mean ~ %no-te-conozco ~]~ +>.$]
|
|
||||||
=+ zog=`zong`[%mess lat.hid you q.zig]
|
|
||||||
=. p.vat (~(put by p.vat) p.zig [[zog p.ya] q.ya])
|
|
||||||
:_ +>.$
|
|
||||||
:- [ost %give %nice ~]
|
|
||||||
(send mensajes/p.zig %give %rush %zong zog)
|
|
||||||
::
|
|
||||||
++ poke-bit
|
|
||||||
|= [ost=bone you=ship ~]
|
|
||||||
^- [(list move) _+>]
|
|
||||||
:_ +>.$
|
|
||||||
=+ paf=/(scot %p our.hid)/try/(scot %da lat.hid)/radio/backlog/jam
|
|
||||||
[ost %pass /jamfile %c %info our.hid (foal paf (jam +<+.+>.$))]~
|
|
||||||
::
|
|
||||||
++ pull
|
|
||||||
|= ost=bone
|
|
||||||
^- [(list move) _+>]
|
|
||||||
=+ ^- (unit ,[his=ship pax=path])
|
|
||||||
(~(get by sup.hid) ost)
|
|
||||||
?~ - ~& %strange-pull [~ +>.$]
|
|
||||||
?. ?=([%mensajes *] pax.u)
|
|
||||||
[~ +>.$]
|
|
||||||
=+ sta=(~(got by p.vat) t.pax.u)
|
|
||||||
=. q.sta %+ ~(put by q.sta) his.u %.n
|
|
||||||
=. p.vat %+ ~(put by p.vat) t.pax.u sta
|
|
||||||
[(send amigos/t.pax.u %give %rush %user %out his.u (ident his.u)) +>.$]
|
|
||||||
::
|
|
||||||
++ send
|
|
||||||
|= [pax=path msg=(mold note gift)]
|
|
||||||
^- (list move)
|
|
||||||
:: ~& [%radi-sub pus.hid]
|
|
||||||
%+ turn (~(tap in (~(get ju pus.hid) pax)))
|
|
||||||
|=(ost=bone [ost msg])
|
|
||||||
--
|
|
@ -25,6 +25,6 @@
|
|||||||
?> ?=([[@ ~] ~] zaz)
|
?> ?=([[@ ~] ~] zaz)
|
||||||
`term`p.i.zaz
|
`term`p.i.zaz
|
||||||
=+ tip=(end 3 1 nam)
|
=+ tip=(end 3 1 nam)
|
||||||
=+ pax=[(scot %p our.hid) %main (scot %da lat.hid) %arvo nam %hoon ~]
|
=+ pax=[(scot %p our.hid) %main (scot %da lat.hid) %arvo nam ~]
|
||||||
[%veer ?:(=('z' tip) %$ tip) pax (,@ .^(%cx pax))]
|
[%veer ?:(=('z' tip) %$ tip) pax (,@ .^(%cx (welp pax /hoon)))]
|
||||||
--
|
--
|
||||||
|
@ -1,763 +0,0 @@
|
|||||||
::
|
|
||||||
:::: /hook/core/rodeo/app
|
|
||||||
::
|
|
||||||
/? 314
|
|
||||||
/- *rodeo, *twitter
|
|
||||||
/+ rodeo
|
|
||||||
::
|
|
||||||
::::
|
|
||||||
::
|
|
||||||
!:
|
|
||||||
=> |% :: data structures
|
|
||||||
++ house ,[%1 house-1] :: full state
|
|
||||||
++ house-any :: app history
|
|
||||||
$% [%1 house-1] :: 1: rodeo
|
|
||||||
[%0 house-0] :: 0: initial version
|
|
||||||
== ::
|
|
||||||
++ house-1 ::
|
|
||||||
$: stories=(map span story) :: conversations
|
|
||||||
general=(set bone) :: meta-subscribe
|
|
||||||
outbox=(pair ,@ud (map ,@ud thought)) :: urbit outbox
|
|
||||||
folks=(map ship human) :: human identities
|
|
||||||
== ::
|
|
||||||
++ house-0 :: legacy state
|
|
||||||
%+ map path ::
|
|
||||||
,[p=(list zong) q=(map ship ,?)] ::
|
|
||||||
:: ::
|
|
||||||
++ zong :: legacy messages
|
|
||||||
$% $: %mess p=@da q=ship ::
|
|
||||||
$= r ::
|
|
||||||
$% [%do p=@t] ::
|
|
||||||
[%exp p=@t q=tank] ::
|
|
||||||
[%say p=@t] ::
|
|
||||||
== == == ::
|
|
||||||
++ story :: wire content
|
|
||||||
$: count=@ud :: (lent grams)
|
|
||||||
grams=(list telegram) :: all history
|
|
||||||
locals=(map ship (pair ,@da status)) :: local presence
|
|
||||||
remotes=(map partner atlas) :: remote presence
|
|
||||||
sequence=(map partner ,@ud) :: partners heard
|
|
||||||
shape=config :: configuration
|
|
||||||
known=(map serial ,@ud) :: messages heard
|
|
||||||
guests=(map bone river) :: message followers
|
|
||||||
viewers=(set bone) :: presence followers
|
|
||||||
owners=(set bone) :: config followers
|
|
||||||
== ::
|
|
||||||
++ river (pair point point) :: stream definition
|
|
||||||
++ point :: stream endpoint
|
|
||||||
$% [%ud p=@ud] :: by number
|
|
||||||
[%da p=@da] :: by date
|
|
||||||
== ::
|
|
||||||
++ gift :: result
|
|
||||||
$% [%rush %rodeo-report report] :: refresh
|
|
||||||
[%mean ares] :: cancel
|
|
||||||
[%nice ~] :: accept
|
|
||||||
== ::
|
|
||||||
++ sign :: response
|
|
||||||
$% $: %e :: from %eyre
|
|
||||||
$% [%thou p=httr] :: HTTP response
|
|
||||||
== == ::
|
|
||||||
$: %g :: application
|
|
||||||
$% [%mean p=ares] :: cancel
|
|
||||||
[%nice ~] :: acknowledge
|
|
||||||
[%rush p=silt] :: subs data
|
|
||||||
== == ::
|
|
||||||
$: %t ::
|
|
||||||
$% [%wake ~] :: timer wakeup
|
|
||||||
== == == ::
|
|
||||||
++ silt
|
|
||||||
$% [%rodeo-report p=report] :: refresh
|
|
||||||
[%twit-stat p=twit-stat] :: tweet reciept
|
|
||||||
[%twit-feed p=(list twit-stat)] :: tweet reciept
|
|
||||||
==
|
|
||||||
++ move ,[p=bone q=(mold note gift)] :: all actions
|
|
||||||
++ hapt ,[p=ship q=path] :: app instance
|
|
||||||
++ note :: requests
|
|
||||||
$% $: %c ::
|
|
||||||
$% [%info p=@p q=@tas r=nori] ::
|
|
||||||
== == ::
|
|
||||||
$: %e :: through %eyre
|
|
||||||
$% [%them p=(unit hiss)] :: HTTP request
|
|
||||||
== == ::
|
|
||||||
$: %g :: network
|
|
||||||
$% [%mess p=hapt q=ship r=cage] :: message
|
|
||||||
[%nuke p=hapt q=ship] :: cancel
|
|
||||||
[%show p=hapt q=ship r=path] :: subscribe
|
|
||||||
[%took p=hapt q=ship] :: acknowledge
|
|
||||||
== == ::
|
|
||||||
$: %t ::
|
|
||||||
$% [%wait p=@da] ::
|
|
||||||
== == == ::
|
|
||||||
--
|
|
||||||
|_ [hid=hide house]
|
|
||||||
++ ra :: transaction core
|
|
||||||
|_ [ost=bone moves=(list move)]
|
|
||||||
++ ra-abet :: resolve core
|
|
||||||
^- [(list move) _+>]
|
|
||||||
[(flop moves) +>]
|
|
||||||
::
|
|
||||||
++ ra-emil :: ra-emit move list
|
|
||||||
|= mol=(list move)
|
|
||||||
%_(+> moves (welp (flop mol) moves))
|
|
||||||
::
|
|
||||||
++ ra-emit :: emit a move
|
|
||||||
|= mov=move
|
|
||||||
%_(+> moves [mov moves])
|
|
||||||
::
|
|
||||||
++ ra-ever :: emit success
|
|
||||||
(ra-emit ost %give %nice ~)
|
|
||||||
::
|
|
||||||
++ ra-evil :: emit error
|
|
||||||
|= msg=cord
|
|
||||||
~& [%ra-evil msg]
|
|
||||||
(ra-emit ost %give %mean ~ msg ~)
|
|
||||||
::
|
|
||||||
++ ra-hiss :: emit http request
|
|
||||||
|= [pax=path hiz=hiss]
|
|
||||||
(ra-emit ost %pass pax %e %them ~ hiz)
|
|
||||||
::
|
|
||||||
++ ra-house :: emit partners
|
|
||||||
|= ost=bone
|
|
||||||
%+ ra-emit ost
|
|
||||||
:^ %give %rush %rodeo-report
|
|
||||||
:- %house
|
|
||||||
%- ~(gas in *(map span (pair posture cord)))
|
|
||||||
%+ turn (~(tap by stories))
|
|
||||||
|=([a=span b=story] [a p.cordon.shape.b caption.shape.b])
|
|
||||||
::
|
|
||||||
++ ra-homes :: update partners
|
|
||||||
=+ gel=general
|
|
||||||
|- ^+ +>
|
|
||||||
?~ gel +>
|
|
||||||
=. +> $(gel l.gel)
|
|
||||||
=. +> $(gel r.gel)
|
|
||||||
(ra-house n.gel)
|
|
||||||
::
|
|
||||||
++ ra-init :: initialize rodeo
|
|
||||||
=+ sir=(sein our.hid)
|
|
||||||
%+ ra-apply our.hid
|
|
||||||
:+ %design (main our.hid)
|
|
||||||
:- ~
|
|
||||||
:_ [%default ?:((gte our.hid 65.536) %brown %black) ~]
|
|
||||||
?:(=(sir our.hid) ~ [[%& sir (main sir)] ~ ~])
|
|
||||||
::
|
|
||||||
++ ra-apply :: apply command
|
|
||||||
|= [her=ship cod=command]
|
|
||||||
^+ +>
|
|
||||||
~& [%ra-apply cod]
|
|
||||||
?- -.cod
|
|
||||||
%design
|
|
||||||
?. =(her our.hid)
|
|
||||||
(ra-evil %rodeo-no-owner)
|
|
||||||
?~ q.cod
|
|
||||||
?. (~(has by stories) p.cod)
|
|
||||||
(ra-evil %rodeo-no-story)
|
|
||||||
=. +>.$ (ra-config p.cod *config)
|
|
||||||
ra-ever(stories (~(del by stories) p.cod))
|
|
||||||
=. +>.$ (ra-config p.cod u.q.cod)
|
|
||||||
ra-ever
|
|
||||||
::
|
|
||||||
%review ra-ever:(ra-think | her +.cod)
|
|
||||||
%publish ra-ever:(ra-think & her +.cod)
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ ra-config :: configure story
|
|
||||||
|= [man=span con=config]
|
|
||||||
^+ +>
|
|
||||||
=+ :- neu=(~(has by stories) man)
|
|
||||||
pur=(fall (~(get by stories) man) *story)
|
|
||||||
=. +>.$ pa-abet:(~(pa-reform pa man pur) con)
|
|
||||||
?:(neu +>.$ ra-homes)
|
|
||||||
::
|
|
||||||
++ ra-friend :: %friend response
|
|
||||||
|= [man=span tay=partner sih=sign]
|
|
||||||
^+ +>
|
|
||||||
=+ pur=(~(get by stories) man)
|
|
||||||
?~ pur ~& [%ra-friend-none man] +>.$
|
|
||||||
pa-abet:(~(pa-friend pa man u.pur) tay sih)
|
|
||||||
::
|
|
||||||
++ ra-twitter :: %twitter response
|
|
||||||
|= [[num=@ud man=span] sih=sign]
|
|
||||||
^+ +>
|
|
||||||
?+ sih ~|([%rodeo-bad-twitter sih] !!)
|
|
||||||
[%g ?(%nice %mean) ~]
|
|
||||||
+>
|
|
||||||
[%g %mean ^]
|
|
||||||
(ra-repeat num [%| %twitter man] sih)
|
|
||||||
[%g %rush %twit-stat *]
|
|
||||||
(ra-repeat num [%| %twitter man] [%g %nice ~])
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ ra-repeat :: %repeat response
|
|
||||||
|= [num=@ud pan=partner sih=sign]
|
|
||||||
=+ oot=(~(get by q.outbox) num)
|
|
||||||
?~ oot ~& [%ra-repeat-none num] +>.$
|
|
||||||
=. q.outbox (~(del by q.outbox) num)
|
|
||||||
=. q.u.oot
|
|
||||||
=+ olg=(~(got by q.u.oot) pan)
|
|
||||||
%+ ~(put by q.u.oot) pan
|
|
||||||
:- -.olg
|
|
||||||
?+ sih !!
|
|
||||||
[%g %mean *] ~&([%rodeo-repeat-rejected num pan sih] %rejected)
|
|
||||||
[%g %nice ~] %received
|
|
||||||
==
|
|
||||||
(ra-think | our.hid u.oot ~)
|
|
||||||
::
|
|
||||||
++ ra-cancel :: drop a bone
|
|
||||||
^+ .
|
|
||||||
=+ hep=(~(get by sup.hid) ost)
|
|
||||||
?~ hep +
|
|
||||||
?. ?=([@ @ *] q.u.hep)
|
|
||||||
+(general (~(del in general) ost))
|
|
||||||
=* man i.t.q.u.hep
|
|
||||||
=+ pur=(~(get by stories) man)
|
|
||||||
?~ pur +>
|
|
||||||
pa-abet:(pa-notify:~(pa-cancel pa man u.pur) p.u.hep %gone *human)
|
|
||||||
::
|
|
||||||
++ ra-human :: look up person
|
|
||||||
|= her=ship
|
|
||||||
^- [human _+>]
|
|
||||||
=^ who folks
|
|
||||||
=+ who=(~(get by folks) her)
|
|
||||||
?^ who [u.who folks]
|
|
||||||
=+ who=`human`[~ `(scot %p her)] :: XX do right
|
|
||||||
[who (~(put by folks) her who)]
|
|
||||||
[who +>.$]
|
|
||||||
::
|
|
||||||
++ ra-subscribe :: listen to
|
|
||||||
|= [her=ship pax=path]
|
|
||||||
^+ +>
|
|
||||||
:: ~& [%ra-subscribe her pax]
|
|
||||||
?: ?=(~ pax)
|
|
||||||
(ra-house(general (~(put in general) ost)) ost)
|
|
||||||
?. ?=([@ @ *] pax)
|
|
||||||
(ra-evil %rodeo-bad-path)
|
|
||||||
=+ ^= vab ^- (set ,@tas)
|
|
||||||
=| vab=(set ,@tas)
|
|
||||||
|- ^+ vab
|
|
||||||
?: =(0 i.pax) vab
|
|
||||||
$(i.pax (rsh 3 1 i.pax), vab (~(put in vab) (end 3 1 i.pax)))
|
|
||||||
=+ pur=(~(get by stories) i.t.pax)
|
|
||||||
?~ pur
|
|
||||||
~& [%bad-subscribe-story-c i.t.pax]
|
|
||||||
(ra-evil %rodeo-no-story)
|
|
||||||
=+ soy=~(. pa i.t.pax u.pur)
|
|
||||||
=. soy ?.((~(has in vab) %a) soy (pa-watch:soy her))
|
|
||||||
=. soy ?.((~(has in vab) %x) soy (pa-master:soy her))
|
|
||||||
=. soy ?.((~(has in vab) %f) soy (pa-listen:soy her t.t.pax))
|
|
||||||
=^ who +>.$ (ra-human her)
|
|
||||||
pa-abet:(pa-notify:soy her %hear who)
|
|
||||||
::
|
|
||||||
++ ra-think :: publish/review
|
|
||||||
|= [pub=? her=ship tiz=(list thought)]
|
|
||||||
^+ +>
|
|
||||||
?~ tiz +>
|
|
||||||
$(tiz t.tiz, +> (ra-consume pub her i.tiz))
|
|
||||||
::
|
|
||||||
++ ra-consume :: consume thought
|
|
||||||
|= [pub=? her=ship tip=thought]
|
|
||||||
=+ aud=(~(tap by q.tip) ~)
|
|
||||||
|- ^+ +>.^$
|
|
||||||
?~ aud +>.^$
|
|
||||||
$(aud t.aud, +>.^$ (ra-conduct pub her p.i.aud tip))
|
|
||||||
::
|
|
||||||
++ ra-conduct :: thought to partner
|
|
||||||
|= [pub=? her=ship tay=partner tip=thought]
|
|
||||||
^+ +>
|
|
||||||
:: ~& [%ra-conduct pub her tay]
|
|
||||||
?- -.tay
|
|
||||||
%& ?: pub
|
|
||||||
=. her our.hid :: XX security!
|
|
||||||
?: =(her p.p.tay)
|
|
||||||
(ra-record q.p.tay p.p.tay tip)
|
|
||||||
(ra-transmit p.tay tip)
|
|
||||||
?. =(our.hid p.p.tay)
|
|
||||||
+>
|
|
||||||
(ra-record q.p.tay her tip)
|
|
||||||
%| ?. pub +>
|
|
||||||
?- -.p.tay
|
|
||||||
%twitter
|
|
||||||
(ra-tweet p.p.tay tip)
|
|
||||||
== ==
|
|
||||||
::
|
|
||||||
++ ra-record :: add to story
|
|
||||||
|= [man=span gam=telegram]
|
|
||||||
^+ +>
|
|
||||||
=+ pur=(~(get by stories) man)
|
|
||||||
?~ pur
|
|
||||||
~& [%no-story man]
|
|
||||||
+>.$
|
|
||||||
pa-abet:(~(pa-learn pa man u.pur) gam)
|
|
||||||
::
|
|
||||||
++ ra-transmit :: send to neighbor
|
|
||||||
|= [cuz=station tip=thought]
|
|
||||||
^+ +>
|
|
||||||
=. +>
|
|
||||||
%+ ra-emit ost
|
|
||||||
:* %pass
|
|
||||||
/repeat/(scot %ud p.outbox)/(scot %p p.cuz)/[q.cuz]
|
|
||||||
%g
|
|
||||||
%mess
|
|
||||||
[p.cuz /rodeo]
|
|
||||||
our.hid
|
|
||||||
[%rodeo-command !>(`command`[%review tip ~])]
|
|
||||||
==
|
|
||||||
+>(p.outbox +(p.outbox), q.outbox (~(put by q.outbox) p.outbox tip))
|
|
||||||
::
|
|
||||||
++ ra-tweet :: send to /twit
|
|
||||||
|= [man=span tip=thought]
|
|
||||||
=* sta r.tip
|
|
||||||
?> ?=(%lin -.r.sta)
|
|
||||||
=. q.outbox (~(put by q.outbox) p.outbox tip)
|
|
||||||
%^ ra-emil(p.outbox +(p.outbox))
|
|
||||||
:* ost
|
|
||||||
%pass /twitter/stat/(scot %ud p.outbox)/[man]
|
|
||||||
%g %mess
|
|
||||||
[our.hid /twit] our.hid
|
|
||||||
[%twit-do !>(`twit-do`[man %post p.tip q.r.sta])]
|
|
||||||
==
|
|
||||||
:* ost
|
|
||||||
%pass /twitter/stat/(scot %ud p.outbox)/[man]
|
|
||||||
[%g %show [our.hid /twit] our.hid /post/(scot %uv p.tip)]
|
|
||||||
==
|
|
||||||
~
|
|
||||||
++ pa :: story core
|
|
||||||
|_ $: man=span
|
|
||||||
story
|
|
||||||
==
|
|
||||||
++ pa-abet
|
|
||||||
^+ +>
|
|
||||||
+>(stories (~(put by stories) man `story`+<+))
|
|
||||||
::
|
|
||||||
++ pa-admire :: accept from
|
|
||||||
|= her=ship
|
|
||||||
^- ?
|
|
||||||
::?- -.cordon.shape
|
|
||||||
:: %& (~(has in p.cordon.shape) her)
|
|
||||||
:: %| !(~(has in p.cordon.shape) her)
|
|
||||||
::==
|
|
||||||
&
|
|
||||||
::
|
|
||||||
++ pa-watch :: watch presence
|
|
||||||
|= her=ship
|
|
||||||
?. (pa-admire her)
|
|
||||||
(pa-sauce ost [[%mean ~ %rodeo-watch-unauthorized ~] ~])
|
|
||||||
=. viewers (~(put in viewers) ost)
|
|
||||||
(pa-display ost ~ ~)
|
|
||||||
::
|
|
||||||
++ pa-master :: hear config
|
|
||||||
|= her=ship
|
|
||||||
?. (pa-admire her)
|
|
||||||
(pa-sauce ost [[%mean ~ %rodeo-master-unauthorized ~] ~])
|
|
||||||
=. owners (~(put in owners) ost)
|
|
||||||
:: ~& [%pa-master her man shape]
|
|
||||||
(pa-sauce ost [[%rush %rodeo-report %config shape] ~])
|
|
||||||
::
|
|
||||||
++ pa-display :: update presence
|
|
||||||
|= vew=(set bone)
|
|
||||||
=+ ^= reg
|
|
||||||
:_ remotes
|
|
||||||
|- ^- atlas
|
|
||||||
?~ locals ~
|
|
||||||
[[p.n.locals q.q.n.locals] $(locals l.locals) $(locals r.locals)]
|
|
||||||
:: ~& [%pa-display man reg]
|
|
||||||
|- ^+ +>.^$
|
|
||||||
?~ vew +>.^$
|
|
||||||
=. +>.^$ $(vew l.vew)
|
|
||||||
=. +>.^$ $(vew r.vew)
|
|
||||||
(pa-sauce n.vew [[%rush %rodeo-report %group reg] ~])
|
|
||||||
::
|
|
||||||
++ pa-monitor :: update config
|
|
||||||
=+ owe=owners
|
|
||||||
|- ^+ +>
|
|
||||||
?~ owe +>
|
|
||||||
=. +> $(owe l.owe)
|
|
||||||
=. +> $(owe r.owe)
|
|
||||||
:: ~& [%pa-monitor man shape]
|
|
||||||
(pa-sauce n.owe [[%rush %rodeo-report %config shape] ~])
|
|
||||||
::
|
|
||||||
++ pa-friend :: subscribed update
|
|
||||||
|= [tay=partner sih=sign]
|
|
||||||
^+ +>
|
|
||||||
?+ sih ~|([%rodeo-bad-friend sih] !!)
|
|
||||||
[%g %nice ~]
|
|
||||||
+>.$
|
|
||||||
::
|
|
||||||
[%g %mean *]
|
|
||||||
?~ +>.sih
|
|
||||||
(pa-acquire [tay ~])
|
|
||||||
~& [%pa-friend-mean +>.sih]
|
|
||||||
pa-monitor(sources.shape (~(del in sources.shape) tay))
|
|
||||||
::
|
|
||||||
[%g %rush %twit-feed *]
|
|
||||||
%- pa-lesson
|
|
||||||
%+ turn p.p.sih |= twit-stat
|
|
||||||
^- telegram
|
|
||||||
:^ our.hid :: XX inaccurate
|
|
||||||
(shas %twit id)
|
|
||||||
`audience`[[tay [& ~ tay] %received] `~] :: current party?
|
|
||||||
^- statement
|
|
||||||
:+ now
|
|
||||||
~ :: XX hashtags
|
|
||||||
[%lin & txt]
|
|
||||||
[%g %rush %rodeo-report *]
|
|
||||||
:: ~& [%pa-friend-report +>+.sih]
|
|
||||||
?> ?=(& -.tay)
|
|
||||||
=. +> %+ pa-scrub ost
|
|
||||||
:_ ~
|
|
||||||
:- /friend/show/[man]/(scot %p p.p.tay)/[q.p.tay]
|
|
||||||
[%g %took [p.p.tay /rodeo] our.hid]
|
|
||||||
?+ -.p.p.sih ~|([%rodeo-odd-friend sih] !!)
|
|
||||||
%config +>.$
|
|
||||||
%group (pa-remind tay +.p.p.sih)
|
|
||||||
%grams (pa-lesson q.+.p.p.sih)
|
|
||||||
==
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ pa-scrub :: pass forward
|
|
||||||
|= [ost=bone bub=(list (pair path note))]
|
|
||||||
%_ +>.$
|
|
||||||
moves
|
|
||||||
(welp (flop (turn bub |=(a=(pair path note) [ost %pass a]))) moves)
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ pa-sauce :: send backward
|
|
||||||
|= [ost=bone gub=(list gift)]
|
|
||||||
%_ +>.$
|
|
||||||
moves
|
|
||||||
(welp (flop (turn gub |=(a=gift [ost %give a]))) moves)
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ pa-abjure :: unsubscribe move
|
|
||||||
|= tal=(list partner)
|
|
||||||
%+ pa-scrub 0
|
|
||||||
%- zing
|
|
||||||
%+ turn tal
|
|
||||||
|= tay=partner
|
|
||||||
?- -.tay
|
|
||||||
%| ~& tweet-abjure/p.p.tay
|
|
||||||
!!
|
|
||||||
:: :~ :- /friend/nuke/[man]/twitter/[p.p.tay]
|
|
||||||
:: [%g %nuke [our.hid /twit] our.hid]
|
|
||||||
:: ==
|
|
||||||
::
|
|
||||||
%& :: ~& [%pa-abjure [our.hid man] [p.p.tay q.p.tay]]
|
|
||||||
:~ :- /friend/nuke/[man]/(scot %p p.p.tay)/[q.p.tay]
|
|
||||||
[%g %nuke [p.p.tay /rodeo] our.hid]
|
|
||||||
==
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ pa-acquire :: subscribe to
|
|
||||||
|= tal=(list partner)
|
|
||||||
%+ pa-scrub 0
|
|
||||||
%- zing
|
|
||||||
%+ turn tal
|
|
||||||
|= tay=partner
|
|
||||||
^- (list (pair path note))
|
|
||||||
=+ num=(fall (~(get by sequence) tay) 0)
|
|
||||||
?- -.tay
|
|
||||||
%| ~& tweet-acquire/p.p.tay
|
|
||||||
:~ :- /friend/show/[man]/twitter/[p.p.tay]
|
|
||||||
[%g %show [our.hid /twit] our.hid /user/[p.p.tay]]
|
|
||||||
==
|
|
||||||
::
|
|
||||||
%& :: ~& [%pa-acquire [our.hid man] [p.p.tay q.p.tay]]
|
|
||||||
:~ :- /friend/show/[man]/(scot %p p.p.tay)/[q.p.tay]
|
|
||||||
[%g %show [p.p.tay /rodeo] our.hid /af/[q.p.tay]/(scot %ud num)]
|
|
||||||
==
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ pa-reform :: reconfigure, ugly
|
|
||||||
|= cof=config
|
|
||||||
=+ ^= dif ^- (pair (list partner) (list partner))
|
|
||||||
=+ old=`(list partner)`(~(tap in sources.shape) ~)
|
|
||||||
=+ new=`(list partner)`(~(tap in sources.cof) ~)
|
|
||||||
:- (skip new |=(a=partner (~(has in sources.shape) a)))
|
|
||||||
(skip old |=(a=partner (~(has in sources.cof) a)))
|
|
||||||
=. +>.$ (pa-acquire p.dif)
|
|
||||||
=. +>.$ (pa-abjure q.dif)
|
|
||||||
=. shape cof
|
|
||||||
pa-monitor
|
|
||||||
::
|
|
||||||
++ pa-cancel :: unsubscribe from
|
|
||||||
:: ~& [%pa-cancel ost]
|
|
||||||
%_ .
|
|
||||||
guests (~(del by guests) ost)
|
|
||||||
viewers (~(del in viewers) ost)
|
|
||||||
owners (~(del in owners) ost)
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ pa-notify :: local presence
|
|
||||||
|= [her=ship saz=status]
|
|
||||||
^+ +>
|
|
||||||
=+ ^= nol
|
|
||||||
?: =(%gone p.saz)
|
|
||||||
(~(del by locals) her)
|
|
||||||
(~(put by locals) her lat.hid saz)
|
|
||||||
?: =(nol locals) +>.$
|
|
||||||
(pa-display(locals nol) viewers)
|
|
||||||
::
|
|
||||||
++ pa-remind :: remote presence
|
|
||||||
|= [tay=partner loc=atlas rem=(map partner atlas)]
|
|
||||||
=+ ^= buk
|
|
||||||
=+ mer=(turn (~(tap by rem) ~) |=([* a=atlas] a))
|
|
||||||
|- ^- atlas
|
|
||||||
?~ mer loc
|
|
||||||
=. loc $(mer t.mer)
|
|
||||||
=+ dur=`(list (pair ship status))`(~(tap by i.mer) ~)
|
|
||||||
|- ^- atlas
|
|
||||||
?~ dur loc
|
|
||||||
=. loc $(dur t.dur)
|
|
||||||
=+ fuy=(~(get by loc) p.i.dur)
|
|
||||||
?~ fuy (~(put by loc) p.i.dur q.i.dur)
|
|
||||||
?: =(`presence`p.q.i.dur `presence`p.u.fuy)
|
|
||||||
loc
|
|
||||||
?- p.u.fuy
|
|
||||||
%gone (~(del by loc) p.i.dur q.i.dur)
|
|
||||||
%talk loc
|
|
||||||
%hear (~(put by loc) p.i.dur q.i.dur)
|
|
||||||
==
|
|
||||||
=+ gub=(~(get by remotes) tay)
|
|
||||||
:: ~& [%pa-remind tay gub buk]
|
|
||||||
?. |(?=(~ gub) !=(buk u.gub))
|
|
||||||
+>.$
|
|
||||||
=. remotes (~(put by remotes) tay buk)
|
|
||||||
(pa-display viewers)
|
|
||||||
::
|
|
||||||
++ pa-start :: start stream
|
|
||||||
|= riv=river
|
|
||||||
^+ +>
|
|
||||||
=- :: ~& [%pa-start riv lab]
|
|
||||||
=. +>.$ (pa-sauce ost [[%rush %rodeo-report %grams q.lab r.lab] ~])
|
|
||||||
?: p.lab
|
|
||||||
(pa-sauce ost [[%mean ~] ~])
|
|
||||||
+>.$(guests (~(put by guests) ost riv))
|
|
||||||
^= lab
|
|
||||||
=+ [end=count gaz=grams dun=| zeg=*(list telegram)]
|
|
||||||
|- ^- (trel ,? ,@ud (list telegram))
|
|
||||||
?~ gaz [dun end zeg]
|
|
||||||
?: ?- -.q.riv :: after the end
|
|
||||||
%ud (lte p.q.riv end)
|
|
||||||
%da (lte p.q.riv p.r.q.i.gaz)
|
|
||||||
==
|
|
||||||
$(end (dec end), gaz t.gaz)
|
|
||||||
?: ?- -.p.riv :: before the start
|
|
||||||
%ud (lth end p.p.riv)
|
|
||||||
%da (lth p.r.q.i.gaz p.p.riv)
|
|
||||||
==
|
|
||||||
[dun end zeg]
|
|
||||||
$(end (dec end), gaz t.gaz, zeg [i.gaz zeg])
|
|
||||||
::
|
|
||||||
++ pa-listen :: subscribe
|
|
||||||
|= [her=ship pax=path]
|
|
||||||
^+ +>
|
|
||||||
?. (pa-admire her)
|
|
||||||
(pa-sauce ost [[%mean ~ %rodeo-listen-unauthorized ~] ~])
|
|
||||||
=+ ^= ruv ^- (unit river)
|
|
||||||
?: ?=(~ pax)
|
|
||||||
`[[%ud count] [%da (dec (bex 128))]]
|
|
||||||
?: ?=([@ ~] pax)
|
|
||||||
=+ say=(slay i.pax)
|
|
||||||
?. ?=([~ %$ ?(%ud %da) @] say) ~
|
|
||||||
`[(point +>.say) [%da (dec (bex 128))]]
|
|
||||||
?. ?=([@ @ ~] pax) ~
|
|
||||||
=+ [say=(slay i.pax) den=(slay i.t.pax)]
|
|
||||||
?. ?=([~ %$ ?(%ud %da) @] say) ~
|
|
||||||
?. ?=([~ %$ ?(%ud %da) @] den) ~
|
|
||||||
`[(point +>.say) (point +>.den)]
|
|
||||||
:: ~& [%pa-listen her pax ruv]
|
|
||||||
?~ ruv
|
|
||||||
(pa-sauce ost [[%mean ~ %rodeo-malformed ~] ~])
|
|
||||||
(pa-start u.ruv)
|
|
||||||
::
|
|
||||||
++ pa-refresh :: update stream
|
|
||||||
|= [num=@ud gam=telegram]
|
|
||||||
~& [%pa-refresh man num gam guests]
|
|
||||||
=+ ^= moy
|
|
||||||
|- ^- (pair (list bone) (list move))
|
|
||||||
?~ guests [~ ~]
|
|
||||||
:: ~& [%pa-refresh num n.guests]
|
|
||||||
=+ lef=$(guests l.guests)
|
|
||||||
=+ rit=$(guests r.guests)
|
|
||||||
=+ old=[p=(welp p.lef p.rit) q=(welp q.lef q.rit)]
|
|
||||||
?: ?- -.q.q.n.guests :: after the end
|
|
||||||
%ud (lte p.q.q.n.guests num)
|
|
||||||
%da (lte p.q.q.n.guests p.r.q.gam)
|
|
||||||
==
|
|
||||||
[[p.n.guests p.old] [[p.n.guests %give %mean ~] q.old]]
|
|
||||||
?: ?- -.p.q.n.guests :: before the start
|
|
||||||
%ud (gth p.p.q.n.guests num)
|
|
||||||
%da (gth p.p.q.n.guests p.r.q.gam)
|
|
||||||
==
|
|
||||||
old
|
|
||||||
:- p.old
|
|
||||||
[[p.n.guests %give %rush %rodeo-report %grams num gam ~] q.old]
|
|
||||||
=. moves (welp q.moy moves)
|
|
||||||
|- ^+ +>.^$
|
|
||||||
?~ p.moy +>.^$
|
|
||||||
$(p.moy t.p.moy, guests (~(del by guests) i.p.moy))
|
|
||||||
::
|
|
||||||
++ pa-lesson :: learn multiple
|
|
||||||
|= gaz=(list telegram)
|
|
||||||
^+ +>
|
|
||||||
?~ gaz +>
|
|
||||||
$(gaz t.gaz, +> (pa-learn i.gaz))
|
|
||||||
::
|
|
||||||
++ pa-learn :: learn message
|
|
||||||
|= gam=telegram
|
|
||||||
^+ +>
|
|
||||||
?. (pa-admire p.gam)
|
|
||||||
~& %pa-admire-rejected
|
|
||||||
+>.$
|
|
||||||
=. q.q.gam
|
|
||||||
=+ ole=(~(get by q.q.gam) [%& our.hid man])
|
|
||||||
?~ ole q.q.gam
|
|
||||||
(~(put by q.q.gam) [%& our.hid man] -.u.ole %received)
|
|
||||||
=+ old=(~(get by known) p.q.gam)
|
|
||||||
?~ old
|
|
||||||
(pa-append gam)
|
|
||||||
(pa-revise u.old gam)
|
|
||||||
::
|
|
||||||
++ pa-append :: append new
|
|
||||||
|= gam=telegram
|
|
||||||
^+ +>
|
|
||||||
%+ %= pa-refresh
|
|
||||||
grams [gam grams]
|
|
||||||
count +(count)
|
|
||||||
known (~(put by known) p.q.gam count)
|
|
||||||
==
|
|
||||||
count
|
|
||||||
gam
|
|
||||||
::
|
|
||||||
++ pa-revise :: revise existing
|
|
||||||
|= [num=@ud gam=telegram]
|
|
||||||
=+ way=(sub count num)
|
|
||||||
=. grams (welp (scag (dec way) grams) [gam (slag way grams)])
|
|
||||||
(pa-refresh num gam)
|
|
||||||
--
|
|
||||||
--
|
|
||||||
++ peer
|
|
||||||
|= [ost=bone her=ship pax=path]
|
|
||||||
^- [(list move) _+>]
|
|
||||||
:: ~& [%rodeo-peer ost her pax]
|
|
||||||
ra-abet:(~(ra-subscribe ra ost ~) her pax)
|
|
||||||
::
|
|
||||||
++ poke-rodeo-command
|
|
||||||
|= [ost=bone her=ship cod=command]
|
|
||||||
^- [(list move) _+>]
|
|
||||||
:: ~& [%rodeo-poke-command her cod]
|
|
||||||
=^ moz +>.$ ra-abet:(~(ra-apply ra ost ~) her cod)
|
|
||||||
[moz +>.$]
|
|
||||||
::
|
|
||||||
++ pour
|
|
||||||
|= [ost=bone pax=path sih=*]
|
|
||||||
^- [(list move) _+>]
|
|
||||||
:: ~& sih=sih
|
|
||||||
=+ sih=((hard sign) sih)
|
|
||||||
:: ~& [%rodeo-pour ost pax sih]
|
|
||||||
?+ pax ~& [%rodeo-strange-path pax] !!
|
|
||||||
::
|
|
||||||
[%twitter *]
|
|
||||||
=- ra-abet:(~(ra-twitter ra ost ~) met sih)
|
|
||||||
^= met
|
|
||||||
?+ t.pax ~| [%rodeo-twitter-strange-path pax] !!
|
|
||||||
:: [%mine @ @ ~]
|
|
||||||
:: [i.t.pax i.t.t.t.pax]
|
|
||||||
[%stat @ @ ~]
|
|
||||||
[(slav %ud i.t.t.pax) i.t.t.t.pax]
|
|
||||||
==
|
|
||||||
::
|
|
||||||
[%friend *]
|
|
||||||
?> ?=([@ @ @ @ ~] t.pax)
|
|
||||||
?. =(%show i.t.pax)
|
|
||||||
~& [%pour-friend-nuke-nuke pax]
|
|
||||||
[~ +>.$]
|
|
||||||
=+ man=i.t.t.pax
|
|
||||||
=+ ?: ?=(%twitter i.t.t.t.pax)
|
|
||||||
tay=[%| i.t.t.t.pax i.t.t.t.t.pax]
|
|
||||||
tay=[%& (slav %p i.t.t.t.pax) i.t.t.t.t.pax]
|
|
||||||
ra-abet:(~(ra-friend ra ost ~) man tay sih)
|
|
||||||
::
|
|
||||||
[%repeat *]
|
|
||||||
?> ?=([@ @ @ ~] t.pax)
|
|
||||||
=+ [num her man]=[(slav %ud i.t.pax) (slav %p i.t.t.pax) i.t.t.t.pax]
|
|
||||||
ra-abet:(~(ra-repeat ra ost ~) num [%& her man] sih)
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ pull
|
|
||||||
|= ost=bone
|
|
||||||
^- [(list move) _+>]
|
|
||||||
~& [%rodeo-pull `*`ost]
|
|
||||||
ra-abet:~(ra-cancel ra ost ~)
|
|
||||||
::
|
|
||||||
++ poke-bit
|
|
||||||
|= [ost=bone you=ship ~]
|
|
||||||
^- [(list move) _+>]
|
|
||||||
:_ +>.$
|
|
||||||
=+ paf=/(scot %p our.hid)/try/(scot %da lat.hid)/rodeo/backlog/jam
|
|
||||||
[ost %pass /jamfile %c %info our.hid (foal paf (jam +<+.+>.$))]~
|
|
||||||
::
|
|
||||||
++ prep
|
|
||||||
|= old=(unit (unit house-any))
|
|
||||||
^- [(list move) _+>]
|
|
||||||
?> ?=(^ old)
|
|
||||||
=| moz=(list move)
|
|
||||||
|-
|
|
||||||
?~ u.old
|
|
||||||
=+ paf=/(scot %p our.hid)/try/(scot %da lat.hid)/rodeo/backlog/jam
|
|
||||||
?. ?=([%0 %0 %0] [.^(%cy paf)])
|
|
||||||
$(u.old (some ((hard house-any) (cue ((hard ,@) .^(%cx paf))))))
|
|
||||||
~& %rodeo-prep-new
|
|
||||||
ra-abet:~(ra-init ra 0 moz)
|
|
||||||
~& %rodeo-prep-old
|
|
||||||
:- moz
|
|
||||||
|-
|
|
||||||
?- -.u.u.old
|
|
||||||
%1 %_(+>.^^$ +<+ u.u.old)
|
|
||||||
%0 $(u.u.old [%1 (house-0-to-house-1 +.u.u.old)])
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ house-0-to-house-1
|
|
||||||
|= vat=house-0
|
|
||||||
^- house-1
|
|
||||||
=- :* stories=-
|
|
||||||
general=~
|
|
||||||
outbox=[0 ~]
|
|
||||||
folks=~
|
|
||||||
==
|
|
||||||
^- (map span story)
|
|
||||||
=- %- ~(run by -)
|
|
||||||
|= grams=(list telegram)
|
|
||||||
^- story
|
|
||||||
:* count=(lent grams)
|
|
||||||
grams=grams
|
|
||||||
locals=~
|
|
||||||
remotes=~
|
|
||||||
sequence=~
|
|
||||||
shape=[.(cordon [%black ~])]:*config
|
|
||||||
^= known %- mo ^- (list ,[serial @]) =< +
|
|
||||||
(roll grams |=([telegram a=@ b=(list ,[serial @])] [+(a) [a p.q] b]))
|
|
||||||
guests=~
|
|
||||||
viewers=~
|
|
||||||
owners=~
|
|
||||||
==
|
|
||||||
^- (map span (list telegram))
|
|
||||||
%- mo %+ turn (~(tap by vat))
|
|
||||||
|= [a=path b=(list zong) c=(map ship ,?)]
|
|
||||||
=+ ^= par
|
|
||||||
?: =(/ a) 'hub'
|
|
||||||
=+ (turn a |=(d=span leaf/(trip d)))
|
|
||||||
(crip ~(ram re %rose ["_" ~ ~] -))
|
|
||||||
:- par
|
|
||||||
=+ aud=`audience`[[[%& our.hid par] *envelope %received] `~]
|
|
||||||
=+ ^= spe
|
|
||||||
|= r=_r:*zong ^- speech
|
|
||||||
?- -.r
|
|
||||||
%say [%lin %& p.r]
|
|
||||||
%do [%lin %| p.r]
|
|
||||||
%exp [%fat [%tank q.r ~] [%exp p.r]]
|
|
||||||
==
|
|
||||||
%+ turn b
|
|
||||||
|= d=zong ^- telegram
|
|
||||||
[q.d (sham eny.hid d) aud p.d ~ (spe r.d)]
|
|
||||||
--
|
|
@ -4,10 +4,10 @@
|
|||||||
::
|
::
|
||||||
/? 314
|
/? 314
|
||||||
/- term-line, kyev
|
/- term-line, kyev
|
||||||
/= pit /~ !>(.) :: kernel vase
|
/= pit /~ !>(+) :: kernel vase
|
||||||
::
|
::
|
||||||
:::: structures
|
:::: structures
|
||||||
::
|
!:
|
||||||
|% ::
|
|% ::
|
||||||
++ axle ::
|
++ axle ::
|
||||||
$: %1 :: version
|
$: %1 :: version
|
||||||
@ -83,9 +83,9 @@
|
|||||||
[%vega p=path] ::
|
[%vega p=path] ::
|
||||||
== == == ::
|
== == == ::
|
||||||
--
|
--
|
||||||
!:
|
::
|
||||||
:::: parsers
|
:::: parsers
|
||||||
::
|
!:
|
||||||
|%
|
|%
|
||||||
++ maybe |*(fel=_rule (cook |*(a=(unit) (fall a ~)) (opts fel)))
|
++ maybe |*(fel=_rule (cook |*(a=(unit) (fall a ~)) (opts fel)))
|
||||||
++ opts :: parse unit
|
++ opts :: parse unit
|
||||||
@ -129,9 +129,9 @@
|
|||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ expg (rais ;~(pfix ace expr(tol %1)) ;~(pfix gap expr))
|
++ expg (rais ;~(pfix ace expr(tol %1)) ;~(pfix gap expr))
|
||||||
++ expr (rais [wide tall]:(vang & pax))
|
++ expr (rais [wide tall]:(vang | pax))
|
||||||
++ loca %+ sear ;~(biff plex:(vang & pax) vabe) :: path in %clay
|
++ loca %+ sear ;~(biff plex:(vang | pax) vabe) :: path in %clay
|
||||||
[;~(pose rood ;~(simu cen scat))]:(vang & pax)
|
[;~(pose rood ;~(simu cen scat))]:(vang | pax)
|
||||||
++ vabe |=(a=path ?~((tome a) ~ (some a))) :: check valid beam
|
++ vabe |=(a=path ?~((tome a) ~ (some a))) :: check valid beam
|
||||||
++ args :: task arguments
|
++ args :: task arguments
|
||||||
%^ rail
|
%^ rail
|
||||||
@ -143,9 +143,9 @@
|
|||||||
::
|
::
|
||||||
--
|
--
|
||||||
--
|
--
|
||||||
!:
|
::
|
||||||
:::: per event
|
:::: per event
|
||||||
::
|
!:
|
||||||
|%
|
|%
|
||||||
++ ve
|
++ ve
|
||||||
|= [hid=hide ost=bone axle]
|
|= [hid=hide ost=bone axle]
|
||||||
@ -240,13 +240,18 @@
|
|||||||
|= [paf=path gen=(unit twig)]
|
|= [paf=path gen=(unit twig)]
|
||||||
^+ +>
|
^+ +>
|
||||||
=+ fel=(file paf)
|
=+ fel=(file paf)
|
||||||
?~ fel
|
?^ fel
|
||||||
(chew-file paf '! none')
|
?~ gen
|
||||||
?^ gen
|
(blab (stray (crip ": {(spud paf)} {<(,@t u.fel)>}")))
|
||||||
%+ with u.gen |= new=vase
|
%+ with u.gen |= new=vase
|
||||||
=+ for=((hard mark) -:(flop paf))
|
=+ for=((hard mark) -:(flop paf))
|
||||||
(chew-file paf (foal paf for new))
|
(chew-file paf (foal paf for new))
|
||||||
(blab (stray (crip ": {(spud paf)} {<(,@t u.fel)>}")))
|
=+ ark=;;(arch .^(%cy paf))
|
||||||
|
?- r.ark
|
||||||
|
~ (chew-file paf '! none')
|
||||||
|
[^ ~ ~] $(paf (welp paf /[p.n.r.ark]))
|
||||||
|
* (chew-file paf '! many')
|
||||||
|
==
|
||||||
::
|
::
|
||||||
++ eat-help
|
++ eat-help
|
||||||
|= app=term
|
|= app=term
|
||||||
@ -505,9 +510,9 @@
|
|||||||
!>([%rush %term-line `term-line`[pro(r a) ~ ~]])
|
!>([%rush %term-line `term-line`[pro(r a) ~ ~]])
|
||||||
--
|
--
|
||||||
--
|
--
|
||||||
!:
|
::
|
||||||
:::: formal interface
|
:::: formal interface
|
||||||
::
|
!:
|
||||||
|_ [hid=hide vat=axle]
|
|_ [hid=hide vat=axle]
|
||||||
::
|
::
|
||||||
++ peer :: handle subscription
|
++ peer :: handle subscription
|
||||||
|
650
main/app/sole/core.hook
Normal file
650
main/app/sole/core.hook
Normal file
@ -0,0 +1,650 @@
|
|||||||
|
:: :: ::
|
||||||
|
:::: /hook/core/sole/app :: ::
|
||||||
|
:: :: ::
|
||||||
|
/? 314 :: zuse version
|
||||||
|
/- *sole :: console structures
|
||||||
|
/+ sole :: console library
|
||||||
|
:: :: ::
|
||||||
|
:::: :: ::
|
||||||
|
!: :: ::
|
||||||
|
=> |% :: data structures
|
||||||
|
++ house :: all state
|
||||||
|
$: bin=(map bone source) :: input devices
|
||||||
|
== ::
|
||||||
|
++ source :: input device
|
||||||
|
$: edg=_79 :: terminal columns
|
||||||
|
off=@ud :: window offset
|
||||||
|
kil=(unit (list ,@c)) :: kill buffer
|
||||||
|
apt=(list gill) :: application ring
|
||||||
|
maz=master :: master window
|
||||||
|
feg=(map gill target) :: live applications
|
||||||
|
mir=(pair ,@ud (list ,@c)) :: mirrored terminal
|
||||||
|
== ::
|
||||||
|
++ master :: master buffer
|
||||||
|
$: liv=? :: master is live
|
||||||
|
tar=target :: master target
|
||||||
|
== ::
|
||||||
|
++ history :: past input
|
||||||
|
$: pos=@ud :: input position
|
||||||
|
num=@ud :: number of entries
|
||||||
|
lay=(map ,@ud (list ,@c)) :: editing overlay
|
||||||
|
old=(list (list ,@c)) :: entries proper
|
||||||
|
== ::
|
||||||
|
++ search :: reverse-i-search
|
||||||
|
$: pos=@ud :: search position
|
||||||
|
str=(list ,@c) :: search string
|
||||||
|
== ::
|
||||||
|
++ target :: application target
|
||||||
|
$: ris=(unit search) :: reverse-i-search
|
||||||
|
hit=history :: all past input
|
||||||
|
pom=sole-prompt :: static prompt
|
||||||
|
inp=sole-command :: input state
|
||||||
|
== ::
|
||||||
|
++ ukase :: master command
|
||||||
|
$% [%add p=(list gill)] :: add agents
|
||||||
|
[%del p=(list gill)] :: delete agents
|
||||||
|
== ::
|
||||||
|
++ gift :: out result <-$
|
||||||
|
$% [%mean p=ares] ::
|
||||||
|
[%nice ~] ::
|
||||||
|
[%rush %dill-blit dill-blit] ::
|
||||||
|
== ::
|
||||||
|
++ sign-gall :: sign from %gall
|
||||||
|
$% [%mean p=ares] ::
|
||||||
|
[%nice ~] ::
|
||||||
|
[%rush %sole-effect sole-effect] ::
|
||||||
|
== ::
|
||||||
|
++ sign :: in result $<-
|
||||||
|
$% [%g sign-gall] ::
|
||||||
|
== ::
|
||||||
|
++ move ,[p=bone q=(mold note gift)] ::
|
||||||
|
++ note-gall :: note to %gall
|
||||||
|
$% [%mess p=[p=ship q=path] q=ship r=cage] ::
|
||||||
|
[%nuke p=[p=ship q=path] q=ship] ::
|
||||||
|
[%show p=[p=ship q=path] q=ship r=path] ::
|
||||||
|
[%took p=[p=ship q=path] q=ship] ::
|
||||||
|
== ::
|
||||||
|
++ note :: out request $->
|
||||||
|
$% [%g note-gall] ::
|
||||||
|
== ::
|
||||||
|
-- ::
|
||||||
|
|_ $: hid=hide :: system state
|
||||||
|
house :: program state
|
||||||
|
== ::
|
||||||
|
++ sp
|
||||||
|
|% ++ sp-ukase
|
||||||
|
%+ knee *ukase |. ~+
|
||||||
|
;~ pose
|
||||||
|
(stag %add ;~(pfix lus sp-gills))
|
||||||
|
(stag %del ;~(pfix hep sp-gills))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ sp-gills
|
||||||
|
;~ pose
|
||||||
|
(most ;~(plug com ace) sp-gill)
|
||||||
|
%+ cook
|
||||||
|
|= a=ship
|
||||||
|
[[a %dojo] [a %talk] ~]
|
||||||
|
;~(pfix sig fed:ag)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ sp-gill
|
||||||
|
;~ pose
|
||||||
|
(stag our.hid sym)
|
||||||
|
;~ plug
|
||||||
|
;~(pfix sig fed:ag)
|
||||||
|
;~(pfix fas sym)
|
||||||
|
==
|
||||||
|
==
|
||||||
|
--
|
||||||
|
++ se :: per source
|
||||||
|
|_ $: [moz=(list move) biz=(list dill-blit)]
|
||||||
|
[her=ship ost=bone]
|
||||||
|
source
|
||||||
|
==
|
||||||
|
++ se-abet :: resolve
|
||||||
|
:_ %_(+> bin (~(put by bin) ost +<+>))
|
||||||
|
%+ welp (flop moz)
|
||||||
|
^- (list move)
|
||||||
|
?~ biz ~
|
||||||
|
[ost %give %rush %dill-blit ?~(t.biz i.biz [%mor (flop biz)])]~
|
||||||
|
::
|
||||||
|
++ se-belt :: handle input
|
||||||
|
|= bet=dill-belt
|
||||||
|
^+ +>
|
||||||
|
?: ?=(%rez -.bet)
|
||||||
|
+>(edg (dec p.bet))
|
||||||
|
?: ?=(%yow -.bet)
|
||||||
|
(se-link p.bet)
|
||||||
|
=+ gyl=?^(apt i.apt [~zod %$])
|
||||||
|
=+ taz=~(. ta [& liv.maz gyl] ?:(liv.maz tar.maz (~(got by feg) gyl)))
|
||||||
|
=< ta-abet
|
||||||
|
?- -.bet
|
||||||
|
%aro (ta-aro:taz p.bet)
|
||||||
|
%bac ta-bac:taz
|
||||||
|
%cru (ta-cru:taz p.bet q.bet)
|
||||||
|
%ctl (ta-ctl:taz p.bet)
|
||||||
|
%del ta-del:taz
|
||||||
|
%met (ta-met:taz p.bet)
|
||||||
|
%ret ta-ret:taz
|
||||||
|
%txt (ta-txt:taz p.bet)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ se-drop :: passive drop
|
||||||
|
|= gyl=gill
|
||||||
|
^+ +>
|
||||||
|
=< se-prom
|
||||||
|
?> (~(has by feg) gyl)
|
||||||
|
%_ +>
|
||||||
|
feg (~(del by feg) gyl)
|
||||||
|
apt (skip apt |=(a=gill =(gyl a)))
|
||||||
|
liv.maz ?~(apt & liv.maz)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ se-join :: add connection
|
||||||
|
|= gyl=gill
|
||||||
|
^+ +>
|
||||||
|
=< se-prom
|
||||||
|
?: (~(has by feg) gyl)
|
||||||
|
(se-blit %bel ~)
|
||||||
|
+>(liv.maz |, apt [gyl apt], feg (~(put by feg) gyl *target))
|
||||||
|
::
|
||||||
|
++ se-nuke :: active drop
|
||||||
|
|= gyl=gill
|
||||||
|
^+ +>
|
||||||
|
(se-drop:(se-send(liv.maz |) gyl %nuke [p.gyl ~[q.gyl]] her) gyl)
|
||||||
|
::
|
||||||
|
++ se-like :: act in master
|
||||||
|
|= kus=ukase
|
||||||
|
?- -.kus
|
||||||
|
%add
|
||||||
|
|- ^+ +>.^$
|
||||||
|
?~ p.kus +>.^$
|
||||||
|
$(p.kus t.p.kus, +>.^$ (se-link i.p.kus))
|
||||||
|
::
|
||||||
|
%del
|
||||||
|
|- ^+ +>.^$
|
||||||
|
?~ p.kus +>.^$
|
||||||
|
$(p.kus t.p.kus, +>.^$ (se-nuke i.p.kus))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ se-prom :: set master prompt
|
||||||
|
^+ .
|
||||||
|
%_ .
|
||||||
|
cad.pom.tar.maz
|
||||||
|
^- tape
|
||||||
|
%+ welp
|
||||||
|
(scow %p our.hid)
|
||||||
|
=+ ^= mux
|
||||||
|
|- ^- tape
|
||||||
|
?~ apt ~
|
||||||
|
=+ ^= mor ^- tape
|
||||||
|
?~ t.apt ~
|
||||||
|
[',' ' ' $(apt t.apt)]
|
||||||
|
%+ welp
|
||||||
|
^- tape
|
||||||
|
=+ txt=(trip q.i.apt)
|
||||||
|
?: =(our.hid p.i.apt)
|
||||||
|
txt
|
||||||
|
:(welp "~" (scow %p p.i.apt) "/" txt)
|
||||||
|
mor
|
||||||
|
?~ mux
|
||||||
|
"# "
|
||||||
|
:(welp ":" mux "# ")
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ se-link :: connect to app
|
||||||
|
|= gyl=gill
|
||||||
|
^+ +>
|
||||||
|
%. gyl
|
||||||
|
=< se-join
|
||||||
|
(se-send gyl %show [p.gyl ~[q.gyl]] her /sole)
|
||||||
|
::
|
||||||
|
++ se-blit :: give output
|
||||||
|
|= bil=dill-blit
|
||||||
|
+>(biz [bil biz])
|
||||||
|
::
|
||||||
|
++ se-show :: show buffer, raw
|
||||||
|
|= lin=(pair ,@ud (list ,@c))
|
||||||
|
^+ +>
|
||||||
|
?: =(mir lin) +>
|
||||||
|
=. +> ?:(=(q.mir q.lin) +> (se-blit %pro q.lin))
|
||||||
|
=. +> ?:(=(p.mir p.lin) +> (se-blit %hop p.lin))
|
||||||
|
+>(mir lin)
|
||||||
|
::
|
||||||
|
++ se-just :: adjusted buffer
|
||||||
|
|= lin=(pair ,@ud (list ,@c))
|
||||||
|
^+ +>
|
||||||
|
=. off ?:((lth p.lin edg) 0 (sub p.lin edg))
|
||||||
|
(se-show (sub p.lin off) (scag edg (slag off q.lin)))
|
||||||
|
::
|
||||||
|
++ se-view :: flush buffer
|
||||||
|
?: liv.maz
|
||||||
|
(se-just ~(ta-vew ta [& & ~zod %$] tar.maz))
|
||||||
|
?~ apt
|
||||||
|
se-view(liv.maz &)
|
||||||
|
%- se-just
|
||||||
|
~(ta-vew ta [& | i.apt] (~(got by feg) i.apt))
|
||||||
|
::
|
||||||
|
++ se-kill :: kill a source
|
||||||
|
=+ tup=apt
|
||||||
|
|- ^+ +>
|
||||||
|
?~ tup +>(apt ~)
|
||||||
|
$(tup +.tup, +> (se-nuke i.tup))
|
||||||
|
::
|
||||||
|
++ se-emit :: emit move
|
||||||
|
|= mov=move
|
||||||
|
%_(+> moz [mov moz])
|
||||||
|
::
|
||||||
|
++ se-send :: send a message
|
||||||
|
|= [gyl=gill nog=note-gall]
|
||||||
|
(se-emit ost %pass [(scot %p her) (scot %p p.gyl) q.gyl ~] %g nog)
|
||||||
|
::
|
||||||
|
++ se-tame
|
||||||
|
|= gyl=gill
|
||||||
|
^+ ta
|
||||||
|
~(. ta [& %| gyl] (~(got by feg) gyl))
|
||||||
|
::
|
||||||
|
++ se-pour :: receive results
|
||||||
|
|= [gyl=gill sil=sign-gall]
|
||||||
|
^+ +>
|
||||||
|
?- -.sil
|
||||||
|
%mean
|
||||||
|
+>.$
|
||||||
|
::
|
||||||
|
%nice
|
||||||
|
+>.$
|
||||||
|
::
|
||||||
|
%rush
|
||||||
|
ta-abet:ta-rap:(ta-fec:(se-tame gyl) +>.sil)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ ta :: per target
|
||||||
|
|_ $: $: liv=? :: don't delete
|
||||||
|
mav=? :: showing master
|
||||||
|
gyl=gill :: target app
|
||||||
|
== ::
|
||||||
|
target :: target state
|
||||||
|
== ::
|
||||||
|
++ ta-abet :: resolve
|
||||||
|
^+ ..ta
|
||||||
|
=. liv.maz mav
|
||||||
|
?: mav
|
||||||
|
?. liv
|
||||||
|
(se-blit `dill-blit`[%qit ~])
|
||||||
|
+>(tar.maz +<+)
|
||||||
|
?. liv
|
||||||
|
=. ..ta (se-nuke gyl)
|
||||||
|
..ta(liv.maz =(~ apt))
|
||||||
|
%_(+> feg (~(put by feg) gyl +<+))
|
||||||
|
::
|
||||||
|
++ ta-ant :: toggle master
|
||||||
|
^+ .
|
||||||
|
?: mav
|
||||||
|
?~ apt ta-bel
|
||||||
|
%_ .
|
||||||
|
mav |
|
||||||
|
+<+ (~(got by feg) gyl)
|
||||||
|
tar.maz +<+
|
||||||
|
==
|
||||||
|
%_ .
|
||||||
|
mav &
|
||||||
|
+<+ tar.maz
|
||||||
|
feg (~(put by feg) gyl +<+)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ ta-act :: send action
|
||||||
|
|= act=sole-action
|
||||||
|
^+ +>
|
||||||
|
?: mav
|
||||||
|
+>.$
|
||||||
|
%_ +>
|
||||||
|
+>
|
||||||
|
(se-send gyl %mess [p.gyl ~[q.gyl]] her %sole-action !>(act))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ ta-aro :: hear arrow
|
||||||
|
|= key=?(%d %l %r %u)
|
||||||
|
^+ +>
|
||||||
|
?- key
|
||||||
|
%d =. ris ~
|
||||||
|
?. =(num.hit pos.hit)
|
||||||
|
(ta-mov +(pos.hit))
|
||||||
|
?: =(0 (lent buf.say.inp))
|
||||||
|
ta-bel
|
||||||
|
(ta-hom:ta-nex %set ~)
|
||||||
|
%l ?^ ris ta-bel
|
||||||
|
?: =(0 pos.inp) ta-bel
|
||||||
|
+>(pos.inp (dec pos.inp))
|
||||||
|
%r ?^ ris ta-bel
|
||||||
|
?: =((lent buf.say.inp) pos.inp)
|
||||||
|
ta-bel
|
||||||
|
+>(pos.inp +(pos.inp))
|
||||||
|
%u =. ris ~
|
||||||
|
?:(=(0 pos.hit) ta-bel (ta-mov (dec pos.hit)))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ ta-bel .(+> (se-blit %bel ~)) :: beep
|
||||||
|
++ ta-cat :: mass insert
|
||||||
|
|= [pos=@ud txt=(list ,@c)]
|
||||||
|
^- sole-edit
|
||||||
|
:- %mor
|
||||||
|
|- ^- (list sole-edit)
|
||||||
|
?~ txt ~
|
||||||
|
[[%ins pos i.txt] $(pos +(pos), txt t.txt)]
|
||||||
|
::
|
||||||
|
++ ta-cut :: mass delete
|
||||||
|
|= [pos=@ud num=@ud]
|
||||||
|
^- sole-edit
|
||||||
|
:- %mor
|
||||||
|
|-(?:(=(0 num) ~ [[%del pos] $(num (dec num))]))
|
||||||
|
::
|
||||||
|
++ ta-det :: send edit
|
||||||
|
|= ted=sole-edit
|
||||||
|
^+ +>
|
||||||
|
(ta-act %det [[his.ven.say.inp own.ven.say.inp] (sham buf.say.inp) ted])
|
||||||
|
::
|
||||||
|
++ ta-bac :: hear backspace
|
||||||
|
^+ .
|
||||||
|
?^ ris
|
||||||
|
?: =(~ str.u.ris)
|
||||||
|
ta-bel
|
||||||
|
.(str.u.ris (scag (dec (lent str.u.ris)) str.u.ris))
|
||||||
|
?: =(0 pos.inp)
|
||||||
|
.(+> (se-blit %bel ~))
|
||||||
|
=+ pre=(dec pos.inp)
|
||||||
|
(ta-hom(pos.inp pre) %del pre)
|
||||||
|
::
|
||||||
|
++ ta-ctl :: hear control
|
||||||
|
|= key=@c
|
||||||
|
^+ +>
|
||||||
|
?+ key ta-bel
|
||||||
|
%a +>(pos.inp 0)
|
||||||
|
%b (ta-aro %l)
|
||||||
|
%c ta-bel(ris ~)
|
||||||
|
%d ?: &(=(0 pos.inp) =(0 (lent buf.say.inp)))
|
||||||
|
+>(liv |)
|
||||||
|
ta-del
|
||||||
|
%e +>(pos.inp (lent buf.say.inp))
|
||||||
|
%f (ta-aro %r)
|
||||||
|
%g ta-bel(ris ~)
|
||||||
|
%k =+ len=(lent buf.say.inp)
|
||||||
|
?: =(pos.inp len)
|
||||||
|
ta-bel
|
||||||
|
%- ta-hom(kil `(slag pos.inp buf.say.inp))
|
||||||
|
(ta-cut pos.inp (sub len pos.inp))
|
||||||
|
%l +>(+> (se-blit %clr ~))
|
||||||
|
%n (ta-aro %d)
|
||||||
|
%p (ta-aro %u)
|
||||||
|
%r ?~ ris
|
||||||
|
+>(ris `[pos.hit ~])
|
||||||
|
?: =(0 pos.u.ris)
|
||||||
|
ta-bel
|
||||||
|
(ta-ser ~)
|
||||||
|
%t =+ len=(lent buf.say.inp)
|
||||||
|
?: |(=(0 pos.inp) (lth len 2))
|
||||||
|
ta-bel
|
||||||
|
=+ sop=?:(=(len pos.inp) (dec pos.inp) pos.inp)
|
||||||
|
=. pos.inp +(sop)
|
||||||
|
%- ta-hom
|
||||||
|
:~ %mor
|
||||||
|
[%del sop]
|
||||||
|
[%ins (dec sop) (snag sop buf.say.inp)]
|
||||||
|
==
|
||||||
|
%u ?: =(0 pos.inp)
|
||||||
|
ta-bel
|
||||||
|
%- ta-hom(pos.inp 0, kil `(scag pos.inp buf.say.inp))
|
||||||
|
(ta-cut 0 pos.inp)
|
||||||
|
%v ta-ant
|
||||||
|
%x ?: =(~ apt) ta-bel
|
||||||
|
?: mav ta-bel
|
||||||
|
+>(apt (welp (slag 1 apt) [(snag 0 apt) ~]))
|
||||||
|
%y ?~ kil ta-bel
|
||||||
|
%- ta-hom(pos.inp (add pos.inp (lent u.kil)))
|
||||||
|
(ta-cat pos.inp u.kil)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ ta-cru :: hear crud
|
||||||
|
|= [lab=@tas tac=(list tank)]
|
||||||
|
=. +>+> (se-blit %out (tuba (trip lab)))
|
||||||
|
(ta-tan tac)
|
||||||
|
::
|
||||||
|
++ ta-del :: hear delete
|
||||||
|
^+ .
|
||||||
|
?: =((lent buf.say.inp) pos.inp)
|
||||||
|
.(+> (se-blit %bel ~))
|
||||||
|
(ta-hom %del pos.inp)
|
||||||
|
::
|
||||||
|
++ ta-erl :: hear local error
|
||||||
|
|= pos=@ud
|
||||||
|
ta-bel(pos.inp (min pos (lent buf.say.inp)))
|
||||||
|
::
|
||||||
|
++ ta-err :: hear remote error
|
||||||
|
|= pos=@ud
|
||||||
|
(ta-erl (~(transpose cs say.inp) pos))
|
||||||
|
::
|
||||||
|
++ ta-fec :: apply effect
|
||||||
|
|= fec=sole-effect
|
||||||
|
^+ +>
|
||||||
|
?- -.fec
|
||||||
|
%bel ta-bel
|
||||||
|
%blk +>
|
||||||
|
%clr +>(+> (se-blit fec))
|
||||||
|
%det (ta-got +.fec)
|
||||||
|
%err (ta-err +.fec)
|
||||||
|
%mor |- ^+ +>.^$
|
||||||
|
?~ p.fec +>.^$
|
||||||
|
$(p.fec t.p.fec, +>.^$ ^$(fec i.p.fec))
|
||||||
|
%nex ta-nex
|
||||||
|
%pro (ta-pro +.fec)
|
||||||
|
%tan (ta-tan p.fec)
|
||||||
|
%sag +>(+> (se-blit fec))
|
||||||
|
%sav +>(+> (se-blit fec))
|
||||||
|
%txt $(fec [%tan [%leaf p.fec]~])
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ ta-rap :: send %took
|
||||||
|
.(+> (se-send gyl %took [p.gyl ~[q.gyl]] her))
|
||||||
|
::
|
||||||
|
++ ta-dog :: change cursor
|
||||||
|
|= ted=sole-edit
|
||||||
|
%_ +>
|
||||||
|
pos.inp
|
||||||
|
=+ len=(lent buf.say.inp)
|
||||||
|
%+ min len
|
||||||
|
|- ^- @ud
|
||||||
|
?- -.ted
|
||||||
|
%del ?:((gth pos.inp p.ted) (dec pos.inp) pos.inp)
|
||||||
|
%ins ?:((lte pos.inp p.ted) +(pos.inp) pos.inp)
|
||||||
|
%mor |- ^- @ud
|
||||||
|
?~ p.ted pos.inp
|
||||||
|
$(p.ted t.p.ted, pos.inp ^$(ted i.p.ted))
|
||||||
|
%nop pos.inp
|
||||||
|
%set len
|
||||||
|
==
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ ta-got :: apply change
|
||||||
|
|= cal=sole-change
|
||||||
|
=^ ted say.inp (~(receive cs say.inp) cal)
|
||||||
|
(ta-dog ted)
|
||||||
|
::
|
||||||
|
++ ta-hom :: local edit
|
||||||
|
|= ted=sole-edit
|
||||||
|
^+ +>
|
||||||
|
=. +> (ta-det ted)
|
||||||
|
=. +> (ta-dog(say.inp (~(commit cs say.inp) ted)) ted)
|
||||||
|
+>
|
||||||
|
::
|
||||||
|
++ ta-met :: meta key
|
||||||
|
|= key=@c
|
||||||
|
~& [%ta-met key]
|
||||||
|
+>
|
||||||
|
::
|
||||||
|
++ ta-mov :: move in history
|
||||||
|
|= sop=@ud
|
||||||
|
^+ +>
|
||||||
|
?: =(sop pos.hit) +>
|
||||||
|
%+ %= ta-hom
|
||||||
|
pos.hit sop
|
||||||
|
lay.hit %+ ~(put by lay.hit)
|
||||||
|
pos.hit
|
||||||
|
buf.say.inp
|
||||||
|
==
|
||||||
|
%set
|
||||||
|
%- (bond |.((snag (sub num.hit +(sop)) old.hit)))
|
||||||
|
(~(get by lay.hit) sop)
|
||||||
|
::
|
||||||
|
++ ta-nex :: advance history
|
||||||
|
%_ .
|
||||||
|
num.hit +(num.hit)
|
||||||
|
pos.hit +(num.hit)
|
||||||
|
ris ~
|
||||||
|
lay.hit ~
|
||||||
|
old.hit [buf.say.inp old.hit]
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ ta-pro :: set prompt
|
||||||
|
|= pom=sole-prompt
|
||||||
|
+>(pom pom(cad :(welp (scow %p p.gyl) ":" (trip q.gyl) cad.pom)))
|
||||||
|
::
|
||||||
|
++ ta-ret :: hear return
|
||||||
|
?. mav
|
||||||
|
(ta-act %ret ~)
|
||||||
|
=+ txt=(tufa buf.say.inp)
|
||||||
|
=+ fey=(rose txt sp-ukase:sp)
|
||||||
|
?- -.fey
|
||||||
|
%| (ta-erl (lent (tuba (scag p.fey txt))))
|
||||||
|
%& ?~ p.fey
|
||||||
|
(ta-erl (lent buf.say.inp))
|
||||||
|
=. +>+> (se-like u.p.fey)
|
||||||
|
=. pom pom.tar.maz
|
||||||
|
(ta-hom:ta-nex %set ~)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ ta-ser :: reverse search
|
||||||
|
|= ext=(list ,@c)
|
||||||
|
^+ +>
|
||||||
|
?: |(?=(~ ris) =(0 pos.u.ris)) ta-bel
|
||||||
|
=+ tot=(weld str.u.ris ext)
|
||||||
|
=+ dol=(slag (sub num.hit pos.u.ris) old.hit)
|
||||||
|
=+ sop=pos.u.ris
|
||||||
|
=+ ^= ser
|
||||||
|
=+ ^= beg
|
||||||
|
|= [a=(list ,@c) b=(list ,@c)] ^- ?
|
||||||
|
?~(a & ?~(b | &(=(i.a i.b) $(a t.a, b t.b))))
|
||||||
|
|= [a=(list ,@c) b=(list ,@c)] ^- ?
|
||||||
|
?~(a & ?~(b | |((beg a b) $(b t.b))))
|
||||||
|
=+ ^= sup
|
||||||
|
|- ^- (unit ,@ud)
|
||||||
|
?~ dol ~
|
||||||
|
?: (ser tot i.dol)
|
||||||
|
`sop
|
||||||
|
$(sop (dec sop), dol t.dol)
|
||||||
|
?~ sup ta-bel
|
||||||
|
(ta-mov(str.u.ris tot, pos.u.ris (dec u.sup)) (dec u.sup))
|
||||||
|
::
|
||||||
|
++ ta-tan :: print tanks
|
||||||
|
|= tac=(list tank)
|
||||||
|
=+ wol=`wall`(zing (turn tac |=(a=tank (~(win re a) [0 edg]))))
|
||||||
|
|- ^+ +>.^$
|
||||||
|
?~ wol +>.^$
|
||||||
|
$(wol t.wol, +>+>.^$ (se-blit %out (tuba i.wol)))
|
||||||
|
::
|
||||||
|
++ ta-txt :: hear text
|
||||||
|
|= txt=(list ,@c)
|
||||||
|
^+ +>
|
||||||
|
?^ ris
|
||||||
|
(ta-ser txt)
|
||||||
|
%- ta-hom(pos.inp (add (lent txt) pos.inp))
|
||||||
|
:- %mor
|
||||||
|
|- ^- (list sole-edit)
|
||||||
|
?~ txt ~
|
||||||
|
[[%ins pos.inp i.txt] $(pos.inp +(pos.inp), txt t.txt)]
|
||||||
|
::
|
||||||
|
++ ta-vew :: computed prompt
|
||||||
|
|- ^- (pair ,@ud (list ,@c))
|
||||||
|
?^ ris
|
||||||
|
%= $
|
||||||
|
ris ~
|
||||||
|
cad.pom
|
||||||
|
:(welp "(reverse-i-search)'" (tufa str.u.ris) "': ")
|
||||||
|
==
|
||||||
|
=- [(add pos.inp (lent p.vew)) (weld (tuba p.vew) q.vew)]
|
||||||
|
^= vew ^- (pair tape (list ,@c))
|
||||||
|
?: vis.pom [cad.pom buf.say.inp]
|
||||||
|
:- ;: welp
|
||||||
|
cad.pom
|
||||||
|
?~ buf.say.inp ~
|
||||||
|
;: welp
|
||||||
|
"<"
|
||||||
|
(scow %p (end 4 1 (sham buf.say.inp)))
|
||||||
|
"> "
|
||||||
|
==
|
||||||
|
==
|
||||||
|
=+ len=(lent buf.say.inp)
|
||||||
|
|- ^- (list ,@c)
|
||||||
|
?:(=(0 len) ~ [`@c`'*' $(len (dec len))])
|
||||||
|
--
|
||||||
|
--
|
||||||
|
++ peer
|
||||||
|
|= [ost=bone her=ship pax=path]
|
||||||
|
^- [(list move) _+>]
|
||||||
|
:: ~& [%sole-peer ost her pax]
|
||||||
|
?< (~(has by bin) ost)
|
||||||
|
:- [ost %give %rush %dill-blit %pro [`@c`0x23 `@c`0x20 ~]]~
|
||||||
|
%= +>
|
||||||
|
bin
|
||||||
|
%+ ~(put by bin) ost
|
||||||
|
^- source
|
||||||
|
:* 80
|
||||||
|
0
|
||||||
|
~
|
||||||
|
~
|
||||||
|
:* %&
|
||||||
|
*(unit search)
|
||||||
|
*history
|
||||||
|
`sole-prompt`[%& %sole "{(scow %p our.hid)}# "]
|
||||||
|
*sole-command
|
||||||
|
==
|
||||||
|
~
|
||||||
|
[0 ~]
|
||||||
|
==
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ poke-dill-belt
|
||||||
|
|= [ost=bone her=ship bet=dill-belt]
|
||||||
|
^- [(list move) _+>]
|
||||||
|
:: ~& [%sole-poke ost her bet]
|
||||||
|
=+ yog=(~(get by bin) ost)
|
||||||
|
?~ yog
|
||||||
|
~& [%sole-poke-stale ost]
|
||||||
|
[~ +>.$]
|
||||||
|
=< se-abet
|
||||||
|
=< se-view
|
||||||
|
(~(se-belt se [[ost %give %nice ~]~ ~] [her ost] u.yog) bet)
|
||||||
|
::
|
||||||
|
++ pour
|
||||||
|
|= [ost=bone pax=path sih=*]
|
||||||
|
^- [(list move) _+>]
|
||||||
|
=+ yog=(~(get by bin) ost)
|
||||||
|
?~ yog
|
||||||
|
~& [%sole-pour-stale ost pax]
|
||||||
|
[~ +>.$]
|
||||||
|
=+ sih=((hard sign) sih)
|
||||||
|
?> ?=([@ @ @ ~] pax)
|
||||||
|
=< se-abet
|
||||||
|
=< se-view
|
||||||
|
=+ gyl=[(slav %p i.t.pax) i.t.t.pax]
|
||||||
|
(~(se-pour se [~ ~] [(slav %p i.pax) ost] u.yog) gyl +.sih)
|
||||||
|
::
|
||||||
|
++ pull
|
||||||
|
|= ost=bone
|
||||||
|
^- [(list move) _+>]
|
||||||
|
:: ~& [%sole-pull ost]
|
||||||
|
=^ moz +>
|
||||||
|
=< se-abet
|
||||||
|
=< se-view
|
||||||
|
~(se-kill se [~ ~] [our.hid ost] (~(got by bin) ost))
|
||||||
|
[moz +>.$(bin (~(del by bin) ost))]
|
||||||
|
--
|
File diff suppressed because it is too large
Load Diff
28
main/app/tease/core.hook
Normal file
28
main/app/tease/core.hook
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
:: :: ::
|
||||||
|
:::: /hook/core/tease/app :: ::
|
||||||
|
:: :: ::
|
||||||
|
/? 314 :: zuse version
|
||||||
|
/- *console :: console structures
|
||||||
|
/+ console :: console library
|
||||||
|
!: :: ::
|
||||||
|
:::: :: ::
|
||||||
|
:: :: ::
|
||||||
|
|_ [hid=hide ~]
|
||||||
|
++ peer ,_`.
|
||||||
|
++ poke--args
|
||||||
|
|= [ost=bone you=ship ~]
|
||||||
|
~& %tease
|
||||||
|
:_ +>.$
|
||||||
|
:~ :* 0 %pass ~
|
||||||
|
%g %show
|
||||||
|
[our.hid /seat] our.hid
|
||||||
|
/
|
||||||
|
==
|
||||||
|
:* 0 %pass ~
|
||||||
|
%g %mess
|
||||||
|
[our.hid /seat] our.hid
|
||||||
|
%dill-belt
|
||||||
|
!>(`dill-belt`[%yow %helm])
|
||||||
|
==
|
||||||
|
==
|
||||||
|
--
|
@ -285,7 +285,7 @@
|
|||||||
++ pour
|
++ pour
|
||||||
|= [ost=bone pax=path sih=*]
|
|= [ost=bone pax=path sih=*]
|
||||||
^- [(list move) _+>]
|
^- [(list move) _+>]
|
||||||
=+ sih=((hard sign) sih)
|
=+ sih=~|([%term-pour (,[term term ~] sih)] ((hard sign) sih))
|
||||||
?: ?=(?(%sage %init %logo %verb %veer %vega) &2.sih) :: vomit
|
?: ?=(?(%sage %init %logo %verb %veer %vega) &2.sih) :: vomit
|
||||||
[[ost %give +.sih]~ +>.$]
|
[[ost %give +.sih]~ +>.$]
|
||||||
?~ pax !!
|
?~ pax !!
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
;head
|
;head
|
||||||
;title: Hi
|
;title: Hi
|
||||||
;script: window.urb = window.urb || \{};
|
;script: window.urb = window.urb || \{};
|
||||||
;script@"/gen/main/lib/urb.js";
|
;script@"/~/at/main/lib/urb.js";
|
||||||
;script@"//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js";
|
;script@"//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js";
|
||||||
;script@"//cdnjs.cloudflare.com/ajax/libs/mousetrap/1.4.6/mousetrap.js";
|
;script@"//cdnjs.cloudflare.com/ajax/libs/mousetrap/1.4.6/mousetrap.js";
|
||||||
;script@"//use.typekit.net/fkv0sjk.js";
|
;script@"//use.typekit.net/fkv0sjk.js";
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
urb.appl = urb.appl ||
|
||||||
|
window.location.pathname.match(/.*?app\/([a-z0-9-]+)/)[1]
|
||||||
|
urb.term = urb.term ||
|
||||||
|
{pax: location.pathname.replace(new RegExp(".*?app/"+urb.appl),'') || '/'}
|
||||||
|
|
||||||
function jpok(a,b){
|
function jpok(a,b){
|
||||||
var dat = {pax:urb.term.pax, act:{}}
|
var dat = {pax:urb.term.pax, act:{}}
|
||||||
dat.act[a] = b
|
dat.act[a] = b
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
:::: /hook/core/test/app
|
:::: /hook/core/test/app
|
||||||
::
|
::
|
||||||
/? 314 :: need urbit 314
|
/? 314 :: need urbit 314
|
||||||
/= front /:/%%/front:/hymn/ :: load front page
|
:: /= front /:/%%/front:/hymn/ :: load front page
|
||||||
::
|
::
|
||||||
:::: structures
|
:::: structures
|
||||||
::
|
::
|
||||||
@ -297,7 +297,7 @@
|
|||||||
|= [ost=bone you=ship pax=path]
|
|= [ost=bone you=ship pax=path]
|
||||||
^- [(list move) _+>]
|
^- [(list move) _+>]
|
||||||
~& [%test-peer hid]
|
~& [%test-peer hid]
|
||||||
?~ pax [[ost %give %rust %hymn front]~ +>.$]
|
?~ pax !! ::[[ost %give %rust %hymn front]~ +>.$]
|
||||||
?: ?=(%tests -.pax)
|
?: ?=(%tests -.pax)
|
||||||
[[ost %give %rust %json tests-json:et]~ +>.$]
|
[[ost %give %rust %json tests-json:et]~ +>.$]
|
||||||
:_ +>.$ :_ ~
|
:_ +>.$ :_ ~
|
||||||
@ -308,7 +308,7 @@
|
|||||||
++ poke-json :: browser message
|
++ poke-json :: browser message
|
||||||
|= [ost=bone you=ship jon=json]
|
|= [ost=bone you=ship jon=json]
|
||||||
^- [(list move) _+>]
|
^- [(list move) _+>]
|
||||||
~& [%test-poke hid]
|
~& [%test-poke hid you]
|
||||||
=+ tes=((of [%test so] ~):jo jon)
|
=+ tes=((of [%test so] ~):jo jon)
|
||||||
?~ tes [[ost %give %mean ~ %strange-json ~]~ +>.$]
|
?~ tes [[ost %give %mean ~ %strange-json ~]~ +>.$]
|
||||||
=+ tst=(~(get by tests) +.u.tes)
|
=+ tst=(~(get by tests) +.u.tes)
|
||||||
|
@ -35,31 +35,31 @@
|
|||||||
++ move ,[p=duct q=(mold note gift)] :: local move
|
++ move ,[p=duct q=(mold note gift)] :: local move
|
||||||
++ note :: out request $->
|
++ note :: out request $->
|
||||||
$? $: %d :: to %dill
|
$? $: %d :: to %dill
|
||||||
$% [%flog p=flog] ::
|
$% [%flog p=flog] ::
|
||||||
== == ::
|
== == ::
|
||||||
$: %a :: to %ames
|
$: %a :: to %ames
|
||||||
$% [%kick p=@da] ::
|
$% [%kick p=@da] ::
|
||||||
== == ::
|
== == ::
|
||||||
$: %g :: to %gall
|
$: %g :: to %gall
|
||||||
$% [%rote p=sack q=path r=*] ::
|
$% [%rote p=sack q=path r=*] ::
|
||||||
[%roth p=sack q=path r=*] ::
|
[%roth p=sack q=path r=*] ::
|
||||||
[%mess p=[@p %ye ~] q=@p r=cage] ::
|
[%mess p=[@p %ye ~] q=@p r=cage] ::
|
||||||
== == ::
|
== == ::
|
||||||
$: @tas :: to any
|
$: @tas :: to any
|
||||||
$% [%init p=@p] ::
|
$% [%init p=@p] ::
|
||||||
[%want p=sock q=path r=*] ::
|
[%want p=sock q=path r=*] ::
|
||||||
[%wart p=sock q=@tas r=path s=*] ::
|
[%wart p=sock q=@tas r=path s=*] ::
|
||||||
== == == ::
|
== == == ::
|
||||||
++ sign :: in result $<-
|
++ sign :: in result $<-
|
||||||
$? $: %a :: from %ames
|
$? $: %a :: from %ames
|
||||||
$% [%went p=ship q=cape] ::
|
$% [%went p=ship q=cape] ::
|
||||||
== == ::
|
== == ::
|
||||||
$: %g :: from %gall
|
$: %g :: from %gall
|
||||||
$% [%mean p=ares] ::
|
$% [%mean p=ares] ::
|
||||||
[%nice ~] ::
|
[%nice ~] ::
|
||||||
== == ::
|
== == ::
|
||||||
$: @tas ::
|
$: @tas ::
|
||||||
$% [%crud p=@tas q=(list tank)] :: by any
|
$% [%crud p=@tas q=(list tank)] :: by any
|
||||||
== == == ::
|
== == == ::
|
||||||
--
|
--
|
||||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
@ -227,7 +227,7 @@
|
|||||||
0w0 :: 55, ~tep, Curtis Yarvin (sator)
|
0w0 :: 55, ~tep, Curtis Yarvin (sator)
|
||||||
0w0 :: 56, ~bes, Curtis Yarvin (sator)
|
0w0 :: 56, ~bes, Curtis Yarvin (sator)
|
||||||
0w0 :: 57, ~dex, Jared Hance (aestas)
|
0w0 :: 57, ~dex, Jared Hance (aestas)
|
||||||
0w0 :: 58, ~sef, Curtis Yarvin (sator)
|
0w0 :: 58, ~sef, Owen Rescher (lex)
|
||||||
0w0 :: 59, ~wyc, Curtis Yarvin (sator)
|
0w0 :: 59, ~wyc, Curtis Yarvin (sator)
|
||||||
0w0 :: 60, ~bur, Curtis Yarvin (sator)
|
0w0 :: 60, ~bur, Curtis Yarvin (sator)
|
||||||
0w0 :: 61, ~der, Curtis Yarvin (sator)
|
0w0 :: 61, ~der, Curtis Yarvin (sator)
|
||||||
@ -370,7 +370,7 @@
|
|||||||
0w0 :: 198, ~len, Tlon (gleba)
|
0w0 :: 198, ~len, Tlon (gleba)
|
||||||
0w0 :: 199, ~ner, Tlon (gleba)
|
0w0 :: 199, ~ner, Tlon (gleba)
|
||||||
0wv.aixe9.7gG2w.7cJiy.i3Mg8 :: 200, ~lex, Michael Hartl (donum)
|
0wv.aixe9.7gG2w.7cJiy.i3Mg8 :: 200, ~lex, Michael Hartl (donum)
|
||||||
0w0 :: 201, ~rup, Tlon (gleba)
|
0w0 :: 201, ~rup, Owen Rescher (lex)
|
||||||
0w0 :: 202, ~ned, Tlon (gleba)
|
0w0 :: 202, ~ned, Tlon (gleba)
|
||||||
0w0 :: 203, ~lec, Tlon (gleba)
|
0w0 :: 203, ~lec, Tlon (gleba)
|
||||||
0w0 :: 204, ~ryd, Tlon (gleba)
|
0w0 :: 204, ~ryd, Tlon (gleba)
|
||||||
@ -631,12 +631,12 @@
|
|||||||
=^ gim ..weft wisp
|
=^ gim ..weft wisp
|
||||||
:_ +>.$
|
:_ +>.$
|
||||||
^- (list rock)
|
^- (list rock)
|
||||||
=+ wit=(met ?:(fak.ton 18 13) q.gim)
|
=+ wit=(met ?:(fak.ton 16 13) q.gim)
|
||||||
?< =(0 wit)
|
?< =(0 wit)
|
||||||
?: =(1 wit)
|
?: =(1 wit)
|
||||||
=+ yup=(spit [our her] p.gim q.gim)
|
=+ yup=(spit [our her] p.gim q.gim)
|
||||||
[yup ~]
|
[yup ~]
|
||||||
=+ ruv=(rip ?:(fak.ton 18 13) q.gim)
|
=+ ruv=(rip ?:(fak.ton 16 13) q.gim)
|
||||||
=+ gom=(shaf %thug q.gim)
|
=+ gom=(shaf %thug q.gim)
|
||||||
=+ inx=0
|
=+ inx=0
|
||||||
|- ^- (list rock)
|
|- ^- (list rock)
|
||||||
@ -1409,7 +1409,7 @@
|
|||||||
=+ [nix=0 rax=*(list ,@)]
|
=+ [nix=0 rax=*(list ,@)]
|
||||||
|- ^- @
|
|- ^- @
|
||||||
?: =(p.duv nix)
|
?: =(p.duv nix)
|
||||||
(can ?:(fak.ton.fox 18 13) (turn (flop rax) |=(a=@ [1 a])))
|
(can ?:(fak.ton.fox 16 13) (turn (flop rax) |=(a=@ [1 a])))
|
||||||
$(nix +(nix), rax [(need (~(get by q.duv) nix)) rax])
|
$(nix +(nix), rax [(need (~(get by q.duv) nix)) rax])
|
||||||
-- :: --la:ho:um:am
|
-- :: --la:ho:um:am
|
||||||
::
|
::
|
||||||
@ -1662,7 +1662,6 @@
|
|||||||
?- -.bon
|
?- -.bon
|
||||||
%beer
|
%beer
|
||||||
:_ fox(zac (~(put by zac.fox) p.bon `corn`[hen ~ ~ ~]))
|
:_ fox(zac (~(put by zac.fox) p.bon `corn`[hen ~ ~ ~]))
|
||||||
:: ~& [%ames-clop p.bon hen]
|
|
||||||
:* [hen [%slip %c %init p.bon]]
|
:* [hen [%slip %c %init p.bon]]
|
||||||
[hen [%give %init p.bon]]
|
[hen [%give %init p.bon]]
|
||||||
[hen [%slip %a %kick now]]
|
[hen [%slip %a %kick now]]
|
||||||
@ -1688,6 +1687,8 @@
|
|||||||
%milk
|
%milk
|
||||||
:: ~& [%rx p.bon q.bon]
|
:: ~& [%rx p.bon q.bon]
|
||||||
?> ?=([@ *] q.q.bon)
|
?> ?=([@ *] q.q.bon)
|
||||||
|
?: ?=(%e i.q.q.bon)
|
||||||
|
:_(fox [hen [%slip %e %wart p.bon %$ t.q.q.bon r.bon]]~)
|
||||||
?: ?=(%r i.q.q.bon)
|
?: ?=(%r i.q.q.bon)
|
||||||
?: ?=([%ta *] t.q.q.bon)
|
?: ?=([%ta *] t.q.q.bon)
|
||||||
=+ wil=((hard (unit will)) r.bon)
|
=+ wil=((hard (unit will)) r.bon)
|
||||||
@ -1696,7 +1697,7 @@
|
|||||||
:+ (scot %p p.p.bon)
|
:+ (scot %p p.p.bon)
|
||||||
(scot %p q.p.bon)
|
(scot %p q.p.bon)
|
||||||
q.q.bon
|
q.q.bon
|
||||||
[hen %pass pax %g %rote p.bon /began 0 %m %will wil]~
|
[hen %pass pax %g %rote p.bon /helm 0 %m %will wil]~
|
||||||
?> ?=([@ @ *] t.q.q.bon)
|
?> ?=([@ @ *] t.q.q.bon)
|
||||||
:_ fox
|
:_ fox
|
||||||
=+ [cak=i.t.q.q.bon ven=i.t.t.q.q.bon]
|
=+ [cak=i.t.q.q.bon ven=i.t.t.q.q.bon]
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
::
|
::
|
||||||
|= pit=vase
|
|= pit=vase
|
||||||
=> |%
|
=> |%
|
||||||
++ bead ,[p=(set beam) q=gage] :: ford result
|
|
||||||
++ cane :: change set
|
++ cane :: change set
|
||||||
$: new=(map path lobe) :: new files
|
$: new=(map path lobe) :: new files
|
||||||
cal=(map path lobe) :: old diffs
|
cal=(map path lobe) :: old diffs
|
||||||
@ -91,7 +90,7 @@
|
|||||||
[%writ p=riot] ::
|
[%writ p=riot] ::
|
||||||
== == ::
|
== == ::
|
||||||
$: %f ::
|
$: %f ::
|
||||||
$% [%made p=(each bead (list tank))] ::
|
$% [%made p=@uvH q=(each gage (list tank))] ::
|
||||||
== == ::
|
== == ::
|
||||||
$: %t ::
|
$: %t ::
|
||||||
$% [%wake ~] :: timer activate
|
$% [%wake ~] :: timer activate
|
||||||
@ -216,15 +215,15 @@
|
|||||||
?~(nao ~ (read-at-aeon:ze u.nao mun))
|
?~(nao ~ (read-at-aeon:ze u.nao mun))
|
||||||
::
|
::
|
||||||
++ made-to-tage
|
++ made-to-tage
|
||||||
|= res=(each bead (list tank))
|
|= res=(each gage tang)
|
||||||
^- tage
|
^- tage
|
||||||
?: ?=(%| -.res)
|
?: ?=(%| -.res)
|
||||||
~| %ford-fail
|
~| %ford-fail
|
||||||
~> %mean.|.(p.res) :: interpolate ford fail into stack trace
|
~> %mean.|.(p.res) :: interpolate ford fail into stack trace
|
||||||
!!
|
!!
|
||||||
?@ p.q.p.res
|
?@ p.p.res
|
||||||
~|(%bad-marc !!)
|
~|(%bad-marc !!)
|
||||||
q.p.res
|
p.res
|
||||||
::
|
::
|
||||||
++ tage-to-cages
|
++ tage-to-cages
|
||||||
|= tab=tage
|
|= tab=tage
|
||||||
@ -587,7 +586,7 @@
|
|||||||
(checkout-ankh(lat.ran lat.ran.+.hat) u.-.hat)
|
(checkout-ankh(lat.ran lat.ran.+.hat) u.-.hat)
|
||||||
::
|
::
|
||||||
++ take-inserting
|
++ take-inserting
|
||||||
|= [wen=@da res=(each bead (list tank))]
|
|= [wen=@da res=(each gage tang)]
|
||||||
^+ +>
|
^+ +>
|
||||||
?~ dok
|
?~ dok
|
||||||
~& %clay-take-inserting-unexpected-made +>.$
|
~& %clay-take-inserting-unexpected-made +>.$
|
||||||
@ -607,7 +606,7 @@
|
|||||||
[((hard path) q.q.pax) cay]
|
[((hard path) q.q.pax) cay]
|
||||||
::
|
::
|
||||||
++ take-diffing
|
++ take-diffing
|
||||||
|= [wen=@da res=(each bead (list tank))]
|
|= [wen=@da res=(each gage tang)]
|
||||||
^+ +>
|
^+ +>
|
||||||
?~ dok
|
?~ dok
|
||||||
~& %clay-take-diffing-unexpected-made +>.$
|
~& %clay-take-diffing-unexpected-made +>.$
|
||||||
@ -629,7 +628,7 @@
|
|||||||
[paf (page-to-lobe:ze [p q.q]:cay) (~(got by dig.u.dok) paf)]
|
[paf (page-to-lobe:ze [p q.q]:cay) (~(got by dig.u.dok) paf)]
|
||||||
::
|
::
|
||||||
++ take-mutating
|
++ take-mutating
|
||||||
|= [wen=@da res=(each bead (list tank))]
|
|= [wen=@da res=(each gage tang)]
|
||||||
^+ +>
|
^+ +>
|
||||||
?~ dok
|
?~ dok
|
||||||
~& %clay-take-mutating-unexpected-made +>.$
|
~& %clay-take-mutating-unexpected-made +>.$
|
||||||
@ -651,40 +650,9 @@
|
|||||||
~
|
~
|
||||||
=+ paf=((hard path) q.q.pax)
|
=+ paf=((hard path) q.q.pax)
|
||||||
`[paf (~(got by muh.u.dok) paf) cay]
|
`[paf (~(got by muh.u.dok) paf) cay]
|
||||||
:: |= [wen=@da pax=path res=(each bead (list tank))]
|
|
||||||
:: ^+ +>
|
|
||||||
:: ?~ dok
|
|
||||||
:: ~& %clay-unexpected-made +>.$
|
|
||||||
:: ?. (lien lon.u.dok |=(path =(+< pax)))
|
|
||||||
:: ~& %clay-strange-made +>.$
|
|
||||||
:: ?: ?=(%| -.res)
|
|
||||||
:: %_ +>.$
|
|
||||||
:: dok ~
|
|
||||||
:: :: tag
|
|
||||||
:: :: %- welp :_ tag
|
|
||||||
:: :: ^- (list ,[duct path note])
|
|
||||||
:: :: %+ murn lon.u.dok
|
|
||||||
:: :: |= a=path
|
|
||||||
:: :: ^- (unit ,[duct path note])
|
|
||||||
:: :: ?: =(pax a) ~
|
|
||||||
:: :: `[hen [%diffing (scot %p who) syd (scot %da wen) a] %f %exec who ~]
|
|
||||||
:: ::
|
|
||||||
:: yel
|
|
||||||
:: :_ yel
|
|
||||||
:: [hen %note '!' %rose [" " "" ""] leaf/"clay diff failed" >pax< p.res]
|
|
||||||
:: ==
|
|
||||||
:: ?. ?=(@ p.q.p.res) ~| %bad-marc !!
|
|
||||||
:: =: lon.u.dok (skip lon.u.dok |=(path =(+< pax)))
|
|
||||||
:: sot.u.dok ?: =(%null p.q.p.res)
|
|
||||||
:: sot.u.dok
|
|
||||||
:: [[pax %dif q.p.res] sot.u.dok]
|
|
||||||
:: ==
|
|
||||||
:: ?~ lon.u.dok
|
|
||||||
:: (apply-edit wen)
|
|
||||||
:: +>.$
|
|
||||||
::
|
::
|
||||||
++ take-patch
|
++ take-patch
|
||||||
|= res=(each bead (list tank))
|
|= res=(each gage tang)
|
||||||
^+ +>
|
^+ +>
|
||||||
:: ~& %taking-patch
|
:: ~& %taking-patch
|
||||||
?: ?=(%| -.res)
|
?: ?=(%| -.res)
|
||||||
@ -728,7 +696,7 @@
|
|||||||
(echo now %& *cart sim)
|
(echo now %& *cart sim)
|
||||||
==
|
==
|
||||||
?~ dok ~& %no-dok +>.$
|
?~ dok ~& %no-dok +>.$
|
||||||
=+ cay=q.p.res
|
=+ cay=p.res
|
||||||
?@ p.cay ~| %patch-bad-marc !!
|
?@ p.cay ~| %patch-bad-marc !!
|
||||||
:: ~& %canning
|
:: ~& %canning
|
||||||
=+ ^= can
|
=+ ^= can
|
||||||
@ -782,7 +750,7 @@
|
|||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ take-ergo
|
++ take-ergo
|
||||||
|= res=(each bead (list tank))
|
|= res=(each gage tang)
|
||||||
^+ +>
|
^+ +>
|
||||||
?: ?=(%| -.res)
|
?: ?=(%| -.res)
|
||||||
%_ +>.$
|
%_ +>.$
|
||||||
@ -790,7 +758,7 @@
|
|||||||
[[hen %note '!' %rose [" " "" ""] leaf/"clay ergo failed" p.res] yel]
|
[[hen %note '!' %rose [" " "" ""] leaf/"clay ergo failed" p.res] yel]
|
||||||
==
|
==
|
||||||
?~ hez ~& %no-sync-duct !!
|
?~ hez ~& %no-sync-duct !!
|
||||||
=+ cay=q.p.res
|
=+ cay=p.res
|
||||||
?@ p.cay ~| %patch-bad-marc !!
|
?@ p.cay ~| %patch-bad-marc !!
|
||||||
%= +>.$
|
%= +>.$
|
||||||
reg
|
reg
|
||||||
@ -1002,7 +970,7 @@
|
|||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ take-foreign-plops
|
++ take-foreign-plops
|
||||||
|= res=(each bead (list tank))
|
|= res=(each gage tang)
|
||||||
^+ +>
|
^+ +>
|
||||||
?> ?=(^ ref)
|
?> ?=(^ ref)
|
||||||
?> ?=(^ nak.u.ref)
|
?> ?=(^ nak.u.ref)
|
||||||
@ -1010,7 +978,7 @@
|
|||||||
~| "validate foreign plops failed"
|
~| "validate foreign plops failed"
|
||||||
~| [%plop-fail (turn p.res |=(tank ~(ram re +<)))]
|
~| [%plop-fail (turn p.res |=(tank ~(ram re +<)))]
|
||||||
!!
|
!!
|
||||||
=+ cay=q.p.res
|
=+ cay=p.res
|
||||||
?@ p.cay ~| %plop-bad-marc !!
|
?@ p.cay ~| %plop-bad-marc !!
|
||||||
=+ |- ^- lat=(list blob)
|
=+ |- ^- lat=(list blob)
|
||||||
?~ p.p.cay
|
?~ p.p.cay
|
||||||
@ -1088,7 +1056,7 @@
|
|||||||
:: ~& %reading-at-aeon
|
:: ~& %reading-at-aeon
|
||||||
=+ vid=(read-at-aeon:ze u.nao p.q.i.xiq)
|
=+ vid=(read-at-aeon:ze u.nao p.q.i.xiq)
|
||||||
:: ~& %red-at-aeon
|
:: ~& %red-at-aeon
|
||||||
?~ vid ~& [%oh-well mood=p.q.i.xiq] $(xiq t.xiq, xaq [i.xiq xaq])
|
?~ vid ~& [%oh-well mood=p.q.i.xiq aeon=nao] $(xiq t.xiq, xaq [i.xiq xaq])
|
||||||
$(xiq t.xiq, ..wake (balk p.i.xiq u.vid p.q.i.xiq))
|
$(xiq t.xiq, ..wake (balk p.i.xiq u.vid p.q.i.xiq))
|
||||||
::
|
::
|
||||||
%many
|
%many
|
||||||
@ -1472,7 +1440,7 @@
|
|||||||
:- -:!>(*arch)
|
:- -:!>(*arch)
|
||||||
^- arch
|
^- arch
|
||||||
:+ *@uvI
|
:+ *@uvI
|
||||||
?.((~(has by q.yak) pax) ~ `0vfak.ehash)
|
?.((~(has by q.yak) pax) ~ `0vfak.ehash) :: XX hash of lobes
|
||||||
^- (map span ,~)
|
^- (map span ,~)
|
||||||
%- mo ^- (list (pair span ,~))
|
%- mo ^- (list (pair span ,~))
|
||||||
%+ turn
|
%+ turn
|
||||||
@ -1555,7 +1523,7 @@
|
|||||||
..me(mer (~(del by mer) ali), reg :_(reg [hen %mere gon.dat]))
|
..me(mer (~(del by mer) ali), reg :_(reg [hen %mere gon.dat]))
|
||||||
::
|
::
|
||||||
++ route
|
++ route
|
||||||
|= [sat=term res=(each riot (each bead (list tank)))]
|
|= [sat=term res=(each riot (each gage tang))]
|
||||||
^+ +>.$
|
^+ +>.$
|
||||||
?+ sat ~|((crip <[%bad-stage sat]>) !!)
|
?+ sat ~|((crip <[%bad-stage sat]>) !!)
|
||||||
%ali %- fetched-ali ?> ?=(%& -.res) p.res
|
%ali %- fetched-ali ?> ?=(%& -.res) p.res
|
||||||
@ -1799,11 +1767,11 @@
|
|||||||
(diff-bas %ali ali.dat ali bob.dat)
|
(diff-bas %ali ali.dat ali bob.dat)
|
||||||
::
|
::
|
||||||
++ diffed-ali
|
++ diffed-ali
|
||||||
|= res=(each bead (list tank))
|
|= res=(each gage tang)
|
||||||
^+ +>
|
^+ +>
|
||||||
?: ?=(%| -.res)
|
?: ?=(%| -.res)
|
||||||
(error:he %diff-ali-bad-made leaf/"merge diff ali failed" p.res)
|
(error:he %diff-ali-bad-made leaf/"merge diff ali failed" p.res)
|
||||||
=+ cay=q.p.res
|
=+ cay=p.res
|
||||||
?@ p.cay
|
?@ p.cay
|
||||||
(error:he %diff-ali-bad-marc >p.cay< ~)
|
(error:he %diff-ali-bad-marc >p.cay< ~)
|
||||||
=| can=(map path cage)
|
=| can=(map path cage)
|
||||||
@ -1859,11 +1827,11 @@
|
|||||||
(diff-bas %bob bob.dat bob ali.dat)
|
(diff-bas %bob bob.dat bob ali.dat)
|
||||||
::
|
::
|
||||||
++ diffed-bob
|
++ diffed-bob
|
||||||
|= res=(each bead (list tank))
|
|= res=(each gage tang)
|
||||||
^+ +>
|
^+ +>
|
||||||
?: ?=(%| -.res)
|
?: ?=(%| -.res)
|
||||||
(error:he %diff-bob-bad-made leaf/"merge diff bob failed" p.res)
|
(error:he %diff-bob-bad-made leaf/"merge diff bob failed" p.res)
|
||||||
=+ cay=q.p.res
|
=+ cay=p.res
|
||||||
?@ p.cay
|
?@ p.cay
|
||||||
(error:he %diff-bob-bad-marc >p.cay< ~)
|
(error:he %diff-bob-bad-marc >p.cay< ~)
|
||||||
=| can=(map path cage)
|
=| can=(map path cage)
|
||||||
@ -1938,10 +1906,10 @@
|
|||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ merged
|
++ merged
|
||||||
|= res=(each bead (list tank))
|
|= res=(each gage tang)
|
||||||
?: ?=(%| -.res)
|
?: ?=(%| -.res)
|
||||||
(error:he %merge-bad-made leaf/"merging failed" p.res)
|
(error:he %merge-bad-made leaf/"merging failed" p.res)
|
||||||
=+ cay=q.p.res
|
=+ cay=p.res
|
||||||
?@ p.cay
|
?@ p.cay
|
||||||
(error:he %merge-bad-marc >p.cay< ~)
|
(error:he %merge-bad-marc >p.cay< ~)
|
||||||
=| bof=(map path (unit cage))
|
=| bof=(map path (unit cage))
|
||||||
@ -1995,11 +1963,11 @@
|
|||||||
|
|
||||||
::
|
::
|
||||||
++ built
|
++ built
|
||||||
|= res=(each bead (list tank))
|
|= res=(each gage tang)
|
||||||
^+ +>
|
^+ +>
|
||||||
?: ?=(%| -.res)
|
?: ?=(%| -.res)
|
||||||
(error:he %build-bad-made leaf/"delta building failed" p.res)
|
(error:he %build-bad-made leaf/"delta building failed" p.res)
|
||||||
=+ cay=q.p.res
|
=+ cay=p.res
|
||||||
?@ p.cay
|
?@ p.cay
|
||||||
(error:he %build-bad-marc >p.cay< ~)
|
(error:he %build-bad-marc >p.cay< ~)
|
||||||
=| bop=(map path cage)
|
=| bop=(map path cage)
|
||||||
@ -2125,11 +2093,11 @@
|
|||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ checked-out
|
++ checked-out
|
||||||
|= res=(each bead (list tank))
|
|= res=(each gage tang)
|
||||||
^+ +>
|
^+ +>
|
||||||
?: ?=(%| -.res)
|
?: ?=(%| -.res)
|
||||||
(error:he %checkout-bad-made leaf/"merge checkout failed" p.res)
|
(error:he %checkout-bad-made leaf/"merge checkout failed" p.res)
|
||||||
=+ cay=q.p.res
|
=+ cay=p.res
|
||||||
?@ p.cay
|
?@ p.cay
|
||||||
(error:he %patch-bad-marc >p.cay< ~)
|
(error:he %patch-bad-marc >p.cay< ~)
|
||||||
=| can=(list ,[path cage])
|
=| can=(list ,[path cage])
|
||||||
@ -2183,11 +2151,11 @@
|
|||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ ergoed
|
++ ergoed
|
||||||
|= res=(each bead (list tank))
|
|= res=(each gage tang)
|
||||||
^+ +>
|
^+ +>
|
||||||
?: ?=(%| -.res)
|
?: ?=(%| -.res)
|
||||||
(error:he %ergo-bad-made leaf/"merge ergo failed" p.res)
|
(error:he %ergo-bad-made leaf/"merge ergo failed" p.res)
|
||||||
=+ cay=q.p.res
|
=+ cay=p.res
|
||||||
?@ p.cay ~| %patch-bad-marc !!
|
?@ p.cay ~| %patch-bad-marc !!
|
||||||
=| can=(list ,[path (unit mime)])
|
=| can=(list ,[path (unit mime)])
|
||||||
=>
|
=>
|
||||||
@ -2519,7 +2487,7 @@
|
|||||||
=+ une=(un our now hen ruf)
|
=+ une=(un our now hen ruf)
|
||||||
=+ wak=wake:une
|
=+ wak=wake:une
|
||||||
=+ wex=(di:wak syd)
|
=+ wex=(di:wak syd)
|
||||||
=+ dat=?-(+<.q.hin %writ [%& p.q.hin], %made [%| p.q.hin])
|
=+ dat=?-(+<.q.hin %writ [%& p.q.hin], %made [%| q.q.hin])
|
||||||
=+ wao=abet:(route:(me:ze:wex her sud) sat dat)
|
=+ wao=abet:(route:(me:ze:wex her sud) sat dat)
|
||||||
=+ woo=abet:wao
|
=+ woo=abet:wao
|
||||||
[(weld -.wak -.woo) ..^$(ruf abet:(pish:une syd +.woo ran.wao))]
|
[(weld -.wak -.woo) ..^$(ruf abet:(pish:une syd +.woo ran.wao))]
|
||||||
@ -2549,16 +2517,16 @@
|
|||||||
==
|
==
|
||||||
?: ?=([%blab care @ @ *] tea)
|
?: ?=([%blab care @ @ *] tea)
|
||||||
?> ?=(%made +<.q.hin)
|
?> ?=(%made +<.q.hin)
|
||||||
?: ?=(%| -.p.q.hin)
|
?: ?=(%| -.q.q.hin)
|
||||||
~| %blab-fail
|
~| %blab-fail
|
||||||
~> %mean.|.(p.p.q.hin) :: interpolate ford fail into stack trace
|
~> %mean.|.(p.q.q.hin) :: interpolate ford fail into stack trace
|
||||||
!!
|
!!
|
||||||
?^ p.q.p.p.q.hin
|
?^ p.p.q.q.hin
|
||||||
~|(%bad-marc !!)
|
~|(%bad-marc !!)
|
||||||
:_ ..^$ :_ ~
|
:_ ..^$ :_ ~
|
||||||
:* hen %give %writ ~
|
:* hen %give %writ ~
|
||||||
`[care case @tas]`[i.t.tea ((hard case) +>:(slay i.t.t.tea)) i.t.t.t.tea]
|
`[care case @tas]`[i.t.tea ((hard case) +>:(slay i.t.t.tea)) i.t.t.t.tea]
|
||||||
`path`t.t.t.t.tea `cage`q.p.p.q.hin
|
`path`t.t.t.t.tea `cage`p.q.q.hin
|
||||||
==
|
==
|
||||||
?- -.+.q.hin
|
?- -.+.q.hin
|
||||||
%crud
|
%crud
|
||||||
@ -2575,7 +2543,7 @@
|
|||||||
=^ mos ruf
|
=^ mos ruf
|
||||||
=+ une=(un who now hen ruf)
|
=+ une=(un who now hen ruf)
|
||||||
=+ ^= zat
|
=+ ^= zat
|
||||||
(take-inserting:(di:wake:une syd) wen p.q.hin)
|
(take-inserting:(di:wake:une syd) wen q.q.hin)
|
||||||
=+ zot=abet.zat
|
=+ zot=abet.zat
|
||||||
[-.zot abet:(pish:une syd +.zot ran.zat)]
|
[-.zot abet:(pish:une syd +.zot ran.zat)]
|
||||||
[mos ..^$]
|
[mos ..^$]
|
||||||
@ -2588,7 +2556,7 @@
|
|||||||
=^ mos ruf
|
=^ mos ruf
|
||||||
=+ une=(un who now hen ruf)
|
=+ une=(un who now hen ruf)
|
||||||
=+ ^= zat
|
=+ ^= zat
|
||||||
(take-diffing:(di:wake:une syd) wen p.q.hin)
|
(take-diffing:(di:wake:une syd) wen q.q.hin)
|
||||||
=+ zot=abet.zat
|
=+ zot=abet.zat
|
||||||
[-.zot abet:(pish:une syd +.zot ran.zat)]
|
[-.zot abet:(pish:une syd +.zot ran.zat)]
|
||||||
[mos ..^$]
|
[mos ..^$]
|
||||||
@ -2601,7 +2569,7 @@
|
|||||||
=^ mos ruf
|
=^ mos ruf
|
||||||
=+ une=(un who now hen ruf)
|
=+ une=(un who now hen ruf)
|
||||||
=+ ^= zat
|
=+ ^= zat
|
||||||
(take-mutating:(di:wake:une syd) wen p.q.hin)
|
(take-mutating:(di:wake:une syd) wen q.q.hin)
|
||||||
=+ zot=abet.zat
|
=+ zot=abet.zat
|
||||||
[-.zot abet:(pish:une syd +.zot ran.zat)]
|
[-.zot abet:(pish:une syd +.zot ran.zat)]
|
||||||
[mos ..^$]
|
[mos ..^$]
|
||||||
@ -2613,11 +2581,11 @@
|
|||||||
=^ mos ruf
|
=^ mos ruf
|
||||||
?: (~(has by fat.ruf) who)
|
?: (~(has by fat.ruf) who)
|
||||||
=+ une=(un who now hen ruf)
|
=+ une=(un who now hen ruf)
|
||||||
=+ zat=(take-patch:(di:wake:une syd) p.q.hin)
|
=+ zat=(take-patch:(di:wake:une syd) q.q.hin)
|
||||||
=+ zot=abet.zat
|
=+ zot=abet.zat
|
||||||
[-.zot abet:(pish:une syd +.zot ran.zat)]
|
[-.zot abet:(pish:une syd +.zot ran.zat)]
|
||||||
=+ zax=(do now hen [who who] syd ruf)
|
=+ zax=(do now hen [who who] syd ruf)
|
||||||
=+ zat=(take-patch:zax p.q.hin)
|
=+ zat=(take-patch:zax q.q.hin)
|
||||||
=+ zot=abet.zat
|
=+ zot=abet.zat
|
||||||
[-.zot (posh who syd +.zot ruf)]
|
[-.zot (posh who syd +.zot ruf)]
|
||||||
[mos ..^$]
|
[mos ..^$]
|
||||||
@ -2629,7 +2597,7 @@
|
|||||||
=^ mos ruf
|
=^ mos ruf
|
||||||
=+ une=(un who now hen ruf)
|
=+ une=(un who now hen ruf)
|
||||||
=+ ^= zat
|
=+ ^= zat
|
||||||
(take-ergo:(di:wake:une syd) p.q.hin)
|
(take-ergo:(di:wake:une syd) q.q.hin)
|
||||||
=+ zot=abet.zat
|
=+ zot=abet.zat
|
||||||
[-.zot abet:(pish:une syd +.zot ran.zat)]
|
[-.zot abet:(pish:une syd +.zot ran.zat)]
|
||||||
[mos ..^$]
|
[mos ..^$]
|
||||||
@ -2640,7 +2608,7 @@
|
|||||||
=+ her=(slav %p i.t.t.tea)
|
=+ her=(slav %p i.t.t.tea)
|
||||||
=* syd i.t.t.t.tea
|
=* syd i.t.t.t.tea
|
||||||
=+ zax=(do now hen [our her] syd ruf)
|
=+ zax=(do now hen [our her] syd ruf)
|
||||||
=+ zat=(take-foreign-plops:zax p.q.hin)
|
=+ zat=(take-foreign-plops:zax q.q.hin)
|
||||||
=^ mos ruf
|
=^ mos ruf
|
||||||
=+ zot=abet.zat
|
=+ zot=abet.zat
|
||||||
[-.zot (posh her syd +.zot ruf)]
|
[-.zot (posh her syd +.zot ruf)]
|
||||||
|
1119
main/arvo/dill.hoon
1119
main/arvo/dill.hoon
File diff suppressed because it is too large
Load Diff
3104
main/arvo/eyre.hoon
3104
main/arvo/eyre.hoon
File diff suppressed because it is too large
Load Diff
@ -9,7 +9,8 @@
|
|||||||
::
|
::
|
||||||
++ bead ,[p=(set beam) q=gage] :: computed result
|
++ bead ,[p=(set beam) q=gage] :: computed result
|
||||||
++ gift :: out result <-$
|
++ gift :: out result <-$
|
||||||
$% [%made p=(each bead (list tank))] :: computed result
|
$% [%made p=@uvH q=(each gage tang)] :: computed result
|
||||||
|
[%news ~] :: fresh depends
|
||||||
== ::
|
== ::
|
||||||
++ heel path :: functional ending
|
++ heel path :: functional ending
|
||||||
++ hock :: standard label
|
++ hock :: standard label
|
||||||
@ -37,7 +38,7 @@
|
|||||||
[%dub p=term q=horn] :: /= apply face
|
[%dub p=term q=horn] :: /= apply face
|
||||||
[%fan p=(list horn)] :: /. list
|
[%fan p=(list horn)] :: /. list
|
||||||
[%for p=path q=horn] :: /, descend
|
[%for p=path q=horn] :: /, descend
|
||||||
[%hel p=@ud q=horn] :: /% propogate heel
|
[%hel p=@ud q=horn] :: /% propagate heel
|
||||||
[%hub p=horn] :: /@ list by @ud
|
[%hub p=horn] :: /@ list by @ud
|
||||||
[%man p=(map span horn)] :: /* hetero map
|
[%man p=(map span horn)] :: /* hetero map
|
||||||
[%nap p=horn] :: /_ homo map
|
[%nap p=horn] :: /_ homo map
|
||||||
@ -49,6 +50,7 @@
|
|||||||
== ::
|
== ::
|
||||||
++ kiss :: in request ->$
|
++ kiss :: in request ->$
|
||||||
$% [%exec p=@p q=beak r=(unit silk)] :: make / kill
|
$% [%exec p=@p q=beak r=(unit silk)] :: make / kill
|
||||||
|
[%wasp p=@p q=@uvH] :: depends query
|
||||||
== ::
|
== ::
|
||||||
++ milk (trel ship desk silk) :: sourced silk
|
++ milk (trel ship desk silk) :: sourced silk
|
||||||
++ move ,[p=duct q=(mold note gift)] :: local move
|
++ move ,[p=duct q=(mold note gift)] :: local move
|
||||||
@ -93,6 +95,7 @@
|
|||||||
++ baby :: state by ship
|
++ baby :: state by ship
|
||||||
$: tad=[p=@ud q=(map ,@ud task)] :: tasks by number
|
$: tad=[p=@ud q=(map ,@ud task)] :: tasks by number
|
||||||
dym=(map duct ,@ud) :: duct to task number
|
dym=(map duct ,@ud) :: duct to task number
|
||||||
|
deh=deps :: depends by hash
|
||||||
jav=(map ,* calx) :: cache
|
jav=(map ,* calx) :: cache
|
||||||
== ::
|
== ::
|
||||||
++ bolt :: gonadic edge
|
++ bolt :: gonadic edge
|
||||||
@ -100,8 +103,8 @@
|
|||||||
$: p=cafe :: cache
|
$: p=cafe :: cache
|
||||||
$= q ::
|
$= q ::
|
||||||
$% [%0 p=(set beam) q=a] :: depends/product
|
$% [%0 p=(set beam) q=a] :: depends/product
|
||||||
[%1 p=(set ,[p=care q=beam r=(list tank)])] :: blocks
|
[%1 p=(set ,[p=care q=beam r=tang])] :: blocks
|
||||||
[%2 p=(list tank)] :: error
|
[%2 p=(set beam) q=tang] :: depends/error
|
||||||
== ::
|
== ::
|
||||||
== ::
|
== ::
|
||||||
:: ::
|
:: ::
|
||||||
@ -112,6 +115,7 @@
|
|||||||
++ cafe :: live cache
|
++ cafe :: live cache
|
||||||
$: p=(set calx) :: used
|
$: p=(set calx) :: used
|
||||||
q=(map ,* calx) :: cache
|
q=(map ,* calx) :: cache
|
||||||
|
r=deps :: dependencies
|
||||||
== ::
|
== ::
|
||||||
:: ::
|
:: ::
|
||||||
++ calm :: cache metadata
|
++ calm :: cache metadata
|
||||||
@ -126,6 +130,7 @@
|
|||||||
[%slap p=calm q=[p=vase q=twig] r=vase] :: compute
|
[%slap p=calm q=[p=vase q=twig] r=vase] :: compute
|
||||||
[%slam p=calm q=[p=vase q=vase] r=vase] :: compute
|
[%slam p=calm q=[p=vase q=vase] r=vase] :: compute
|
||||||
== ::
|
== ::
|
||||||
|
++ deps (map ,@uvH (set beam)) :: hashed depends
|
||||||
++ task :: problem in progress
|
++ task :: problem in progress
|
||||||
$: nah=duct :: cause
|
$: nah=duct :: cause
|
||||||
kas=silk :: problem
|
kas=silk :: problem
|
||||||
@ -162,16 +167,25 @@
|
|||||||
++ chub :: cache merge
|
++ chub :: cache merge
|
||||||
|= [a=cafe b=cafe] ::
|
|= [a=cafe b=cafe] ::
|
||||||
^- cafe ::
|
^- cafe ::
|
||||||
[(grom p.a p.b) (grum q.a q.b)] ::
|
[(grom p.a p.b) (grum q.a q.b) (grum r.a r.b)] ::
|
||||||
|
:: ::
|
||||||
|
++ faun |=([a=cafe b=vase] (fine a `gage`noun/b)) :: vase to cage
|
||||||
|
++ feel |=([a=cafe b=gage] (fine a q.b)) :: cage to vase
|
||||||
|
++ fest :: bolt to success
|
||||||
|
|= a=beam ::
|
||||||
|
|*([b=cafe c=*] (flag a (fine b [~ u=c]))) ::
|
||||||
:: ::
|
:: ::
|
||||||
++ faun |=([a=cafe b=vase] (fine a `gage`noun/b)) :: vase to gage
|
|
||||||
++ feel |=([a=cafe b=gage] (fine a q.b)) :: gage to vase
|
|
||||||
++ fest |*([a=cafe b=*] (fine a [~ u=b])) :: bolt to unit
|
|
||||||
++ fine |* [a=cafe b=*] :: bolt from data
|
++ fine |* [a=cafe b=*] :: bolt from data
|
||||||
[p=`cafe`a q=[%0 p=*(set beam) q=b]] ::
|
[p=`cafe`a q=[%0 p=*(set beam) q=b]] ::
|
||||||
++ flaw |=([a=cafe b=(list tank)] [p=a q=[%2 p=b]]) :: bolt from error
|
++ flaw |= [a=cafe b=tang] :: bolt from error
|
||||||
++ clean-beak ::|=([now=@da bek=beak] [p.bek q.bek %da now])
|
[p=a q=[%2 p=*(set beam) q=b]] ::
|
||||||
|=([now=@da bek=beak] bek)
|
++ flag :: beam into deps
|
||||||
|
|* [a=beam b=(bolt)] ::
|
||||||
|
?: ?=(%1 -.q.b) b
|
||||||
|
=. p.q.b (~(put in p.q.b) a)
|
||||||
|
b
|
||||||
|
:: ::
|
||||||
|
++ flue |=(a=cafe (fine a ~)) :: cafe to empty
|
||||||
++ grom :: merge sets
|
++ grom :: merge sets
|
||||||
|* [one=(set) two=(set)]
|
|* [one=(set) two=(set)]
|
||||||
^+ one
|
^+ one
|
||||||
@ -232,12 +246,6 @@
|
|||||||
==
|
==
|
||||||
~(exec zo [num `task`[hen u.kus ~ 0 ~]])
|
~(exec zo [num `task`[hen u.kus ~ 0 ~]])
|
||||||
::
|
::
|
||||||
++ apel :: stateless
|
|
||||||
|= [hen=duct kus=silk]
|
|
||||||
^- (unit gift)
|
|
||||||
=+ num=0 :: XX
|
|
||||||
~(exit zo [num `task`[hen kus ~ 0 ~]])
|
|
||||||
::
|
|
||||||
++ axon :: take
|
++ axon :: take
|
||||||
|= [num=@ud tik=@ud sih=sign]
|
|= [num=@ud tik=@ud sih=sign]
|
||||||
^+ +>
|
^+ +>
|
||||||
@ -250,6 +258,31 @@
|
|||||||
(~(resp zo [num u.tus]) tik p.+.sih)
|
(~(resp zo [num u.tus]) tik p.+.sih)
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
|
++ axun :: take rev update
|
||||||
|
|= [dep=@uvH sih=sign]
|
||||||
|
^+ +>
|
||||||
|
?- -.+.sih
|
||||||
|
%writ
|
||||||
|
+>.$(mow :_(mow [hen %give %news ~]))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ awap :: get next revision
|
||||||
|
~% %ford-w ..is ~
|
||||||
|
|= dep=@uvH
|
||||||
|
%_ +>.$
|
||||||
|
mow
|
||||||
|
%- welp :_ mow
|
||||||
|
%+ turn ~|(dep-missed/dep (~(tap in (~(got by deh.bay) dep))))
|
||||||
|
|= a=beam
|
||||||
|
:^ hen %pass [(scot %p our) (scot %uv dep) ~]
|
||||||
|
=- [%c [%warp [our p.a] q.a ~ [%sing %y ud/+(`@ud`-) s.a]]]
|
||||||
|
?. ?=(%ud -.r.a)
|
||||||
|
;;(@ q.q:(need (need (ska ~ %cw -.a /))))
|
||||||
|
?: =(0 p.r.a)
|
||||||
|
;;(@ q.q:(need (need (ska ~ %cw -.a(r da/now) /))))
|
||||||
|
p.r.a
|
||||||
|
==
|
||||||
|
::
|
||||||
++ zo
|
++ zo
|
||||||
~% %ford-z
|
~% %ford-z
|
||||||
..is
|
..is
|
||||||
@ -347,19 +380,19 @@
|
|||||||
++ cool :: error caption
|
++ cool :: error caption
|
||||||
|* [cyt=trap hoc=(bolt)]
|
|* [cyt=trap hoc=(bolt)]
|
||||||
?. ?=(%2 -.q.hoc) hoc
|
?. ?=(%2 -.q.hoc) hoc
|
||||||
[p.hoc [%2 *cyt p.q.hoc]]
|
[p.hoc [%2 p.q.hoc *cyt q.q.hoc]]
|
||||||
::
|
::
|
||||||
++ cope :: bolt along
|
++ cope :: bolt along
|
||||||
|* [hoc=(bolt) fun=(burg)]
|
|* [hoc=(bolt) fun=(burg)]
|
||||||
?- -.q.hoc
|
?- -.q.hoc
|
||||||
%2 hoc
|
|
||||||
%1 hoc
|
%1 hoc
|
||||||
|
%2 hoc
|
||||||
%0 =+ nuf=(fun p.hoc q.q.hoc)
|
%0 =+ nuf=(fun p.hoc q.q.hoc)
|
||||||
:- p=p.nuf
|
:- p=p.nuf
|
||||||
^= q
|
^= q
|
||||||
?- -.q.nuf
|
?- -.q.nuf
|
||||||
%2 q.nuf
|
|
||||||
%1 q.nuf
|
%1 q.nuf
|
||||||
|
%2 [%2 p=(grom `_p.q.nuf`p.q.hoc p.q.nuf) q=q.q.nuf]
|
||||||
%0 [%0 p=(grom `_p.q.nuf`p.q.hoc p.q.nuf) q=q.q.nuf]
|
%0 [%0 p=(grom `_p.q.nuf`p.q.hoc p.q.nuf) q=q.q.nuf]
|
||||||
== ==
|
== ==
|
||||||
::
|
::
|
||||||
@ -369,7 +402,7 @@
|
|||||||
:- p=cof
|
:- p=cof
|
||||||
^= q
|
^= q
|
||||||
?- -.ton
|
?- -.ton
|
||||||
%2 [%2 p=p.ton]
|
%2 [%2 p=*(set beam) q=p.ton]
|
||||||
%0 [%0 p=*(set beam) q=(fun p.ton)]
|
%0 [%0 p=*(set beam) q=(fun p.ton)]
|
||||||
%1 :: ~& [%coup-need ((list path) p.ton)]
|
%1 :: ~& [%coup-need ((list path) p.ton)]
|
||||||
=- ?- -.faw
|
=- ?- -.faw
|
||||||
@ -377,23 +410,24 @@
|
|||||||
^= p
|
^= p
|
||||||
%- sa
|
%- sa
|
||||||
%+ turn p.faw
|
%+ turn p.faw
|
||||||
|=(a=[care beam] [-.a +.a *(list tank)])
|
|=(a=[care beam] [-.a +.a *tang])
|
||||||
| [%2 p=p.faw]
|
| [%2 p=*(set beam) q=p.faw]
|
||||||
==
|
==
|
||||||
^= faw
|
^= faw
|
||||||
|- ^- (each (list (pair care beam)) (list tank))
|
|- ^- (each (list (pair care beam)) tang)
|
||||||
?~ p.ton [%& ~]
|
?~ p.ton [%& ~]
|
||||||
=+ nex=$(p.ton t.p.ton)
|
=+ nex=$(p.ton t.p.ton)
|
||||||
|
=+ err=|=(a=tape [%| leaf/a ?:(?=(& -.nex) ~ p.nex)])
|
||||||
=+ pax=(path i.p.ton)
|
=+ pax=(path i.p.ton)
|
||||||
?~ pax [%| (smyt pax) ?:(?=(& -.nex) ~ p.nex)]
|
?~ pax (err "blocking empty")
|
||||||
?. ?=(%c (end 3 1 i.pax))
|
?. ?=(%c (end 3 1 i.pax))
|
||||||
[%| leaf/"blocking not clay" (smyt pax) ?:(?=(& -.nex) ~ p.nex)]
|
(err "blocking not clay")
|
||||||
=+ ren=((soft care) (rsh 3 1 i.pax))
|
=+ ren=((soft care) (rsh 3 1 i.pax))
|
||||||
?~ ren
|
?~ ren
|
||||||
[%| leaf/"blocking not care" (smyt pax) ?:(?=(& -.nex) ~ p.nex)]
|
(err "blocking not care")
|
||||||
=+ zis=(tome t.pax)
|
=+ zis=(tome t.pax)
|
||||||
?~ zis
|
?~ zis
|
||||||
[%| leaf/"blocking not beam" (smyt pax) ?:(?=(& -.nex) ~ p.nex)]
|
(err "blocking not beam")
|
||||||
?- -.nex
|
?- -.nex
|
||||||
& [%& [u.ren u.zis] p.nex]
|
& [%& [u.ren u.zis] p.nex]
|
||||||
| nex
|
| nex
|
||||||
@ -402,7 +436,7 @@
|
|||||||
::
|
::
|
||||||
++ cowl :: each to bolt
|
++ cowl :: each to bolt
|
||||||
|= cof=cafe
|
|= cof=cafe
|
||||||
|* [tod=(each ,* (list tank)) fun=$+(* *)]
|
|* [tod=(each ,* tang) fun=$+(* *)]
|
||||||
%+ (coup cof)
|
%+ (coup cof)
|
||||||
?- -.tod
|
?- -.tod
|
||||||
%& [%0 p=p.tod]
|
%& [%0 p=p.tod]
|
||||||
@ -413,7 +447,7 @@
|
|||||||
++ dash :: process cache
|
++ dash :: process cache
|
||||||
|= cof=cafe
|
|= cof=cafe
|
||||||
^+ +>
|
^+ +>
|
||||||
%_(+> jav.bay q.cof)
|
%_(+> jav.bay q.cof, deh.bay r.cof)
|
||||||
::
|
::
|
||||||
++ diff :: diff
|
++ diff :: diff
|
||||||
|= [cof=cafe kas=silk kos=silk]
|
|= [cof=cafe kas=silk kos=silk]
|
||||||
@ -461,24 +495,23 @@
|
|||||||
(fine cof u.for dif)
|
(fine cof u.for dif)
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ exit :: stateless exec
|
++ daze :: remember depends
|
||||||
^- (unit gift)
|
|= dep=(set beam)
|
||||||
=+ bot=(make [~ jav.bay] kas)
|
^+ [*@uvH deh.bay]
|
||||||
:: =. ..exec (dash p.bot)
|
?~ dep [0v0 deh.bay]
|
||||||
?- -.q.bot
|
=+ hap=(sham dep)
|
||||||
%0 `[%made %& p.q.bot q.q.bot]
|
[hap (~(put by deh.bay) hap dep)]
|
||||||
%2 `[%made %| p.q.bot]
|
|
||||||
%1 ~
|
|
||||||
==
|
|
||||||
::
|
::
|
||||||
++ exec :: execute app
|
++ exec :: execute app
|
||||||
^+ ..zo
|
^+ ..zo
|
||||||
?: !=(~ q.kig) ..zo
|
?: !=(~ q.kig) ..zo
|
||||||
=+ bot=(make [~ jav.bay] kas)
|
=+ bot=(make [~ jav.bay deh.bay] kas)
|
||||||
=. ..exec (dash p.bot)
|
=. ..exec (dash p.bot)
|
||||||
?- -.q.bot
|
?- -.q.bot
|
||||||
%0 amok:(expo [%made %& p.q.bot q.q.bot])
|
%0 =^ dep deh.bay (daze p.q.bot)
|
||||||
%2 amok:(expo [%made %| p.q.bot])
|
amok:(expo [%made dep %& q.q.bot])
|
||||||
|
%2 =^ dep deh.bay (daze p.q.bot)
|
||||||
|
amok:(expo [%made dep %| q.q.bot])
|
||||||
%1 =+ zuk=(~(tap by p.q.bot) ~)
|
%1 =+ zuk=(~(tap by p.q.bot) ~)
|
||||||
=< abet
|
=< abet
|
||||||
|- ^+ ..exec
|
|- ^+ ..exec
|
||||||
@ -500,6 +533,7 @@
|
|||||||
%+ (clef %hood) (fine cof bem cay)
|
%+ (clef %hood) (fine cof bem cay)
|
||||||
^- (burg (pair beam gage) hood)
|
^- (burg (pair beam gage) hood)
|
||||||
|= [cof=cafe bum=beam cay=gage]
|
|= [cof=cafe bum=beam cay=gage]
|
||||||
|
:: ~& fade/clef-miss/bem
|
||||||
=+ rul=(fair bem)
|
=+ rul=(fair bem)
|
||||||
?. ?=(@ q.q.cay)
|
?. ?=(@ q.q.cay)
|
||||||
(flaw cof ~)
|
(flaw cof ~)
|
||||||
@ -765,7 +799,7 @@
|
|||||||
^- (bolt gage)
|
^- (bolt gage)
|
||||||
%+ cope
|
%+ cope
|
||||||
|- ^- (bolt (list (pair wing vase)))
|
|- ^- (bolt (list (pair wing vase)))
|
||||||
?~ muy (fine cof ~)
|
?~ muy (flue cof)
|
||||||
%+ cope (make cof q.i.muy)
|
%+ cope (make cof q.i.muy)
|
||||||
|= [cof=cafe cay=gage]
|
|= [cof=cafe cay=gage]
|
||||||
%+ cope ^$(muy t.muy)
|
%+ cope ^$(muy t.muy)
|
||||||
@ -800,12 +834,13 @@
|
|||||||
%+ cope (lend cof bem)
|
%+ cope (lend cof bem)
|
||||||
|= [cof=cafe arc=arch]
|
|= [cof=cafe arc=arch]
|
||||||
?^ q.arc
|
?^ q.arc
|
||||||
(cope (cope (liar cof bem) (lake for)) fest)
|
(cope (cope (liar cof bem) (lake for)) (fest (norm bem)))
|
||||||
?: (~(has by r.arc) %hook)
|
?: (~(has by r.arc) %hook)
|
||||||
%+ cope (fade cof %hook bem)
|
%+ cope (fade cof %hook bem)
|
||||||
|= [cof=cafe hyd=hood]
|
|= [cof=cafe hyd=hood]
|
||||||
(cope (cope (abut:(meow bem arg) cof hyd) (lake for)) fest)
|
%+ cope (cope (abut:(meow bem arg) cof hyd) (lake for))
|
||||||
(fine cof ~)
|
(fest (norm bem))
|
||||||
|
(flue cof)
|
||||||
::
|
::
|
||||||
++ lake :: check/coerce
|
++ lake :: check/coerce
|
||||||
|= for=mark
|
|= for=mark
|
||||||
@ -909,7 +944,7 @@
|
|||||||
::
|
::
|
||||||
++ lima :: load at depth
|
++ lima :: load at depth
|
||||||
|= [cof=cafe for=mark bem=beam arg=heel]
|
|= [cof=cafe for=mark bem=beam arg=heel]
|
||||||
%+ (clef %bake) (fine cof for bem arg)
|
%+ (clef %bake) [p=cof q=[%0 p=[bem `~] q=[for bem arg]]]
|
||||||
|= [cof=cafe for=mark bem=beam arg=heel]
|
|= [cof=cafe for=mark bem=beam arg=heel]
|
||||||
^- (bolt (unit vase))
|
^- (bolt (unit vase))
|
||||||
%+ cope (lend cof bem)
|
%+ cope (lend cof bem)
|
||||||
@ -918,16 +953,15 @@
|
|||||||
?: (~(has by r.arc) for)
|
?: (~(has by r.arc) for)
|
||||||
(lace cof for bem(s [for s.bem]) arg)
|
(lace cof for bem(s [for s.bem]) arg)
|
||||||
=+ haz=(turn (~(tap by r.arc) ~) |=([a=@tas b=~] a))
|
=+ haz=(turn (~(tap by r.arc) ~) |=([a=@tas b=~] a))
|
||||||
?~ haz (fine cof ~)
|
?~ haz (flue cof)
|
||||||
%+ cope (lion cof for haz)
|
%+ cope (lion cof for haz)
|
||||||
|= [cof=cafe wuy=(unit (list ,@tas))]
|
|= [cof=cafe wuy=(list ,@tas)]
|
||||||
?~ wuy (fine cof ~)
|
?~ wuy (flue cof)
|
||||||
?> ?=(^ u.wuy)
|
%+ cope (make cof %bake i.wuy bem arg)
|
||||||
%+ cope (make cof %bake i.u.wuy bem arg)
|
|
||||||
|= [cof=cafe hoc=gage]
|
|= [cof=cafe hoc=gage]
|
||||||
%+ cope (lope cof i.u.wuy t.u.wuy q.hoc)
|
%+ cope (lope cof i.wuy t.wuy q.hoc)
|
||||||
|= [cof=cafe vax=vase]
|
|= [cof=cafe vax=vase]
|
||||||
(fine cof ~ vax)
|
((fest bem) cof vax)
|
||||||
::
|
::
|
||||||
++ lime :: load beam
|
++ lime :: load beam
|
||||||
|= [cof=cafe for=mark bem=beam arg=heel]
|
|= [cof=cafe for=mark bem=beam arg=heel]
|
||||||
@ -937,6 +971,8 @@
|
|||||||
|= [cof=cafe vux=(unit vase)]
|
|= [cof=cafe vux=(unit vase)]
|
||||||
?^ vux (fine cof u.vux)
|
?^ vux (fine cof u.vux)
|
||||||
?~ s.mob
|
?~ s.mob
|
||||||
|
%+ flag
|
||||||
|
(norm mob)
|
||||||
(flaw cof leaf/"beam unavailable" (smyt (tope bem)) ~)
|
(flaw cof leaf/"beam unavailable" (smyt (tope bem)) ~)
|
||||||
^$(s.mob t.s.mob, mer [i.s.mob mer])
|
^$(s.mob t.s.mob, mer [i.s.mob mer])
|
||||||
::
|
::
|
||||||
@ -965,13 +1001,13 @@
|
|||||||
::
|
::
|
||||||
++ lion :: translation search
|
++ lion :: translation search
|
||||||
|= [cof=cafe too=@tas fro=(list ,@tas)]
|
|= [cof=cafe too=@tas fro=(list ,@tas)]
|
||||||
^- (bolt (unit (list ,@tas)))
|
^- (bolt (list ,@tas))
|
||||||
=| war=(set ,@tas)
|
=| war=(set ,@tas)
|
||||||
=< -:(apex (fine cof fro))
|
=< -:(apex (fine cof fro))
|
||||||
|%
|
|%
|
||||||
++ apex
|
++ apex
|
||||||
|= rof=(bolt (list ,@tas))
|
|= rof=(bolt (list ,@tas))
|
||||||
^- [(bolt (unit (list ,@tas))) _+>]
|
^- [(bolt (list ,@tas)) _+>]
|
||||||
?. ?=(%0 -.q.rof) [rof +>.$]
|
?. ?=(%0 -.q.rof) [rof +>.$]
|
||||||
?~ q.q.rof
|
?~ q.q.rof
|
||||||
[[p.rof [%0 p.q.rof ~]] +>.$]
|
[[p.rof [%0 p.q.rof ~]] +>.$]
|
||||||
@ -984,16 +1020,16 @@
|
|||||||
::
|
::
|
||||||
++ apse
|
++ apse
|
||||||
|= [cof=cafe for=@tas]
|
|= [cof=cafe for=@tas]
|
||||||
^- [(bolt (unit (list ,@tas))) _+>]
|
^- [(bolt (list ,@tas)) _+>]
|
||||||
?: =(for too)
|
?: =(for too)
|
||||||
[(fine cof [~ too ~]) +>.$]
|
[(fine cof [too ~]) +>.$]
|
||||||
?: (~(has in war) for) [(fine cof ~) +>]
|
?: (~(has in war) for) [(flue cof) +>]
|
||||||
=. war (~(put in war) for)
|
=. war (~(put in war) for)
|
||||||
=^ hoc +>.$ (apex (lily cof for))
|
=^ hoc +>.$ (apex (lily cof for))
|
||||||
:_ +>.$
|
:_ +>.$
|
||||||
%+ cope hoc
|
%+ cope hoc
|
||||||
|= [cof=cafe ked=(unit (list ,@tas))]
|
|= [cof=cafe ked=(list ,@tas)]
|
||||||
(fine cof ?~(ked ~ [~ for u.ked]))
|
(fine cof ?~(ked ~ [for ked]))
|
||||||
--
|
--
|
||||||
::
|
::
|
||||||
++ lope :: translation pipe
|
++ lope :: translation pipe
|
||||||
@ -1092,12 +1128,6 @@
|
|||||||
%+ cope (link cof p.kas p.cay q.cay)
|
%+ cope (link cof p.kas p.cay q.cay)
|
||||||
|= [cof=cafe vax=vase]
|
|= [cof=cafe vax=vase]
|
||||||
(fine cof [p.kas vax])
|
(fine cof [p.kas vax])
|
||||||
:: %+ cope (lion cof p.kas [p.cay]~)
|
|
||||||
:: |= [cof=cafe wuy=(list ,@tas)]
|
|
||||||
:: ?~ wuy (flaw cof [%leaf "ford: no path: {<[p.cay p.kas]>}"]~)
|
|
||||||
:: %+ cope (lope cof i.wuy t.wuy q.cay)
|
|
||||||
:: |= [cof=cafe vax=vase]
|
|
||||||
:: (fine cof [p.kas vax])
|
|
||||||
::
|
::
|
||||||
%diff
|
%diff
|
||||||
%+ cool |.(leaf/"ford: diff {<`@p`(mug p.kas)>} {<`@p`(mug q.kas)>}")
|
%+ cool |.(leaf/"ford: diff {<`@p`(mug p.kas)>} {<`@p`(mug q.kas)>}")
|
||||||
@ -1106,7 +1136,7 @@
|
|||||||
%done [cof %0 p.kas q.kas]
|
%done [cof %0 p.kas q.kas]
|
||||||
%dude (cool |.(p.kas) $(kas q.kas))
|
%dude (cool |.(p.kas) $(kas q.kas))
|
||||||
%dune
|
%dune
|
||||||
?~ q.kas [cof [%2 [%leaf "no data"]~]]
|
?~ q.kas [cof [%2 p.kas [%leaf "no data"]~]]
|
||||||
$(kas [%done p.kas u.q.kas])
|
$(kas [%done p.kas u.q.kas])
|
||||||
::
|
::
|
||||||
%file
|
%file
|
||||||
@ -1220,7 +1250,7 @@
|
|||||||
^- twig
|
^- twig
|
||||||
:+ %tsgr
|
:+ %tsgr
|
||||||
?:(=(~ rop) [%$ 1] [%brcn (~(run by rop) |=([* a=twig] [%ash a]))])
|
?:(=(~ rop) [%$ 1] [%brcn (~(run by rop) |=([* a=twig] [%ash a]))])
|
||||||
[%tssg (turn (flop lot) |=(a=term q:(need (~(get by bil) a))))]
|
[%tssg (turn (flop lot) |=(a=term q:(~(got by bil) a)))]
|
||||||
::
|
::
|
||||||
++ ably :: naked structure
|
++ ably :: naked structure
|
||||||
|= [cof=cafe for=mark hyd=hood] :: XX unused
|
|= [cof=cafe for=mark hyd=hood] :: XX unused
|
||||||
@ -1283,7 +1313,7 @@
|
|||||||
|=([a=[@ *] b=[@ *]] (lth -.a -.b))
|
|=([a=[@ *] b=[@ *]] (lth -.a -.b))
|
||||||
%+ cope
|
%+ cope
|
||||||
|- ^- (bolt (list (pair ,@ vase)))
|
|- ^- (bolt (list (pair ,@ vase)))
|
||||||
?~ poy (fine cof ~)
|
?~ poy (flue cof)
|
||||||
%+ cope $(poy t.poy)
|
%+ cope $(poy t.poy)
|
||||||
|= [cof=cafe nex=(list (pair ,@ vase))]
|
|= [cof=cafe nex=(list (pair ,@ vase))]
|
||||||
%+ cope (chap(s.how [q.i.poy s.how]) cof bax hon)
|
%+ cope (chap(s.how [q.i.poy s.how]) cof bax hon)
|
||||||
@ -1302,7 +1332,7 @@
|
|||||||
|= [cof=cafe arc=arch]
|
|= [cof=cafe arc=arch]
|
||||||
%+ cope
|
%+ cope
|
||||||
|- ^- (bolt (map ,@ vase))
|
|- ^- (bolt (map ,@ vase))
|
||||||
?~ r.arc (fine cof ~)
|
?~ r.arc (flue cof)
|
||||||
%+ cope $(r.arc l.r.arc)
|
%+ cope $(r.arc l.r.arc)
|
||||||
|= [cof=cafe lef=(map ,@ vase)]
|
|= [cof=cafe lef=(map ,@ vase)]
|
||||||
%+ cope `(bolt (map ,@ vase))`^$(cof cof, r.arc r.r.arc)
|
%+ cope `(bolt (map ,@ vase))`^$(cof cof, r.arc r.r.arc)
|
||||||
@ -1337,7 +1367,7 @@
|
|||||||
%fan
|
%fan
|
||||||
%+ cope
|
%+ cope
|
||||||
|- ^- (bolt (list vase))
|
|- ^- (bolt (list vase))
|
||||||
?~ p.hon (fine cof ~)
|
?~ p.hon (flue cof)
|
||||||
%+ cope ^$(hon i.p.hon)
|
%+ cope ^$(hon i.p.hon)
|
||||||
|= [cof=cafe vax=vase]
|
|= [cof=cafe vax=vase]
|
||||||
%+ cope ^$(cof cof, p.hon t.p.hon)
|
%+ cope ^$(cof cof, p.hon t.p.hon)
|
||||||
@ -1491,6 +1521,15 @@
|
|||||||
==
|
==
|
||||||
--
|
--
|
||||||
::
|
::
|
||||||
|
++ norm :: normalize beam rev
|
||||||
|
|= bem=beam
|
||||||
|
%_ bem
|
||||||
|
r ?: ?=(%ud -.r.bem) r.bem
|
||||||
|
=+ num=(ska ~ %cw bem(s ~))
|
||||||
|
?. ?=([~ ~ * * @u] num) r.bem :: XX
|
||||||
|
[%ud q.q.u.u.num]
|
||||||
|
==
|
||||||
|
::
|
||||||
++ pact :: patch
|
++ pact :: patch
|
||||||
|= [cof=cafe kas=silk kos=silk]
|
|= [cof=cafe kas=silk kos=silk]
|
||||||
^- (bolt gage)
|
^- (bolt gage)
|
||||||
@ -1552,7 +1591,8 @@
|
|||||||
?> (~(has by q.kig) tik)
|
?> (~(has by q.kig) tik)
|
||||||
=+ `[ren=care bem=beam]`(~(got by q.kig) tik)
|
=+ `[ren=care bem=beam]`(~(got by q.kig) tik)
|
||||||
?~ rot
|
?~ rot
|
||||||
amok:(expo [%made %| (smyt ren (tope bem)) ~])
|
=^ dep deh.bay (daze ~) :: dependencies?
|
||||||
|
amok:(expo [%made dep %| (smyt ren (tope bem)) ~])
|
||||||
=+ (cat 3 'c' ren)
|
=+ (cat 3 'c' ren)
|
||||||
exec(q.kig (~(del by q.kig) tik), keg (~(put by keg) [- bem] r.u.rot))
|
exec(q.kig (~(del by q.kig) tik), keg (~(put by keg) [- bem] r.u.rot))
|
||||||
::
|
::
|
||||||
@ -1582,12 +1622,15 @@
|
|||||||
=+ ^= our ^- @p
|
=+ ^= our ^- @p
|
||||||
?- -.q.hic
|
?- -.q.hic
|
||||||
%exec p.q.hic
|
%exec p.q.hic
|
||||||
|
%wasp p.q.hic
|
||||||
==
|
==
|
||||||
=+ ^= bay ^- baby
|
=+ ^= bay ^- baby
|
||||||
=+ buy=(~(get by pol.lex) our)
|
=+ buy=(~(get by pol.lex) our)
|
||||||
?~(buy *baby u.buy)
|
?~(buy *baby u.buy)
|
||||||
=+ bek=(clean-beak now q.q.hic)
|
|
||||||
=^ mos bay
|
=^ mos bay
|
||||||
|
?: ?=(%wasp -.q.hic)
|
||||||
|
abet:(~(awap za [[our *beak hen] [now eny ski] ~] bay) q.q.hic)
|
||||||
|
=* bek q.q.hic
|
||||||
abet:(~(apex za [[our bek hen] [now eny ski] ~] bay) r.q.hic)
|
abet:(~(apex za [[our bek hen] [now eny ski] ~] bay) r.q.hic)
|
||||||
[mos ..^$(pol (~(put by pol) our bay))]
|
[mos ..^$(pol (~(put by pol) our bay))]
|
||||||
::
|
::
|
||||||
@ -1598,14 +1641,14 @@
|
|||||||
::
|
::
|
||||||
++ load :: highly forgiving
|
++ load :: highly forgiving
|
||||||
|= old=*
|
|= old=*
|
||||||
=. old
|
::=. old
|
||||||
?. ?=([%0 *] old) old :: remove at 1
|
:: ?. ?=([%0 *] old) old :: remove at 1
|
||||||
:- %1
|
:: :- %1
|
||||||
|- ^- *
|
:: |- ^- *
|
||||||
?~ +.old ~
|
:: ?~ +.old ~
|
||||||
?> ?=([n=[p=* q=[tad=* dym=* jav=*]] l=* r=*] +.old)
|
:: ?> ?=([n=[p=* q=[tad=* dym=* deh=* jav=*]] l=* r=*] +.old)
|
||||||
:- [p.n.+.old [tad.q.n.+.old dym.q.n.+.old ~]]
|
:: :- [p.n.+.old [tad.q.n.+.old dym.q.n.+.old deh.q.n.+.old ~]]
|
||||||
[$(+.old l.+.old) $(+.old r.+.old)]
|
:: [$(+.old l.+.old) $(+.old r.+.old)]
|
||||||
=+ lox=((soft axle) old)
|
=+ lox=((soft axle) old)
|
||||||
^+ ..^$
|
^+ ..^$
|
||||||
?~ lox
|
?~ lox
|
||||||
@ -1619,19 +1662,22 @@
|
|||||||
[~ ~]
|
[~ ~]
|
||||||
::
|
::
|
||||||
++ stay :: save w/o cache
|
++ stay :: save w/o cache
|
||||||
`axle`+>-.$(pol (~(run by pol) |=(a=baby [tad.a dym.a ~])))
|
`axle`+>-.$(pol (~(run by pol) |=(a=baby [tad.a dym.a deh.a ~])))
|
||||||
::
|
::
|
||||||
++ take :: response
|
++ take :: response
|
||||||
|= [tea=wire hen=duct hin=(hypo sign)]
|
|= [tea=wire hen=duct hin=(hypo sign)]
|
||||||
^- [p=(list move) q=_..^$]
|
^- [p=(list move) q=_..^$]
|
||||||
?> ?=([@ @ @ @ @ @ ~] tea)
|
?> ?=([@ @ *] tea)
|
||||||
=+ :* our=(slav %p i.tea)
|
=+ our=(need (slaw %p i.tea))
|
||||||
num=(slav %ud i.t.tea)
|
|
||||||
tik=(slav %ud i.t.t.tea)
|
|
||||||
bek=(clean-beak now -:(need (tome t.t.t.tea)))
|
|
||||||
==
|
|
||||||
=+ bay=(~(got by pol.lex) our)
|
=+ bay=(~(got by pol.lex) our)
|
||||||
=^ mos bay
|
=^ mos bay
|
||||||
|
?~ t.t.tea
|
||||||
|
abet:(~(axun za [[our *beak hen] [now eny ski] ~] bay) (slav %uv i.t.tea) q.hin)
|
||||||
|
?> ?=([@ @ @ @ ~] t.t.tea)
|
||||||
|
=+ :* num=(need (slaw %ud i.t.tea))
|
||||||
|
tik=(need (slaw %ud i.t.t.tea))
|
||||||
|
bek=-:(need (tome t.t.t.tea))
|
||||||
|
==
|
||||||
abet:(~(axon za [[our bek hen] [now eny ski] ~] bay) num tik q.hin)
|
abet:(~(axon za [[our bek hen] [now eny ski] ~] bay) num tik q.hin)
|
||||||
[mos ..^$(pol (~(put by pol) our bay))]
|
[mos ..^$(pol (~(put by pol) our bay))]
|
||||||
--
|
--
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
[%meta p=vase] :: meta-gift
|
[%meta p=vase] :: meta-gift
|
||||||
[%nice ~] :: message success
|
[%nice ~] :: message success
|
||||||
== ::
|
== ::
|
||||||
::++ hasp ,[p=ship q=term] :: app identity
|
|
||||||
++ hapt ,[p=ship q=path] :: app instance
|
++ hapt ,[p=ship q=path] :: app instance
|
||||||
++ hath ,[p=ship q=term] :: app identity
|
++ hath ,[p=ship q=term] :: app identity
|
||||||
++ kiss :: in request ->$
|
++ kiss :: in request ->$
|
||||||
@ -156,7 +155,7 @@
|
|||||||
[%vega p=path] ::
|
[%vega p=path] ::
|
||||||
== == ::
|
== == ::
|
||||||
$: %f :: by %ford
|
$: %f :: by %ford
|
||||||
$% [%made p=(each bead (list tank))] ::
|
$% [%made p=@uvH q=(each gage tang)] ::
|
||||||
== == == ::
|
== == == ::
|
||||||
++ toil (pair duct knob) :: work in progress
|
++ toil (pair duct knob) :: work in progress
|
||||||
-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
@ -359,7 +358,11 @@
|
|||||||
:: ~& [%gape-took our imp hen]
|
:: ~& [%gape-took our imp hen]
|
||||||
[~ ..^^$]
|
[~ ..^^$]
|
||||||
=+ you=`ship`?-(-.kon %mess p.kon, %nuke p.kon, %show p.kon)
|
=+ you=`ship`?-(-.kon %mess p.kon, %nuke p.kon, %show p.kon)
|
||||||
=+ mat=(~(got by pol.all) you)
|
=+ mut=(~(get by pol.all) you)
|
||||||
|
?~ mut
|
||||||
|
~& [%gape-lost you hen]
|
||||||
|
!!
|
||||||
|
=+ mat=u.mut
|
||||||
=+ sad==+(sad=(~(get by sap.mat) our) ?^(sad u.sad [.(p 1)]:*scad))
|
=+ sad==+(sad=(~(get by sap.mat) our) ?^(sad u.sad [.(p 1)]:*scad))
|
||||||
=^ num sad
|
=^ num sad
|
||||||
=+ nym=(~(get by q.sad) hen)
|
=+ nym=(~(get by q.sad) hen)
|
||||||
@ -404,13 +407,13 @@
|
|||||||
:_ ..^$
|
:_ ..^$
|
||||||
:_ ~
|
:_ ~
|
||||||
:- hen
|
:- hen
|
||||||
?- -.p.+.sih
|
?- -.q.+.sih
|
||||||
%|
|
%|
|
||||||
[%give %crud %gasp-crud p.p.+.sih]
|
[%give %crud %gasp-crud p.q.+.sih]
|
||||||
::
|
::
|
||||||
%&
|
%&
|
||||||
=+ cay=`gage`q.p.p.+.sih
|
?. ?=(@ p.p.q.+.sih) ~| %bad-marc !!
|
||||||
?. ?=(@ p.cay) ~| %bad-marc !!
|
=+ cay=`cage`p.q.+.sih
|
||||||
?+ -.pax !!
|
?+ -.pax !!
|
||||||
%d [%give (best %rush cay)]
|
%d [%give (best %rush cay)]
|
||||||
%f [%give (best %rust cay)]
|
%f [%give (best %rust cay)]
|
||||||
@ -430,37 +433,18 @@
|
|||||||
:_ ..^$
|
:_ ..^$
|
||||||
=+ rod=|=(ron=roon `note`[%a %wont [our you] [%q %gh imp] num ron])
|
=+ rod=|=(ron=roon `note`[%a %wont [our you] [%q %gh imp] num ron])
|
||||||
?+ -.pax !!
|
?+ -.pax !!
|
||||||
%m ?: ?=(%a -.sih) ~
|
%z ?+ -.sih !!
|
||||||
?+ -.sih ~& [%gall-gave-m -.sih] !!
|
|
||||||
%f
|
|
||||||
:_ ~ :- hen
|
|
||||||
?- -.p.+.sih
|
|
||||||
%| [%give %mean ~ %ford-fail p.p.+.sih]
|
|
||||||
%& ?. ?=(@ p.q.p.p.+.sih) ~| %bad-marc !!
|
|
||||||
[%pass [%r pax] %g %mess [our imp] you `cage`q.p.p.+.sih]
|
|
||||||
==
|
|
||||||
::
|
|
||||||
%g
|
|
||||||
:_ ~ :- hen
|
|
||||||
?- -.+.sih
|
|
||||||
%crud !!
|
|
||||||
%dumb !!
|
|
||||||
%gone !!
|
|
||||||
%init !!
|
|
||||||
%logo !!
|
|
||||||
%mean [%give %mean p.+.sih]
|
|
||||||
%nice [%give %nice ~]
|
|
||||||
%rush !!
|
|
||||||
%rust !!
|
|
||||||
%sage !!
|
|
||||||
%verb !!
|
|
||||||
%veer !!
|
|
||||||
%vega !!
|
|
||||||
==
|
|
||||||
==
|
|
||||||
%s ?+ -.sih !!
|
|
||||||
%a :_ ~ :- hen
|
%a :_ ~ :- hen
|
||||||
[%pass [%r pax] %g %took [our imp] you]
|
[%pass [%r pax] %g %took [our imp] you]
|
||||||
|
::
|
||||||
|
%f
|
||||||
|
:_ ~ :- hen
|
||||||
|
?- -.q.+.sih
|
||||||
|
%| [%give %mean ~ %ford-fail p.q.+.sih]
|
||||||
|
%& ?. ?=(@ p.p.q.+.sih) ~| %bad-marc !!
|
||||||
|
[%pass [%r pax] %g %mess [our imp] you `cage`p.q.+.sih]
|
||||||
|
==
|
||||||
|
::
|
||||||
%g
|
%g
|
||||||
:_ ~ :- hen
|
:_ ~ :- hen
|
||||||
?- -.+.sih
|
?- -.+.sih
|
||||||
@ -507,7 +491,8 @@
|
|||||||
^- move :- hen
|
^- move :- hen
|
||||||
:+ %pass
|
:+ %pass
|
||||||
:* %r
|
:* %r
|
||||||
?-(-.rok %m %m, %s %s, %u %s)
|
:: ?-(-.rok %m %m, %s %s, %u %s)
|
||||||
|
%z
|
||||||
(scot %p p.saq)
|
(scot %p p.saq)
|
||||||
(scot %p q.saq)
|
(scot %p q.saq)
|
||||||
(scot %ud num)
|
(scot %ud num)
|
||||||
@ -570,8 +555,8 @@
|
|||||||
::
|
::
|
||||||
++ able :: bone to duct
|
++ able :: bone to duct
|
||||||
|= ost=bone ^- duct
|
|= ost=bone ^- duct
|
||||||
?: =(0 ost)
|
:: ?: =(0 ost)
|
||||||
[(away ~) ~]
|
:: hun.mat
|
||||||
(~(got by r.zam.sat) ost)
|
(~(got by r.zam.sat) ost)
|
||||||
::
|
::
|
||||||
++ away :: application path
|
++ away :: application path
|
||||||
@ -735,17 +720,18 @@
|
|||||||
%_(+>.$ ped.sat pen, mow :(weld new old mow))
|
%_(+>.$ ped.sat pen, mow :(weld new old mow))
|
||||||
::
|
::
|
||||||
++ drum :: raw dependencies
|
++ drum :: raw dependencies
|
||||||
|= dep=(set beam)
|
|= dep=@uvH
|
||||||
^+ +>
|
^+ +>
|
||||||
?> ?=(^ orm.sat)
|
?> ?=(^ orm.sat)
|
||||||
%- drug
|
%- drug
|
||||||
=+ ped=`(set (pair ship desk))`[[our %main] ~ ~]
|
=+ ped=`(set (pair ship desk))`[[our %main] ~ ~]
|
||||||
=+ mav=(~(tap by dep) ~)
|
ped
|
||||||
|- ^+ ped
|
::=+ mav=(~(tap by dep) ~)
|
||||||
?~ mav ped
|
::|- ^+ ped
|
||||||
?: =(r.i.mav [%da u.orm.sat])
|
::?~ mav ped
|
||||||
$(mav t.mav, ped (~(put in ped) p.i.mav q.i.mav))
|
::?: =(r.i.mav [%da u.orm.sat])
|
||||||
$(mav t.mav)
|
:: $(mav t.mav, ped (~(put in ped) p.i.mav q.i.mav))
|
||||||
|
::$(mav t.mav)
|
||||||
::
|
::
|
||||||
++ ford :: exec to ford
|
++ ford :: exec to ford
|
||||||
|= [pax=path kas=silk]
|
|= [pax=path kas=silk]
|
||||||
@ -790,64 +776,57 @@
|
|||||||
|= sih=sign
|
|= sih=sign
|
||||||
?> ?=(%f -.sih)
|
?> ?=(%f -.sih)
|
||||||
^- [(unit (list tank)) _+>]
|
^- [(unit (list tank)) _+>]
|
||||||
?- -.p.+.sih
|
?- -.q.+.sih
|
||||||
& :- ~
|
& :- ~
|
||||||
%- obey:(morn (slot 3 q.q.p.p.+.sih))
|
%- obey:(morn (slot 3 q.p.q.+.sih))
|
||||||
(slot 2 q.q.p.p.+.sih)
|
(slot 2 q.p.q.+.sih)
|
||||||
| [`p.p.+.sih (give %crud %mack-made p.p.+.sih)]
|
| [`p.q.+.sih (give %crud %mack-made p.q.+.sih)]
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ meek :: apply peek
|
++ meek :: apply peek
|
||||||
|= sih=sign
|
|= sih=sign
|
||||||
^- [(unit cage) _+>]
|
^- [(unit cage) _+>]
|
||||||
?> ?=(%f -.sih)
|
?> ?=(%f -.sih)
|
||||||
?- -.p.+.sih
|
?- -.q.+.sih
|
||||||
& =+ vax=`vase`q.q.p.p.+.sih
|
& =+ vax=`vase`q.p.q.+.sih
|
||||||
?. &(?=(^ q.vax) ?=(@ -.q.vax))
|
?. &(?=(^ q.vax) ?=(@ -.q.vax))
|
||||||
[~ (give %crud %peek-lame *(list tank))]
|
[~ (give %crud %peek-lame *(list tank))]
|
||||||
:: ~> %slog.[0 (skol p:(slot 3 vax))]
|
:: ~> %slog.[0 (skol p:(slot 3 vax))]
|
||||||
:- `[((hard mark) -.q.vax) (slot 3 vax)]
|
:- `[((hard mark) -.q.vax) (slot 3 vax)]
|
||||||
+>.$
|
+>.$
|
||||||
| [~ (give %crud %meek-made p.p.+.sih)]
|
| [~ (give %crud %meek-made p.q.+.sih)]
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ mick :: apply w/depends
|
++ mick :: apply w/depends
|
||||||
|= sih=sign
|
|= sih=sign
|
||||||
?> ?=(%f -.sih)
|
?> ?=(%f -.sih)
|
||||||
^- [(unit (set beam)) _+>]
|
^- [[p=? q=@uvH] _+>]
|
||||||
?- -.p.+.sih
|
:- [-.q.+.sih p.+.sih]
|
||||||
& :- `p.p.p.+.sih
|
?- -.q.+.sih
|
||||||
%- obey:(morn (slot 3 q.q.p.p.+.sih))
|
& %- obey:(morn (slot 3 q.p.q.+.sih))
|
||||||
(slot 2 q.q.p.p.+.sih)
|
(slot 2 q.p.q.+.sih)
|
||||||
| [~ (give %crud %mick-made p.p.+.sih)]
|
| (give %crud %mick-made p.q.+.sih)
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ muck :: apply part
|
++ muck :: apply part
|
||||||
|= sih=sign
|
|= sih=sign
|
||||||
^- [(unit (list tank)) _+>]
|
^- [(unit (list tank)) _+>]
|
||||||
?> ?=(%f -.sih)
|
?> ?=(%f -.sih)
|
||||||
?- -.p.+.sih
|
?- -.q.+.sih
|
||||||
& [~ (obey q.q.p.p.+.sih)]
|
& [~ (obey q.p.q.+.sih)]
|
||||||
| [`p.p.+.sih (give %crud %muck-made p.p.+.sih)]
|
| [`p.q.+.sih (give %crud %muck-made p.q.+.sih)]
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ murk :: apply park
|
++ murk :: apply park
|
||||||
|= sih=sign
|
|= sih=sign
|
||||||
^- [(unit cage) _+>]
|
^- [(unit cage) _+>]
|
||||||
?> ?=(%f -.sih)
|
?> ?=(%f -.sih)
|
||||||
?- -.p.+.sih
|
?- -.q.+.sih
|
||||||
& ?. ?=(@ p.q.p.p.+.sih) ~| %bad-marc !!
|
& ?. ?=(@ p.p.q.+.sih) ~| %bad-marc !!
|
||||||
[`q.p.p.+.sih +>.$]
|
[`p.q.+.sih +>.$]
|
||||||
| [~ (give %crud %murk-made p.p.+.sih)]
|
| [~ (give %crud %murk-made p.q.+.sih)]
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ moar :: foreign take
|
|
||||||
|= $: pax=path
|
|
||||||
sih=sign
|
|
||||||
==
|
|
||||||
^+ +>
|
|
||||||
!!
|
|
||||||
::
|
|
||||||
++ more :: domestic take
|
++ more :: domestic take
|
||||||
|= $: pax=path :: internal position
|
|= $: pax=path :: internal position
|
||||||
hin=(hypo sign) :: typed event
|
hin=(hypo sign) :: typed event
|
||||||
@ -927,8 +906,8 @@
|
|||||||
::
|
::
|
||||||
%prep
|
%prep
|
||||||
=^ gad +>.$ (mick q.hin)
|
=^ gad +>.$ (mick q.hin)
|
||||||
?~ gad (drum ~)
|
?. p.gad (drum q.gad)
|
||||||
deal:(drum u.gad)
|
deal:(drum q.gad)
|
||||||
::
|
::
|
||||||
%pull
|
%pull
|
||||||
=^ gud +>.$ (mack q.hin)
|
=^ gud +>.$ (mack q.hin)
|
||||||
@ -1173,10 +1152,9 @@
|
|||||||
:: ~& [%yawn-told-has ost qol [our hen]]
|
:: ~& [%yawn-told-has ost qol [our hen]]
|
||||||
=+ qul=?~(qol 1 +(u.qol))
|
=+ qul=?~(qol 1 +(u.qol))
|
||||||
=. qel.sat (~(put by qel.sat) ost qul)
|
=. qel.sat (~(put by qel.sat) ost qul)
|
||||||
:: XX turn me back on!
|
?: =(10 qul)
|
||||||
:: ?: =(10 qul)
|
~& [%yawn-told-full ost our hen]
|
||||||
:: ~& [%yawn-told-full ost our hen]
|
+>.$(qic.sat ~, vey.sat (~(put to vey.sat) hen %nuke p.kon))
|
||||||
:: +>.$(qic.sat ~, vey.sat (~(put to vey.sat) hen %nuke p.kon))
|
|
||||||
+>.$(qic.sat ~)
|
+>.$(qic.sat ~)
|
||||||
::
|
::
|
||||||
%load
|
%load
|
||||||
@ -1218,8 +1196,10 @@
|
|||||||
(goc p.q.kon /pock)
|
(goc p.q.kon /pock)
|
||||||
:(goc p.q.kon (rsh 3 ofs p.q.kon) /pock)
|
:(goc p.q.kon (rsh 3 ofs p.q.kon) /pock)
|
||||||
=+ hyp=?=(%pock (end 3 4 cog))
|
=+ hyp=?=(%pock (end 3 4 cog))
|
||||||
|
=+ ^- err=tape
|
||||||
|
?.(?=(?(%poke %pock) cog) <cog> "{<cog>} with mark {<p.q.kon>}")
|
||||||
?. (warm cog)
|
?. (warm cog)
|
||||||
(give(qic.sat ~) %mean ~ %poke-find-fail ~)
|
(give(qic.sat ~) %mean ~ %poke-find-fail leaf/err ~)
|
||||||
?> ?=(^ huv.sat)
|
?> ?=(^ huv.sat)
|
||||||
=+ ^= sam
|
=+ ^= sam
|
||||||
;: slop
|
;: slop
|
||||||
@ -1227,10 +1207,9 @@
|
|||||||
[[%atom %p] p.kon]
|
[[%atom %p] p.kon]
|
||||||
?.(hyp q.q.kon (slop !>(p.q.q.kon) q.q.kon))
|
?.(hyp q.q.kon (slop !>(p.q.q.kon) q.q.kon))
|
||||||
==
|
==
|
||||||
=+ err=?.(?=(?(%poke %pock) cog) <cog> "{<cog>} with mark <p.q.kon>")
|
|
||||||
:: ~& [%mess-poke cog]
|
:: ~& [%mess-poke cog]
|
||||||
%+ ford /s/poke
|
%+ ford /s/poke
|
||||||
:+ %dude leaf/"poking {err}"
|
:+ %dude leaf/err
|
||||||
[%call (harm cog (conf (core u.huv.sat))) (cove %$ sam)]
|
[%call (harm cog (conf (core u.huv.sat))) (cove %$ sam)]
|
||||||
::
|
::
|
||||||
%show
|
%show
|
||||||
@ -1244,6 +1223,7 @@
|
|||||||
=+ sam=!>([p.kon q.kon])
|
=+ sam=!>([p.kon q.kon])
|
||||||
?> ?=(^ huv.sat)
|
?> ?=(^ huv.sat)
|
||||||
(yawl [%peek (scot %p p.kon) q.kon] leaf/"peeking" u.huv.sat sam)
|
(yawl [%peek (scot %p p.kon) q.kon] leaf/"peeking" u.huv.sat sam)
|
||||||
|
~& [%show-dumb app.sat imp q.kon]
|
||||||
(give(qic.sat ~) %dumb ~)
|
(give(qic.sat ~) %dumb ~)
|
||||||
::
|
::
|
||||||
%sire
|
%sire
|
||||||
|
@ -101,6 +101,11 @@
|
|||||||
++ nail ,[p=hair q=tape] :: parsing input
|
++ nail ,[p=hair q=tape] :: parsing input
|
||||||
++ numb ,@ :: just a number
|
++ numb ,@ :: just a number
|
||||||
++ pair |*([a=$+(* *) b=$+(* *)] ,[p=a q=b]) :: just a pair
|
++ pair |*([a=$+(* *) b=$+(* *)] ,[p=a q=b]) :: just a pair
|
||||||
|
++ wand |* a=(pole $+(* *)) :: hetero list
|
||||||
|
|= b=* ::
|
||||||
|
?~ a ~ ::
|
||||||
|
?@ b ~ ::
|
||||||
|
[i=(-.a -.b) t=$(a +.a, b +.b)] ::
|
||||||
++ pass ,@ :: public key
|
++ pass ,@ :: public key
|
||||||
++ path (list span) :: filesys location
|
++ path (list span) :: filesys location
|
||||||
++ pint ,[p=[p=@ q=@] q=[p=@ q=@]] :: line/column range
|
++ pint ,[p=[p=@ q=@] q=[p=@ q=@]] :: line/column range
|
||||||
@ -156,7 +161,12 @@
|
|||||||
p=[p=tape q=tape r=tape] :: mid open close
|
p=[p=tape q=tape r=tape] :: mid open close
|
||||||
q=(list tank) ::
|
q=(list tank) ::
|
||||||
== ::
|
== ::
|
||||||
==
|
== ::
|
||||||
|
++ tanq :: modern tank
|
||||||
|
$? [~ p=(list tanq)] :: list of printables
|
||||||
|
[~ ~ p=tape] :: simple string
|
||||||
|
(pair ,@tas tanq) :: captioned
|
||||||
|
== ::
|
||||||
++ tape (list char) :: like a string
|
++ tape (list char) :: like a string
|
||||||
++ term ,@tas :: Hoon ASCII subset
|
++ term ,@tas :: Hoon ASCII subset
|
||||||
++ tiki :: test case
|
++ tiki :: test case
|
||||||
@ -227,8 +237,8 @@
|
|||||||
[%cndt p=twig q=twig] :: %-(q p)
|
[%cndt p=twig q=twig] :: %-(q p)
|
||||||
[%cnhp p=twig q=tusk] :: slam p w/ sample q
|
[%cnhp p=twig q=tusk] :: slam p w/ sample q
|
||||||
[%cntr p=wing q=twig r=tram] :: pull p.q w/ changes
|
[%cntr p=wing q=twig r=tram] :: pull p.q w/ changes
|
||||||
[%cnkt p=twig q=twig r=twig s=twig] :: slam p w/ %*(q r s)
|
[%cnkt p=twig q=twig r=twig s=twig] :: slam p w/ :*(q r s)
|
||||||
[%cnls p=twig q=twig r=twig] :: slam p w/ %*(q r)
|
[%cnls p=twig q=twig r=twig] :: slam p w/ :*(q r)
|
||||||
[%cnsg p=wing q=twig r=twig] :: pull p from q with r
|
[%cnsg p=wing q=twig r=twig] :: pull p from q with r
|
||||||
[%cnts p=wing q=tram] :: eval. p w/ q changes
|
[%cnts p=wing q=tram] :: eval. p w/ q changes
|
||||||
[%cnzy p=term] :: pulls limb p
|
[%cnzy p=term] :: pulls limb p
|
||||||
@ -1151,6 +1161,30 @@
|
|||||||
++ tos ~/ %tos :: fetch suffix
|
++ tos ~/ %tos :: fetch suffix
|
||||||
|=(a=@ ?>((lth a 256) (cut 3 [(mul 3 a) 3] sis)))
|
|=(a=@ ?>((lth a 256) (cut 3 [(mul 3 a) 3] sis)))
|
||||||
--
|
--
|
||||||
|
::
|
||||||
|
++ fa :: base58check
|
||||||
|
=+ key='123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
|
||||||
|
=+ ^- yek=@ux ~+
|
||||||
|
=- yek:(roll (trip key) -)
|
||||||
|
|= [a=char b=@ yek=_`@ux`(fil 3 256 0xff)]
|
||||||
|
[+(b) (mix yek (lsh 3 `@u`a (~(inv fe 3) b)))]
|
||||||
|
|%
|
||||||
|
++ cha |=(a=char `(unit ,@uF)`=+(b=(cut 3 [`@`a 1] yek) ?:(=(b 0xff) ~ `b)))
|
||||||
|
++ tok
|
||||||
|
|= a=@ux ^- @ux
|
||||||
|
=+ b=(pad a)
|
||||||
|
=- (~(net fe 5) (end 3 4 (shay 32 -)))
|
||||||
|
(shay (add b (met 3 a)) (lsh 3 b (swap 3 a)))
|
||||||
|
::
|
||||||
|
++ pad |=(a=@ =+(b=(met 3 a) ?:((gte b 21) 0 (sub 21 b))))
|
||||||
|
++ enc |=(a=@ux `@ux`(mix (lsh 3 4 a) (tok a)))
|
||||||
|
++ den
|
||||||
|
|= a=@ux ^- (unit ,@ux)
|
||||||
|
=+ b=(rsh 3 4 a)
|
||||||
|
?. =((tok b) (end 3 4 a))
|
||||||
|
~
|
||||||
|
`b
|
||||||
|
--
|
||||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
:: section 2cF, signed and modular ints ::
|
:: section 2cF, signed and modular ints ::
|
||||||
::
|
::
|
||||||
@ -2061,8 +2095,8 @@
|
|||||||
::
|
::
|
||||||
+- get :: grab value by key
|
+- get :: grab value by key
|
||||||
~/ %get
|
~/ %get
|
||||||
|* b=*
|
|= b=*
|
||||||
|- ^- ?(~ [~ u=_?>(?=(^ a) q.n.a)])
|
^- $|(~ [~ u=_?>(?=(^ a) q.n.a)])
|
||||||
?~ a
|
?~ a
|
||||||
~
|
~
|
||||||
?: =(b p.n.a)
|
?: =(b p.n.a)
|
||||||
@ -2853,6 +2887,13 @@
|
|||||||
:: section 2eI, parsing (external) ::
|
:: section 2eI, parsing (external) ::
|
||||||
::
|
::
|
||||||
++ rash |*([naf=@ sab=_rule] (scan (trip naf) sab)) ::
|
++ rash |*([naf=@ sab=_rule] (scan (trip naf) sab)) ::
|
||||||
|
++ rose |* [los=tape sab=_rule]
|
||||||
|
=+ vex=(sab [[1 1] los])
|
||||||
|
=+ len=(lent los)
|
||||||
|
?. =(+(len) q.p.vex) [%| p=(dec q.p.vex)]
|
||||||
|
?~ q.vex
|
||||||
|
[%& p=~]
|
||||||
|
[%& p=[~ u=p.u.q.vex]]
|
||||||
++ rush |*([naf=@ sab=_rule] (rust (trip naf) sab))
|
++ rush |*([naf=@ sab=_rule] (rust (trip naf) sab))
|
||||||
++ rust |* [los=tape sab=_rule]
|
++ rust |* [los=tape sab=_rule]
|
||||||
=+ vex=((full sab) [[1 1] los])
|
=+ vex=((full sab) [[1 1] los])
|
||||||
@ -2956,6 +2997,7 @@
|
|||||||
++ teff :: length utf8
|
++ teff :: length utf8
|
||||||
|= a=@t ^- @
|
|= a=@t ^- @
|
||||||
=+ b=(end 3 1 a)
|
=+ b=(end 3 1 a)
|
||||||
|
~| %bad-utf8
|
||||||
?: =(0 b)
|
?: =(0 b)
|
||||||
?>(=(0 a) 0)
|
?>(=(0 a) 0)
|
||||||
?> |((gte b 32) =(10 b))
|
?> |((gte b 32) =(10 b))
|
||||||
@ -3211,6 +3253,7 @@
|
|||||||
++ ab
|
++ ab
|
||||||
|%
|
|%
|
||||||
++ bix (bass 16 (stun [2 2] six))
|
++ bix (bass 16 (stun [2 2] six))
|
||||||
|
++ fem (sear |=(a=@ (cha:fa a)) aln)
|
||||||
++ hif (boss 256 ;~(plug tip tiq (easy ~)))
|
++ hif (boss 256 ;~(plug tip tiq (easy ~)))
|
||||||
++ huf %+ cook
|
++ huf %+ cook
|
||||||
|=([a=@ b=@] (wred:un ~(zug mu ~(zag mu [a b]))))
|
|=([a=@ b=@] (wred:un ~(zug mu ~(zag mu [a b]))))
|
||||||
@ -3265,11 +3308,15 @@
|
|||||||
++ dim (ape (bass 10 ;~(plug sed:ab (star sid:ab))))
|
++ dim (ape (bass 10 ;~(plug sed:ab (star sid:ab))))
|
||||||
++ dum (bass 10 (plus sid:ab))
|
++ dum (bass 10 (plus sid:ab))
|
||||||
++ fed ;~ pose
|
++ fed ;~ pose
|
||||||
(bass 0x1.0000.0000.0000.0000 (most doh hyf:ab))
|
%+ bass 0x1.0000.0000.0000.0000
|
||||||
|
;~((glue doh) ;~(pose hyf:ab huf:ab) (more doh hyf:ab))
|
||||||
|
::
|
||||||
|
hyf:ab
|
||||||
huf:ab
|
huf:ab
|
||||||
hif:ab
|
hif:ab
|
||||||
tiq:ab
|
tiq:ab
|
||||||
==
|
==
|
||||||
|
++ fim (sear den:fa (bass 58 (plus fem:ab)))
|
||||||
++ hex (ape (bass 0x1.0000 ;~(plug qex:ab (star ;~(pfix dog qix:ab)))))
|
++ hex (ape (bass 0x1.0000 ;~(plug qex:ab (star ;~(pfix dog qix:ab)))))
|
||||||
++ lip =+ tod=(ape ted:ab)
|
++ lip =+ tod=(ape ted:ab)
|
||||||
(bass 256 ;~(plug tod (stun [3 3] ;~(pfix dog tod))))
|
(bass 256 ;~(plug tod (stun [3 3] ;~(pfix dog tod))))
|
||||||
@ -3352,12 +3399,13 @@
|
|||||||
(trip (tod:po (rsh 3 1 q.p.lot)))
|
(trip (tod:po (rsh 3 1 q.p.lot)))
|
||||||
rex
|
rex
|
||||||
==
|
==
|
||||||
=+ [dyz=(met 5 q.p.lot) fin=|]
|
=+ [dyz=(met 5 q.p.lot) fin=| dub=&]
|
||||||
|- ^- tape
|
|- ^- tape
|
||||||
?: =(0 dyz)
|
?: =(0 dyz)
|
||||||
rex
|
rex
|
||||||
%= $
|
%= $
|
||||||
fin &
|
fin &
|
||||||
|
dub !dub
|
||||||
dyz (dec dyz)
|
dyz (dec dyz)
|
||||||
q.p.lot (rsh 5 1 q.p.lot)
|
q.p.lot (rsh 5 1 q.p.lot)
|
||||||
rex
|
rex
|
||||||
@ -3369,7 +3417,7 @@
|
|||||||
`tape`['-' ~]
|
`tape`['-' ~]
|
||||||
(trip (tos:po (end 3 1 q.cog)))
|
(trip (tos:po (end 3 1 q.cog)))
|
||||||
(trip (tod:po (rsh 3 1 q.cog)))
|
(trip (tod:po (rsh 3 1 q.cog)))
|
||||||
`tape`?:(fin ['-' ?:(=(1 (end 0 1 dyz)) ~ ['-' ~])] ~)
|
`tape`?.(fin ~ ['-' ?.(dub ~ ['-' ~])])
|
||||||
rex
|
rex
|
||||||
==
|
==
|
||||||
==
|
==
|
||||||
@ -3387,6 +3435,9 @@
|
|||||||
==
|
==
|
||||||
::
|
::
|
||||||
%u
|
%u
|
||||||
|
?: ?=(%c hay)
|
||||||
|
%+ welp ['0' 'c' (reap (pad:fa q.p.lot) '1')]
|
||||||
|
(c-co (enc:fa q.p.lot))
|
||||||
=- (weld p.gam ?:(=(0 q.p.lot) `tape`['0' ~] q.gam))
|
=- (weld p.gam ?:(=(0 q.p.lot) `tape`['0' ~] q.gam))
|
||||||
^= gam ^- [p=tape q=tape]
|
^= gam ^- [p=tape q=tape]
|
||||||
?+ hay [~ ((ox-co [10 3] |=(a=@ ~(d ne a))) q.p.lot)]
|
?+ hay [~ ((ox-co [10 3] |=(a=@ ~(d ne a))) q.p.lot)]
|
||||||
@ -3413,6 +3464,7 @@
|
|||||||
=+ rex=*tape
|
=+ rex=*tape
|
||||||
=< |%
|
=< |%
|
||||||
++ a-co |=(dat=@ ((d-co 1) dat))
|
++ a-co |=(dat=@ ((d-co 1) dat))
|
||||||
|
++ c-co (em-co [58 1] |=([? b=@ c=tape] [~(c ne b) c]))
|
||||||
++ d-co |=(min=@ (em-co [10 min] |=([? b=@ c=tape] [~(d ne b) c])))
|
++ d-co |=(min=@ (em-co [10 min] |=([? b=@ c=tape] [~(d ne b) c])))
|
||||||
++ r-co
|
++ r-co
|
||||||
|= [syn=? nub=@ der=@ ign=(unit tape) ne=?]
|
|= [syn=? nub=@ der=@ ign=(unit tape) ne=?]
|
||||||
@ -3477,6 +3529,7 @@
|
|||||||
::
|
::
|
||||||
++ ne
|
++ ne
|
||||||
|_ tig=@
|
|_ tig=@
|
||||||
|
++ c (cut 3 [tig 1] key:fa)
|
||||||
++ d (add tig '0')
|
++ d (add tig '0')
|
||||||
++ x ?:((gte tig 10) (add tig 87) d)
|
++ x ?:((gte tig 10) (add tig 87) d)
|
||||||
++ v ?:((gte tig 10) (add tig 87) d)
|
++ v ?:((gte tig 10) (add tig 87) d)
|
||||||
@ -3498,6 +3551,7 @@
|
|||||||
;~ pfix (just '0')
|
;~ pfix (just '0')
|
||||||
;~ pose
|
;~ pose
|
||||||
(stag %ub ;~(pfix (just 'b') bay:ag))
|
(stag %ub ;~(pfix (just 'b') bay:ag))
|
||||||
|
(stag %uc ;~(pfix (just 'c') fim:ag))
|
||||||
(stag %ui ;~(pfix (just 'i') dim:ag))
|
(stag %ui ;~(pfix (just 'i') dim:ag))
|
||||||
(stag %ux ;~(pfix (just 'x') hex:ag))
|
(stag %ux ;~(pfix (just 'x') hex:ag))
|
||||||
(stag %uv ;~(pfix (just 'v') viz:ag))
|
(stag %uv ;~(pfix (just 'v') viz:ag))
|
||||||
@ -3668,437 +3722,7 @@
|
|||||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
:: section 2eM, regular-expressions ::
|
:: section 2eM, regular-expressions ::
|
||||||
::
|
::
|
||||||
++ pars
|
|
||||||
|= [a=tape] :: parse tape to rege
|
|
||||||
^- (unit rege)
|
|
||||||
=+ foo=((full apex:rags) [[1 1] a])
|
|
||||||
?~ q.foo
|
|
||||||
~
|
|
||||||
[~ p.u.q.foo]
|
|
||||||
::
|
|
||||||
++ rags :: rege parsers
|
|
||||||
=> |%
|
|
||||||
++ nor ;~(less (mask "^$()|*?+.[\\") (shim 1 127)) :: non-control char
|
|
||||||
++ les ;~(less bas asp) :: not backslash
|
|
||||||
++ lep ;~(less (mask "-^[]\\") asp) :: charset non-control
|
|
||||||
++ asp (shim 32 126) :: printable ascii
|
|
||||||
++ alb ;~(less ser asp) :: charset literal char
|
|
||||||
++ mis ;~(less aln asp) :: non alphanumeric
|
|
||||||
--
|
|
||||||
|%
|
|
||||||
++ apex :: top level
|
|
||||||
%+ knee *rege |. ~+
|
|
||||||
;~ pose
|
|
||||||
;~((bend |=(a=[rege rege] (some [%eith a]))) mall ;~(pfix bar apex))
|
|
||||||
(stag %eith ;~(plug (easy %empt) ;~(pfix bar apex)))
|
|
||||||
(easy %empt)
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ mall
|
|
||||||
%+ knee *rege |. ~+
|
|
||||||
;~((bend |=(a=[rege rege] (some [%pair a]))) bets mall)
|
|
||||||
::
|
|
||||||
++ bets
|
|
||||||
%+ knee *rege |. ~+
|
|
||||||
|= tub=nail
|
|
||||||
=+ vex=(chun tub)
|
|
||||||
?~ q.vex
|
|
||||||
vex
|
|
||||||
=+ a=p.u.q.vex
|
|
||||||
%- ;~ pose
|
|
||||||
(cold [%eith %empt a] (jest '??'))
|
|
||||||
(cold [%manl a] (jest '*?'))
|
|
||||||
(cold [%plll a] (jest '+?'))
|
|
||||||
(cold [%eith a %empt] wut)
|
|
||||||
(cold [%mant a] tar)
|
|
||||||
(cold [%plls a] lus)
|
|
||||||
(stag %betl ;~(plug (easy a) ;~(sfix rang wut)))
|
|
||||||
(stag %betw ;~(plug (easy a) rang))
|
|
||||||
(stag %binl ;~(plug (easy a) (ifix [kel (jest ',}?')] dim:ag)))
|
|
||||||
(stag %bant ;~(plug (easy a) (ifix [kel (jest '}?')] dim:ag)))
|
|
||||||
(stag %bant ;~(plug (easy a) (ifix [kel ker] dim:ag)))
|
|
||||||
(stag %bint ;~(plug (easy a) (ifix [kel (jest ',}')] dim:ag)))
|
|
||||||
(easy a)
|
|
||||||
==
|
|
||||||
q.u.q.vex
|
|
||||||
::
|
|
||||||
++ ranc
|
|
||||||
|= [a=@ b=@]
|
|
||||||
^- @
|
|
||||||
?:((gth a b) 0 (con (bex a) $(a +(a))))
|
|
||||||
::
|
|
||||||
++ flap |=(a=@ (mix a (dec (bex 256))))
|
|
||||||
::
|
|
||||||
++ rang
|
|
||||||
%+ sear |=([a=@ b=@] ?:((lte a b) (some [a b]) ~))
|
|
||||||
(ifix [kel ker] ;~(plug dim:ag ;~(pfix com dim:ag)))
|
|
||||||
::
|
|
||||||
++ chun
|
|
||||||
%+ knee *rege |. ~+
|
|
||||||
;~ pose
|
|
||||||
(cold %ende buc)
|
|
||||||
(cold %sart ket)
|
|
||||||
(cold %dote dot)
|
|
||||||
%+ cook |=(a=(list char) (reel a |=([p=char q=rege] [%pair [%lite p] q])))
|
|
||||||
;~(pfix (jest '\\Q') cape)
|
|
||||||
|= tub=nail
|
|
||||||
=+ foo=;~(plug kel dim:ag ;~(pose ker (jest ',}') ;~(plug com dim:ag ker)))
|
|
||||||
=+ bar=(foo tub)
|
|
||||||
?~(q.bar (chad tub) (fail tub))
|
|
||||||
(cook |=([a=rege] [%capt a 0]) (ifix [pel per] apex))
|
|
||||||
%+ cook |=([a=rege] [%capt a 0])
|
|
||||||
(ifix [;~(plug (jest '(?P<') (plus aln) gar) per] apex)
|
|
||||||
(ifix [(jest '(?:') per] apex)
|
|
||||||
(stag %brac ;~(pfix sel seac))
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ seac
|
|
||||||
|= tub=nail
|
|
||||||
?~ q.tub
|
|
||||||
(fail tub)
|
|
||||||
?: =(i.q.tub '^')
|
|
||||||
(;~(pfix ket (cook flap sead)) tub)
|
|
||||||
(sead tub)
|
|
||||||
::
|
|
||||||
++ sead
|
|
||||||
%+ knee *@ |. ~+
|
|
||||||
;~ pose
|
|
||||||
|= tub=nail
|
|
||||||
?~ q.tub
|
|
||||||
(fail tub)
|
|
||||||
?. =(i.q.tub ']')
|
|
||||||
(fail tub)
|
|
||||||
?~ t.q.tub
|
|
||||||
(fail tub)
|
|
||||||
?: =(i.t.q.tub '-')
|
|
||||||
?~ t.t.q.tub
|
|
||||||
(fail tub)
|
|
||||||
?: =(i.t.t.q.tub ']')
|
|
||||||
(;~(pfix ser (cook |=(a=@ (con (bex ']') a)) sade)) tub)
|
|
||||||
(fail tub)
|
|
||||||
(;~(pfix ser (cook |=(a=@ (con (bex ']') a)) sade)) tub)
|
|
||||||
|= tub=nail
|
|
||||||
?~ q.tub
|
|
||||||
(fail tub)
|
|
||||||
?. =(i.q.tub '-')
|
|
||||||
(fail tub)
|
|
||||||
?~ t.q.tub
|
|
||||||
(fail tub)
|
|
||||||
?: =(i.t.q.tub '-')
|
|
||||||
?~ t.t.q.tub
|
|
||||||
(fail tub)
|
|
||||||
?: =(i.t.t.q.tub ']')
|
|
||||||
(;~(pfix hep (cook |=(a=@ (con (bex '-') a)) sade)) tub)
|
|
||||||
(fail tub)
|
|
||||||
(;~(pfix hep (cook |=(a=@ (con (bex '-') a)) sade)) tub)
|
|
||||||
(cook |=(a=[@ @] (con a)) ;~(plug seap sade))
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ sade
|
|
||||||
%+ knee *@ |. ~+
|
|
||||||
;~ pose
|
|
||||||
(cold (bex '-') (jest '-]'))
|
|
||||||
(cold 0 ser)
|
|
||||||
(cook |=([p=@ q=@] `@`(con p q)) ;~(plug seap sade))
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ seap
|
|
||||||
%+ knee *@ |. ~+
|
|
||||||
;~ pose
|
|
||||||
unid
|
|
||||||
%+ ifix (jest '[:')^(jest ':]')
|
|
||||||
;~(pose ;~(pfix ket (cook flap chas)) chas)
|
|
||||||
%+ sear |=([a=@ b=@] ?:((gth a b) ~ (some (ranc a b))))
|
|
||||||
;~(plug asp ;~(pfix hep alb))
|
|
||||||
|= tub=nail
|
|
||||||
?~ q.tub
|
|
||||||
(fail tub)
|
|
||||||
?~ t.q.tub
|
|
||||||
((cook bex les) tub)
|
|
||||||
?. =(i.t.q.tub '-')
|
|
||||||
((cook bex les) tub)
|
|
||||||
?~ t.t.q.tub
|
|
||||||
((cook bex les) tub)
|
|
||||||
?: =(i.t.t.q.tub ']')
|
|
||||||
((cook bex les) tub)
|
|
||||||
(fail tub)
|
|
||||||
;~(pfix bas escd)
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ cape
|
|
||||||
%+ knee *tape |. ~+
|
|
||||||
;~ pose
|
|
||||||
(cold ~ (jest '\\E'))
|
|
||||||
;~(plug next cape)
|
|
||||||
(cook |=(a=char (tape [a ~])) next)
|
|
||||||
(full (easy ~))
|
|
||||||
==
|
|
||||||
++ chas :: ascii character set
|
|
||||||
=- (sear ~(get by -) sym)
|
|
||||||
%- mo ^- (list ,[@tas @I])
|
|
||||||
:~ alnum/alnum alpha/alpha ascii/ascii blank/blank cntrl/cntrl
|
|
||||||
digit/digit graph/graph lower/lower print/print punct/punct
|
|
||||||
space/space upper/upper word/wordc xdigit/xdigit
|
|
||||||
==
|
|
||||||
:: Character sets
|
|
||||||
++ alnum :(con lower upper digit)
|
|
||||||
++ alpha :(con lower upper)
|
|
||||||
++ ascii (ranc 0 127)
|
|
||||||
++ blank (con (bex 32) (bex 9))
|
|
||||||
++ cntrl :(con (ranc 0 31) (bex 127))
|
|
||||||
++ digit (ranc '0' '9')
|
|
||||||
++ graph (ranc 33 126)
|
|
||||||
++ lower (ranc 'a' 'z')
|
|
||||||
++ print (ranc 32 126)
|
|
||||||
++ punct ;: con
|
|
||||||
(ranc '!' '/')
|
|
||||||
(ranc ':' '@')
|
|
||||||
(ranc '[' '`')
|
|
||||||
(ranc '{' '~')
|
|
||||||
==
|
|
||||||
++ space :(con (ranc 9 13) (bex ' '))
|
|
||||||
++ upper (ranc 'A' 'Z')
|
|
||||||
++ white :(con (bex ' ') (ranc 9 10) (ranc 12 13))
|
|
||||||
++ wordc :(con digit lower upper (bex '_'))
|
|
||||||
++ xdigit :(con (ranc 'a' 'f') (ranc 'A' 'F') digit)
|
|
||||||
::
|
|
||||||
++ chad
|
|
||||||
%+ knee *rege |. ~+
|
|
||||||
;~(pose (stag %lite nor) (stag %brac unid) ;~(pfix bas escp))
|
|
||||||
::
|
|
||||||
++ escd
|
|
||||||
%+ cook bex
|
|
||||||
;~ pose
|
|
||||||
(cold 0 (just '0'))
|
|
||||||
(sear ~(get by (mo a/7 t/9 n/10 v/11 f/12 r/13 ~)) low)
|
|
||||||
(sear |=(a=@ ?:((lth a 256) (some a) ~)) (bass 8 (stun [2 3] cit)))
|
|
||||||
;~(pfix (just 'x') (bass 16 (stun [2 2] hit)))
|
|
||||||
(ifix [(jest 'x{') ker] (bass 16 (stun [2 2] hit)))
|
|
||||||
mis
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ escp
|
|
||||||
;~ pose
|
|
||||||
(stag %lite escd)
|
|
||||||
(sear ~(get by (mo b/%boun w/[%brac wordc] z/%ende ~)) low)
|
|
||||||
=- (sear ~(get by (mo -)) hig)
|
|
||||||
~['A'^%sart 'B'^%bout 'C'^%dote 'Q'^%empt 'W'^[%brac (flap wordc)]]
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ unid
|
|
||||||
=+ cha=~(get by (mo d/digit s/white w/wordc ~))
|
|
||||||
;~ pfix bas
|
|
||||||
;~ pose
|
|
||||||
(sear cha low)
|
|
||||||
(cook flap (sear |=(a=@ (cha (add a 32))) hig))
|
|
||||||
== ==
|
|
||||||
--
|
|
||||||
::
|
|
||||||
++ ra :: regex engine
|
|
||||||
|_ a=rege
|
|
||||||
++ proc :: capture numbering
|
|
||||||
|= b=@
|
|
||||||
=- -(+ +>.$(a a))
|
|
||||||
^- [p=@ a=rege]
|
|
||||||
?- a
|
|
||||||
[%capt *] =+ foo=$(a p.a, b +(b))
|
|
||||||
[p.foo [%capt a.foo b]]
|
|
||||||
[%eith *] =+ foo=$(a p.a)
|
|
||||||
=+ bar=$(a q.a, b p.foo)
|
|
||||||
[p.bar [%eith a.foo a.bar]]
|
|
||||||
[%pair *] =+ foo=$(a p.a)
|
|
||||||
=+ bar=$(a q.a, b p.foo)
|
|
||||||
[p.bar [%pair a.foo a.bar]]
|
|
||||||
[%manl *] =+ foo=$(a p.a)
|
|
||||||
[p.foo [%manl a.foo]]
|
|
||||||
[%plll *] =+ foo=$(a p.a)
|
|
||||||
[p.foo [%plll a.foo]]
|
|
||||||
[%binl *] =+ foo=$(a p.a)
|
|
||||||
[p.foo [%binl a.foo q.a]]
|
|
||||||
[%betl *] =+ foo=$(a p.a)
|
|
||||||
[p.foo [%betl a.foo q.a r.a]]
|
|
||||||
[%mant *] =+ foo=$(a p.a)
|
|
||||||
[p.foo [%mant a.foo]]
|
|
||||||
[%plls *] =+ foo=$(a p.a)
|
|
||||||
[p.foo [%plls a.foo]]
|
|
||||||
[%bant *] =+ foo=$(a p.a)
|
|
||||||
[p.foo [%bant a.foo q.a]]
|
|
||||||
[%bint *] =+ foo=$(a p.a)
|
|
||||||
[p.foo [%bint a.foo q.a]]
|
|
||||||
[%betw *] =+ foo=$(a p.a)
|
|
||||||
[p.foo [%betw a.foo q.a r.a]]
|
|
||||||
* [b a]
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ cont
|
|
||||||
|= [a=(map ,@u tape) b=(map ,@u tape)]
|
|
||||||
(~(gas by *(map ,@u tape)) (weld (~(tap by a)) (~(tap by b))))
|
|
||||||
::
|
|
||||||
++ abor
|
|
||||||
|= [a=char b=(unit ,[tape (map ,@u tape)])]
|
|
||||||
^- (unit ,[tape (map ,@u tape)])
|
|
||||||
?~ b
|
|
||||||
b
|
|
||||||
[~ [[a -.u.b] +.u.b]]
|
|
||||||
::
|
|
||||||
++ matc
|
|
||||||
|= [b=tape c=tape]
|
|
||||||
^- (unit (map ,@u tape))
|
|
||||||
=+ foo=`(unit ,[tape (map ,@u tape)])`(deep b %empt c)
|
|
||||||
(bind foo |*(a=^ (~(put by +.a) 0 -.a)))
|
|
||||||
::
|
|
||||||
++ chet
|
|
||||||
|= [b=(unit ,[tape (map ,@u tape)]) c=tape d=tape]
|
|
||||||
^- (unit ,[tape (map ,@u tape)])
|
|
||||||
?~ b
|
|
||||||
b
|
|
||||||
?~ -.u.b
|
|
||||||
b
|
|
||||||
=+ bar=(deep (slag (lent -.u.b) c) %empt d)
|
|
||||||
?~ bar
|
|
||||||
bar
|
|
||||||
b
|
|
||||||
++ blak (some ["" *(map ,@u tape)])
|
|
||||||
++ word |=(a=char =((dis wordc:rags (bex a)) 0))
|
|
||||||
++ deep
|
|
||||||
|= [b=tape c=rege d=tape]
|
|
||||||
^- (unit ,[tape (map ,@u tape)])
|
|
||||||
?- a
|
|
||||||
%dote ?~(b ~ (some [[i.b ~] *(map ,@u tape)]))
|
|
||||||
%ende ?~(b blak ~)
|
|
||||||
%sart ?:(=(b d) blak ~)
|
|
||||||
%empt blak
|
|
||||||
%boun =+ ^= luc
|
|
||||||
?: =(b d)
|
|
||||||
&
|
|
||||||
=+ foo=(slag (dec (sub (lent d) (lent b))) d)
|
|
||||||
(word -.foo)
|
|
||||||
=+ cuc=?~(b & (word -.b))
|
|
||||||
?:(!=(luc cuc) blak ~)
|
|
||||||
%bout =+ ^= luc
|
|
||||||
?: =(b d)
|
|
||||||
&
|
|
||||||
=+ foo=(slag (dec (sub (lent d) (lent b))) d)
|
|
||||||
(word -.foo)
|
|
||||||
=+ cuc=?~(b & (word -.b))
|
|
||||||
?:(=(luc cuc) blak ~)
|
|
||||||
[%capt *] =+ foo=$(a p.a)
|
|
||||||
?~ foo
|
|
||||||
foo
|
|
||||||
=+ ft=u.foo
|
|
||||||
=+ bar=$(a c, b (slag (lent -.ft) b), c %empt)
|
|
||||||
?~ bar
|
|
||||||
bar
|
|
||||||
[~ [-.ft (~(put by +.ft) q.a -.ft)]]
|
|
||||||
[%lite *] ?~(b ~ ?:(=(i.b p.a) (some [[i.b ~] *(map ,@u tape)]) ~))
|
|
||||||
[%brac *] ?~ b
|
|
||||||
~
|
|
||||||
?. =((dis (bex `@`i.b) p.a) 0)
|
|
||||||
(some [[i.b ~] *(map ,@u tape)])
|
|
||||||
~
|
|
||||||
[%eith *] =+ foo=(chet(a c) $(a p.a) b d)
|
|
||||||
=+ bar=(chet(a c) $(a q.a) b d)
|
|
||||||
?~ foo
|
|
||||||
bar
|
|
||||||
?~ bar
|
|
||||||
foo
|
|
||||||
=+ ft=u.foo
|
|
||||||
=+ bt=u.bar
|
|
||||||
?: (gte (lent -.ft) (lent -.bt))
|
|
||||||
foo
|
|
||||||
bar
|
|
||||||
[%pair *] =+ foo=$(a p.a, c [%pair q.a c])
|
|
||||||
?~ foo
|
|
||||||
foo
|
|
||||||
=+ ft=u.foo
|
|
||||||
=+ bar=$(a q.a, b (slag (lent -.ft) b))
|
|
||||||
?~ bar
|
|
||||||
bar
|
|
||||||
=+ bt=u.bar
|
|
||||||
[~ [(weld -.ft -.bt) (cont +.ft +.bt)]]
|
|
||||||
[%manl *] =+ foo=$(a p.a)
|
|
||||||
?~ foo
|
|
||||||
blak
|
|
||||||
?~ -.u.foo
|
|
||||||
blak
|
|
||||||
$(a [%eith %empt [%pair p.a [%eith %empt a]]])
|
|
||||||
[%mant *] =+ foo=$(a p.a)
|
|
||||||
?~ foo
|
|
||||||
blak
|
|
||||||
=+ ft=u.foo
|
|
||||||
?~ -.ft
|
|
||||||
blak
|
|
||||||
$(a [%eith [%pair p.a [%eith a %empt]] %empt])
|
|
||||||
[%plls *] $(a [%pair p.a [%mant p.a]])
|
|
||||||
[%plll *] $(a [%pair p.a [%manl p.a]])
|
|
||||||
[%binl *] =+ min=?:(=(q.a 0) 0 (dec q.a))
|
|
||||||
?: =(q.a 0)
|
|
||||||
$(a [%manl p.a])
|
|
||||||
$(a [%pair p.a [%binl p.a min]])
|
|
||||||
[%bant *] ?: =(0 q.a)
|
|
||||||
blak
|
|
||||||
$(a [%pair p.a [%bant p.a (dec q.a)]])
|
|
||||||
[%bint *] =+ min=?:(=(q.a 0) 0 (dec q.a))
|
|
||||||
?: =(q.a 0)
|
|
||||||
$(a [%mant p.a])
|
|
||||||
$(a [%pair p.a [%bint p.a min]])
|
|
||||||
[%betw *] ?: =(0 r.a)
|
|
||||||
blak
|
|
||||||
?: =(q.a 0)
|
|
||||||
$(a [%eith [%pair p.a [%betw p.a 0 (dec r.a)]] %empt])
|
|
||||||
$(a [%pair p.a [%betw p.a (dec q.a) (dec r.a)]])
|
|
||||||
[%betl *] ?: =(0 r.a)
|
|
||||||
blak
|
|
||||||
?: =(q.a 0)
|
|
||||||
$(a [%eith %empt [%pair p.a [%betl p.a 0 (dec r.a)]]])
|
|
||||||
$(a [%pair p.a [%betl p.a (dec q.a) (dec r.a)]])
|
|
||||||
==
|
|
||||||
--
|
|
||||||
::
|
|
||||||
++ rexp :: Regex match
|
|
||||||
~/ %rexp
|
|
||||||
|= [a=tape b=tape]
|
|
||||||
^- (unit (unit (map ,@u tape)))
|
|
||||||
=+ ^= bar
|
|
||||||
|= [a=@ b=(map ,@u tape)]
|
|
||||||
?: =(a 0)
|
|
||||||
b
|
|
||||||
=+ c=(~(get by b) a)
|
|
||||||
?~ c
|
|
||||||
$(a (dec a), b (~(put by b) a ""))
|
|
||||||
$(a (dec a))
|
|
||||||
=+ par=(pars a)
|
|
||||||
?~ par ~
|
|
||||||
=+ poc=(~(proc ra u.par) 1)
|
|
||||||
=+ c=b
|
|
||||||
|-
|
|
||||||
=+ foo=(matc:poc c b)
|
|
||||||
?~ foo
|
|
||||||
?~ c
|
|
||||||
[~ ~]
|
|
||||||
$(c t.c)
|
|
||||||
[~ [~ (bar (dec p.poc) u.foo)]]
|
|
||||||
::
|
|
||||||
++ repg :: Global regex replace
|
|
||||||
~/ %repg
|
|
||||||
|= [a=tape b=tape c=tape]
|
|
||||||
^- (unit tape)
|
|
||||||
=+ par=(pars a)
|
|
||||||
?~ par ~
|
|
||||||
=+ poc=(~(proc ra u.par) 1)
|
|
||||||
=+ d=b
|
|
||||||
:- ~
|
|
||||||
|-
|
|
||||||
^- tape
|
|
||||||
=+ foo=(matc:poc d b)
|
|
||||||
?~ foo
|
|
||||||
?~ d
|
|
||||||
~
|
|
||||||
[i.d $(d t.d)]
|
|
||||||
=+ ft=(need (~(get by u.foo) 0))
|
|
||||||
?~ d
|
|
||||||
c
|
|
||||||
(weld c $(d `tape`(slag (lent ft) `tape`d)))
|
|
||||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
:: section 2eN, pseudo-cryptography ::
|
:: section 2eN, pseudo-cryptography ::
|
||||||
::
|
::
|
||||||
@ -5332,10 +4956,16 @@
|
|||||||
++ shax :: sha-256
|
++ shax :: sha-256
|
||||||
~/ %shax
|
~/ %shax
|
||||||
|= ruz=@ ^- @
|
|= ruz=@ ^- @
|
||||||
|
(shay [(met 3 ruz) ruz])
|
||||||
|
::
|
||||||
|
++ shay :: sha-256 with length
|
||||||
|
~/ %shay
|
||||||
|
|= [len=@u ruz=@] ^- @
|
||||||
~| %sha
|
~| %sha
|
||||||
|
=> .(ruz (cut 3 [0 len] ruz))
|
||||||
=+ [few==>(fe .(a 5)) wac=|=([a=@ b=@] (cut 5 [a 1] b))]
|
=+ [few==>(fe .(a 5)) wac=|=([a=@ b=@] (cut 5 [a 1] b))]
|
||||||
=+ [sum=sum.few ror=ror.few net=net.few inv=inv.few]
|
=+ [sum=sum.few ror=ror.few net=net.few inv=inv.few]
|
||||||
=+ ral=(lsh 0 3 (met 3 ruz))
|
=+ ral=(lsh 0 3 len)
|
||||||
=+ ^= ful
|
=+ ^= ful
|
||||||
%+ can 0
|
%+ can 0
|
||||||
:~ [ral ruz]
|
:~ [ral ruz]
|
||||||
@ -6076,8 +5706,9 @@
|
|||||||
::
|
::
|
||||||
++ seed :: hoon/hoon core vase
|
++ seed :: hoon/hoon core vase
|
||||||
^- vase
|
^- vase
|
||||||
~+
|
!!
|
||||||
!;(*type ..seed)
|
:: ~+ :: trimmed
|
||||||
|
:: !;(*type ..seed)
|
||||||
::
|
::
|
||||||
++ seem |=(toy=typo `type`toy) :: promote typo
|
++ seem |=(toy=typo `type`toy) :: promote typo
|
||||||
++ seer |=(vix=vise `vase`vix) :: promote vise
|
++ seer |=(vix=vise `vase`vix) :: promote vise
|
||||||
@ -6174,7 +5805,9 @@
|
|||||||
|= [sut=type ref=type]
|
|= [sut=type ref=type]
|
||||||
^- [? worm]
|
^- [? worm]
|
||||||
?: (~(has in nes) [sut ref]) [& +>+<]
|
?: (~(has in nes) [sut ref]) [& +>+<]
|
||||||
?. (~(nest ut sut) | ref) [| +>+<]
|
?. (~(nest ut sut) | ref)
|
||||||
|
:: ~& %nest-failed
|
||||||
|
[| +>+<]
|
||||||
[& +>+<(nes (~(put in nes) [sut ref]))]
|
[& +>+<(nes (~(put in nes) [sut ref]))]
|
||||||
::
|
::
|
||||||
++ nets :: typeless nest
|
++ nets :: typeless nest
|
||||||
@ -6183,6 +5816,14 @@
|
|||||||
?: (~(has in nes) [sut ref]) [& +>+<]
|
?: (~(has in nes) [sut ref]) [& +>+<]
|
||||||
=+ gat=|=([a=type b=type] (~(nest ut a) | b))
|
=+ gat=|=([a=type b=type] (~(nest ut a) | b))
|
||||||
?. (,? .*(gat(+< [sut ref]) -.gat))
|
?. (,? .*(gat(+< [sut ref]) -.gat))
|
||||||
|
:: ~& %nets-failed
|
||||||
|
:: =+ tag=`*`skol
|
||||||
|
:: =+ foo=(tank .*(tag(+< ref) -.tag))
|
||||||
|
:: =+ bar=(skol sut)
|
||||||
|
:: ~& %nets-need
|
||||||
|
:: ~> %slog.[0 bar]
|
||||||
|
:: ~& %nets-have
|
||||||
|
:: ~> %slog.[0 foo]
|
||||||
[| +>+<.$]
|
[| +>+<.$]
|
||||||
[& +>+<.$(nes (~(put in nes) [sut ref]))]
|
[& +>+<.$(nes (~(put in nes) [sut ref]))]
|
||||||
::
|
::
|
||||||
@ -6467,12 +6108,13 @@
|
|||||||
++ hock
|
++ hock
|
||||||
|- ^- toga
|
|- ^- toga
|
||||||
?- gen
|
?- gen
|
||||||
[^ *] [%2 $(gen p.gen) $(gen q.gen)]
|
|
||||||
[%cnts [@ ~] ~] i.p.gen
|
[%cnts [@ ~] ~] i.p.gen
|
||||||
[%cnzy @] p.gen
|
[%cnzy @] p.gen
|
||||||
[%cnzz [@ ~]] i.p.gen
|
[%cnzz [@ ~]] i.p.gen
|
||||||
[%zpcb *] $(gen q.gen)
|
[%zpcb *] $(gen q.gen)
|
||||||
* =+(neg=open ?:(=(gen neg) [%0 ~] $(gen neg)))
|
[@ *] =+(neg=open ?:(=(gen neg) [%0 ~] $(gen neg)))
|
||||||
|
[^ *] =+ toe=[$(gen p.gen) $(gen q.gen)]
|
||||||
|
?:(=(toe [[%0 ~] [%0 ~]]) [%0 ~] [%2 toe])
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ open
|
++ open
|
||||||
@ -6522,7 +6164,13 @@
|
|||||||
[i.p.gen $(p.gen t.p.gen)]
|
[i.p.gen $(p.gen t.p.gen)]
|
||||||
::
|
::
|
||||||
[%cncb *] [%ktls [%cnzz p.gen] %cnts p.gen q.gen]
|
[%cncb *] [%ktls [%cnzz p.gen] %cnts p.gen q.gen]
|
||||||
[%cncl *] [%cnsg [%$ ~] p.gen q.gen]
|
[%cncl *]
|
||||||
|
=+ rem=[%cnsg [%$ ~] p.gen q.gen]
|
||||||
|
?. ?=([%zpcb ^ %cnzz @ ~] p.gen) rem
|
||||||
|
=> .(p.gen `[@ ^ @ p=@tas ~]`p.gen)
|
||||||
|
:+ %sgzp [[%dtzz %tas 'slam'] [%dtzz %tas p.p.gen]]
|
||||||
|
rem
|
||||||
|
::
|
||||||
[%cndt *] [%cnhp q.gen [p.gen ~]]
|
[%cndt *] [%cnhp q.gen [p.gen ~]]
|
||||||
[%cnkt *] [%cnhp p.gen q.gen r.gen s.gen ~]
|
[%cnkt *] [%cnhp p.gen q.gen r.gen s.gen ~]
|
||||||
[%cnls *] [%cnhp p.gen q.gen r.gen ~]
|
[%cnls *] [%cnhp p.gen q.gen r.gen ~]
|
||||||
@ -7101,9 +6749,7 @@
|
|||||||
[[%leaf (rip 3 -.lum)] $(lum +.lum)]
|
[[%leaf (rip 3 -.lum)] $(lum +.lum)]
|
||||||
::
|
::
|
||||||
%type
|
%type
|
||||||
=+ reb=(slap [p:!>(.) .(sut lum)] %cnzy %duck)
|
=+ cis=((hard tank) .*(.(sut lum) !=(duck))) :: type bypass
|
||||||
=+ cis=(tank q.reb)
|
|
||||||
?. =(cis q.reb) ~
|
|
||||||
:^ ~ %palm
|
:^ ~ %palm
|
||||||
[~ ~ ~ ~]
|
[~ ~ ~ ~]
|
||||||
[[%leaf '#' 't' '/' ~] cis ~]
|
[[%leaf '#' 't' '/' ~] cis ~]
|
||||||
@ -7137,7 +6783,8 @@
|
|||||||
~
|
~
|
||||||
:+ ~
|
:+ ~
|
||||||
%leaf
|
%leaf
|
||||||
?+ p.q.ham ~(rend co [~ p.q.ham lum])
|
?+ (rash p.q.ham ;~(sfix (cook crip (star low)) (star hig)))
|
||||||
|
~(rend co [~ p.q.ham lum])
|
||||||
%$ ~(rend co [~ %ud lum])
|
%$ ~(rend co [~ %ud lum])
|
||||||
%t (dash (rip 3 lum) '\'')
|
%t (dash (rip 3 lum) '\'')
|
||||||
%tas ['%' ?.(=(0 lum) (rip 3 lum) ['$' ~])]
|
%tas ['%' ?.(=(0 lum) (rip 3 lum) ['$' ~])]
|
||||||
@ -8540,10 +8187,12 @@
|
|||||||
?: (~(has in was) u.rev)
|
?: (~(has in was) u.rev)
|
||||||
~|(%pray-loop !!)
|
~|(%pray-loop !!)
|
||||||
=+ ruv=`path`(weld u.rev `path`[%hoon ~])
|
=+ ruv=`path`(weld u.rev `path`[%hoon ~])
|
||||||
=+ txt=(,@ta .^(%cx ruv))
|
~& [%pray-disabled ruv]
|
||||||
~| ruv
|
!!
|
||||||
%+ rash txt
|
:: =+ txt=(,@ta .^(%cx ruv))
|
||||||
(ifix [gay gay] tall(was (~(put in was) u.rev), wer u.rev))
|
:: ~| ruv
|
||||||
|
:: %+ rash txt
|
||||||
|
:: (ifix [gay gay] tall(was (~(put in was) u.rev), wer u.rev, bug |))
|
||||||
::
|
::
|
||||||
++ prey
|
++ prey
|
||||||
|= gun=(list twig) ^- (unit twig)
|
|= gun=(list twig) ^- (unit twig)
|
||||||
@ -8878,7 +8527,7 @@
|
|||||||
;~ pose
|
;~ pose
|
||||||
(stag %wtzp ;~(pfix zap wide))
|
(stag %wtzp ;~(pfix zap wide))
|
||||||
(stag %zpzp (cold ~ ;~(plug zap zap)))
|
(stag %zpzp (cold ~ ;~(plug zap zap)))
|
||||||
(stag %zpcn (cold ~ ;~(plug zap cen)))
|
:: (stag %zpcn (cold ~ ;~(plug zap cen)))
|
||||||
==
|
==
|
||||||
:- '$'
|
:- '$'
|
||||||
rump
|
rump
|
||||||
@ -8955,23 +8604,7 @@
|
|||||||
(stag %bccm ;~(pfix com hill))
|
(stag %bccm ;~(pfix com hill))
|
||||||
:- '^'
|
:- '^'
|
||||||
;~ pose
|
;~ pose
|
||||||
;~ pfix ket
|
|
||||||
;~ pose
|
|
||||||
;~ pfix col
|
|
||||||
%+ sear
|
|
||||||
|= [a=tile b=twig] :: XX shd be static
|
|
||||||
=+ rev=(plex b)
|
|
||||||
?~ rev ~
|
|
||||||
%- some
|
|
||||||
:+ %smsm a
|
|
||||||
[%dtkt %dtzz %$ %cx u.rev]
|
|
||||||
;~(plug hill rood)
|
|
||||||
==
|
|
||||||
(sear prey (most ket rood))
|
|
||||||
==
|
|
||||||
==
|
|
||||||
(stag %cnzz rope)
|
(stag %cnzz rope)
|
||||||
(stag %bczp (cold %cell ket))
|
|
||||||
==
|
==
|
||||||
:- '`'
|
:- '`'
|
||||||
;~ pfix tec
|
;~ pfix tec
|
||||||
@ -8984,8 +8617,6 @@
|
|||||||
(cook |=(a=twig [[%dtzz %n ~] a]) wide)
|
(cook |=(a=twig [[%dtzz %n ~] a]) wide)
|
||||||
==
|
==
|
||||||
==
|
==
|
||||||
:- '#'
|
|
||||||
;~(pfix hax rupl)
|
|
||||||
:- '"'
|
:- '"'
|
||||||
%+ cook
|
%+ cook
|
||||||
|= a=(list (list beer))
|
|= a=(list (list beer))
|
||||||
@ -9114,10 +8745,10 @@
|
|||||||
;~ pfix bar
|
;~ pfix bar
|
||||||
%- stew
|
%- stew
|
||||||
^. stet ^. limo
|
^. stet ^. limo
|
||||||
:~ ['_' (rune cab %brcb expu)]
|
:~ ['_' (rune cab %brcb expv)]
|
||||||
['%' (rune cen %brcn expe)]
|
['%' (rune cen %brcn expe)]
|
||||||
['.' (rune dot %brdt expa)]
|
['.' (rune dot %brdt expa)]
|
||||||
['/' (rune fas %brfs expu)]
|
['/' (rune fas %brfs expv)]
|
||||||
['-' (rune hep %brhp expa)]
|
['-' (rune hep %brhp expa)]
|
||||||
['^' (rune ket %brkt expr)]
|
['^' (rune ket %brkt expr)]
|
||||||
['+' (rune lus %brls expo)]
|
['+' (rune lus %brls expo)]
|
||||||
@ -9143,7 +8774,15 @@
|
|||||||
==
|
==
|
||||||
:- '$'
|
:- '$'
|
||||||
;~ pose
|
;~ pose
|
||||||
(rune com %bccm expv)
|
;~ pfix buc
|
||||||
|
%- stew
|
||||||
|
^. stet ^. limo
|
||||||
|
:~
|
||||||
|
[',' (rune com %bccm expt)]
|
||||||
|
['*' (rune tar %bctr expt)]
|
||||||
|
['@' (rune pat %bcpt expu)]
|
||||||
|
==
|
||||||
|
==
|
||||||
(stag %bccm (noil tol))
|
(stag %bccm (noil tol))
|
||||||
==
|
==
|
||||||
:- ':'
|
:- ':'
|
||||||
@ -9372,9 +9011,9 @@
|
|||||||
++ expq |.(;~(gunk rope loaf loaf)) :: wing and two twigs
|
++ expq |.(;~(gunk rope loaf loaf)) :: wing and two twigs
|
||||||
++ expr |.(;~(gunk loaf wisp)) :: twig and core tail
|
++ expr |.(;~(gunk loaf wisp)) :: twig and core tail
|
||||||
++ exps |.((butt hank)) :: closed gapped twigs
|
++ exps |.((butt hank)) :: closed gapped twigs
|
||||||
:: expt
|
++ expt |.(lobe) :: tile
|
||||||
++ expu |.(;~(gunk lobe wisp)) :: tile, core tail
|
++ expu |.(;~(gunk rope lobe)) :: wing and tile
|
||||||
++ expv |.(lobe) :: tile
|
++ expv |.(;~(gunk lobe wisp)) :: tile, core tail
|
||||||
++ expw |.(;~(gunk lobe teak)) :: tile and tiki
|
++ expw |.(;~(gunk lobe teak)) :: tile and tiki
|
||||||
++ expx |.((butt ;~(gunk teak race))) :: tiki, [tile twig]s
|
++ expx |.((butt ;~(gunk teak race))) :: tiki, [tile twig]s
|
||||||
++ expy |.((butt ;~(gunk teak loaf race))) :: tiki twig [tile twig]s
|
++ expy |.((butt ;~(gunk teak loaf race))) :: tiki twig [tile twig]s
|
||||||
@ -9440,11 +9079,12 @@
|
|||||||
==
|
==
|
||||||
^- (unit twig)
|
^- (unit twig)
|
||||||
?- -.vil
|
?- -.vil
|
||||||
%tis [~ %ktts ~(hock ap ros) p.vil]
|
|
||||||
%col [~ %tsgl ros p.vil]
|
%col [~ %tsgl ros p.vil]
|
||||||
%pel [~ %cnts ~(rake ap ros) p.vil]
|
%pel [~ %cnts ~(rake ap ros) p.vil]
|
||||||
%pat [~ %bcpt ~(rake ap ros) p.vil]
|
%pat [~ %bcpt ~(rake ap ros) p.vil]
|
||||||
%ket [~ ros p.vil]
|
%ket [~ ros p.vil]
|
||||||
|
%tis =+ tog=~(hock ap ros)
|
||||||
|
?:(=([%0 ~] tog) ~ [~ %ktts tog p.vil])
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ long
|
++ long
|
||||||
@ -10198,13 +9838,12 @@
|
|||||||
|- ^- [p=(list ovum) q=(pair worm (list ,[p=@tas q=vase]))]
|
|- ^- [p=(list ovum) q=(pair worm (list ,[p=@tas q=vase]))]
|
||||||
?~ mor [(flop ova) niz]
|
?~ mor [(flop ova) niz]
|
||||||
=^ nyx niz (jack lac i.mor)
|
=^ nyx niz (jack lac i.mor)
|
||||||
$(ova (weld p.nyx ova), mor (weld q.nyx t.mor))
|
$(ova (weld p.nyx ova), mor (weld t.mor q.nyx))
|
||||||
--
|
--
|
||||||
--
|
--
|
||||||
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
:::::: :::::: Postface ::::::
|
:::::: :::::: Postface ::::::
|
||||||
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
!:
|
|
||||||
~& %post-start
|
~& %post-start
|
||||||
=+ pit=`vase`!>(.) ::
|
=+ pit=`vase`!>(.) ::
|
||||||
=+ bud=pit :: becomes tang
|
=+ bud=pit :: becomes tang
|
||||||
|
@ -509,8 +509,7 @@
|
|||||||
::
|
::
|
||||||
++ moon :: mime type to text
|
++ moon :: mime type to text
|
||||||
|= myn=mite
|
|= myn=mite
|
||||||
%+ rap
|
%- crip
|
||||||
3
|
|
||||||
|- ^- tape
|
|- ^- tape
|
||||||
?~ myn ~
|
?~ myn ~
|
||||||
?: =(~ t.myn) (trip i.myn)
|
?: =(~ t.myn) (trip i.myn)
|
||||||
@ -632,7 +631,7 @@
|
|||||||
::
|
::
|
||||||
++ poxo :: node to tape
|
++ poxo :: node to tape
|
||||||
=< |=(a=manx `tape`(apex a ~))
|
=< |=(a=manx `tape`(apex a ~))
|
||||||
|_ unq=_`?`|
|
|_ _[unq=`?`| cot=`?`|] :: self-close all tags
|
||||||
++ apex :: top level
|
++ apex :: top level
|
||||||
|= [mex=manx rez=tape]
|
|= [mex=manx rez=tape]
|
||||||
^- tape
|
^- tape
|
||||||
@ -646,8 +645,8 @@
|
|||||||
%+ welp tam
|
%+ welp tam
|
||||||
=- ?~(att rez [' ' (attr att rez)])
|
=- ?~(att rez [' ' (attr att rez)])
|
||||||
^- rez=tape
|
^- rez=tape
|
||||||
::?~ c.mex
|
?: &(?=(~ c.mex) |(cot (clot man)))
|
||||||
:: [' ' '/' '>' rez]
|
[' ' '/' '>' rez]
|
||||||
:- '>'
|
:- '>'
|
||||||
(many c.mex :(weld "</" tam ">" rez))
|
(many c.mex :(weld "</" tam ">" rez))
|
||||||
:: ::
|
:: ::
|
||||||
@ -681,16 +680,23 @@
|
|||||||
==
|
==
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ name :: name to tape
|
|
||||||
|= man=mane ^- tape
|
|
||||||
?@ man (trip man)
|
|
||||||
(weld (trip -.man) `tape`[':' (trip +.man)])
|
|
||||||
::
|
|
||||||
++ many :: nodelist to tape
|
++ many :: nodelist to tape
|
||||||
|= [lix=(list manx) rez=tape]
|
|= [lix=(list manx) rez=tape]
|
||||||
|- ^- tape
|
|- ^- tape
|
||||||
?~ lix rez
|
?~ lix rez
|
||||||
(apex i.lix $(lix t.lix))
|
(apex i.lix $(lix t.lix))
|
||||||
|
::
|
||||||
|
++ name :: name to tape
|
||||||
|
|= man=mane ^- tape
|
||||||
|
?@ man (trip man)
|
||||||
|
(weld (trip -.man) `tape`[':' (trip +.man)])
|
||||||
|
::
|
||||||
|
++ clot ~+ :: self-closing tags
|
||||||
|
%~ has in
|
||||||
|
%- sa ^- (list term) :~
|
||||||
|
%area %base %br %col %command %embed %hr %img %input %keygen
|
||||||
|
%link %meta %param %source %track %wbr
|
||||||
|
==
|
||||||
--
|
--
|
||||||
::
|
::
|
||||||
++ poxa :: xml parser
|
++ poxa :: xml parser
|
||||||
@ -1100,14 +1106,15 @@
|
|||||||
?~ rax
|
?~ rax
|
||||||
[~ ~]
|
[~ ~]
|
||||||
?^ t.rax
|
?^ t.rax
|
||||||
[p.pok [i.rax q.pok]]:[pok=$(rax t.rax) .]
|
[p.pok [ire q.pok]]:[pok=$(rax t.rax) ire=i.rax]
|
||||||
=+ ^- raf=(like tape)
|
=+ ^- raf=(like tape)
|
||||||
%. [1^1 (flop (trip i.rax))]
|
%. [1^1 (flop (trip i.rax))]
|
||||||
;~(sfix (plus ;~(less dot next)) dot)
|
;~(sfix (star ;~(less dot next)) dot)
|
||||||
?~ q.raf
|
?~ q.raf
|
||||||
[~ [i.rax ~]]
|
[~ [i.rax ~]]
|
||||||
=+ `[ext=tape [@ @] fyl=tape]`u.q.raf
|
=+ `[ext=tape [@ @] fyl=tape]`u.q.raf
|
||||||
[[~ (crip (flop ext))] [(crip (flop fyl)) ~]]
|
:- ?:(=(~ ext) ~ [~ (crip (flop ext))])
|
||||||
|
?:(=(~ fyl) ~ [(crip (flop fyl)) ~])
|
||||||
::
|
::
|
||||||
++ fuel :: parse fcgi
|
++ fuel :: parse fcgi
|
||||||
|= [bem=beam but=path]
|
|= [bem=beam but=path]
|
||||||
@ -1116,17 +1123,11 @@
|
|||||||
=+ dyb=(slay i.t.but)
|
=+ dyb=(slay i.t.but)
|
||||||
?> ?& ?=([~ %many *] dyb)
|
?> ?& ?=([~ %many *] dyb)
|
||||||
?=([* * *] p.u.dyb)
|
?=([* * *] p.u.dyb)
|
||||||
:: ?=([%$ %tas *] i.p.u.dyb)
|
?=([%$ %ta *] i.p.u.dyb)
|
||||||
?=([%many *] i.p.u.dyb)
|
|
||||||
?=([%blob *] i.t.p.u.dyb)
|
?=([%blob *] i.t.p.u.dyb)
|
||||||
==
|
==
|
||||||
=+ ced=((hard cred) p.i.t.p.u.dyb)
|
=+ ced=((hard cred) p.i.t.p.u.dyb)
|
||||||
:: =+ nep=q.p.i.p.u.dyb
|
:: =+ nep=q.p.i.p.u.dyb
|
||||||
=+ ^= nyp ^- path
|
|
||||||
%+ turn p.i.p.u.dyb
|
|
||||||
|= a=coin ^- @ta
|
|
||||||
?> ?=([%$ %ta @] a)
|
|
||||||
?>(((sane %ta) q.p.a) q.p.a)
|
|
||||||
=+ ^= gut ^- (list ,@t)
|
=+ ^= gut ^- (list ,@t)
|
||||||
%+ turn t.t.p.u.dyb
|
%+ turn t.t.p.u.dyb
|
||||||
|= a=coin ^- @t
|
|= a=coin ^- @t
|
||||||
@ -1141,7 +1142,6 @@
|
|||||||
ced
|
ced
|
||||||
bem
|
bem
|
||||||
t.t.but
|
t.t.but
|
||||||
nyp
|
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ sifo :: 64-bit encode
|
++ sifo :: 64-bit encode
|
||||||
@ -1157,7 +1157,57 @@
|
|||||||
~
|
~
|
||||||
=+ d=(end 0 6 pad)
|
=+ d=(end 0 6 pad)
|
||||||
[(cut 3 [d 1] cha) $(pad (rsh 0 6 pad))]
|
[(cut 3 [d 1] cha) $(pad (rsh 0 6 pad))]
|
||||||
(weld (flop (slag poc sif)) (trip (fil 3 poc '=')))
|
(weld (flop (slag poc sif)) (reap poc '='))
|
||||||
|
::
|
||||||
|
++ ofis :: XX broken
|
||||||
|
=- |=(a=cord (rash a fel))
|
||||||
|
=- fel=;~(sfix (boss 64 (plus siw)) (stun 0^2 tis))
|
||||||
|
^= siw
|
||||||
|
;~ pose
|
||||||
|
dit
|
||||||
|
(cook |=(a=@ (sub a (sub 'A' 10))) (shim 'A' 'Z'))
|
||||||
|
(cook |=(a=@ (sub a (sub 'a' 36))) (shim 'a' 'z'))
|
||||||
|
(cold 62 (just '+'))
|
||||||
|
(cold 63 (just '/'))
|
||||||
|
==
|
||||||
|
::
|
||||||
|
:: .= ~[p=~.ack q=~.~sarnel r=~..y]
|
||||||
|
:: (dray ~[p=%tas q=%p r=%f] %ack ~sarnel &)
|
||||||
|
++ dray :: load tuple into path
|
||||||
|
=- |* [a=[@tas (pole ,@tas)] b=*] ^- (paf a)
|
||||||
|
=> .(b `(tup a)`b)
|
||||||
|
?~ +.a [(scot -.a b) ~]
|
||||||
|
[(scot -.a -.b) `(paf +.a)`(..$ +.a +.b)]
|
||||||
|
:- paf=|*(a=(pole) ?~(a ,~ ,[(odo:raid -.a(. %ta)) (..$ +.a)]))
|
||||||
|
tup=|*([a=@tas b=(pole ,@tas)] =+(c=(odo:raid a) ?~(b c ,[c (..$ b)])))
|
||||||
|
::
|
||||||
|
:: .= [p=%ack q=~sarnel r=&]
|
||||||
|
:: (raid /ack/~sarnel/.y p=%tas q=%p r=%f ~)
|
||||||
|
++ raid :: demand path odors
|
||||||
|
=- |* [a=path b=[@tas (pole ,@tas)]]
|
||||||
|
?~ +.b `(odo -.b)`(slav -.b -.a)
|
||||||
|
[`(odo -.b)`(slav -.b -.a) (..$ +.a +.b)]
|
||||||
|
^= odo
|
||||||
|
|* a=@tas
|
||||||
|
|= b=*
|
||||||
|
=< a(. (. b)) :: preserve face
|
||||||
|
?+ a ,@
|
||||||
|
%c ,@c %da ,@da %dr ,@dr %f ,@f %if ,@if %is ,@is %p ,@p
|
||||||
|
%u ,@u %uc ,@uc %ub ,@ub %ui ,@ui %ux ,@ux %uv ,@uv %uw ,@uw
|
||||||
|
%s ,@s %t ,@t %ta ,@ta %tas ,@tas
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ read :: parse odored path
|
||||||
|
=< |*([a=path b=[@tas (pole ,@tas)]] ((+> b) a))
|
||||||
|
|* b=[@tas (pole ,@tas)]
|
||||||
|
|= a=path
|
||||||
|
?~ a ~
|
||||||
|
=+ hed=(slaw -.b i.a)
|
||||||
|
?~ +.b
|
||||||
|
^- (unit (odo:raid -.b))
|
||||||
|
?^(+.a ~ hed)
|
||||||
|
^- (unit ,[(odo:raid -.b) _(need *(..^$ +.b))])
|
||||||
|
(both hed ((..^$ +.b) +.a))
|
||||||
::
|
::
|
||||||
++ urle :: URL encode
|
++ urle :: URL encode
|
||||||
|= tep=tape
|
|= tep=tape
|
||||||
@ -1197,9 +1247,14 @@
|
|||||||
pul(q.q [(rsh 3 1 (scot %p who)) q.q.pul])
|
pul(q.q [(rsh 3 1 (scot %p who)) q.q.pul])
|
||||||
::
|
::
|
||||||
++ earn :: purl to tape
|
++ earn :: purl to tape
|
||||||
|^ |= pul=purl
|
=< |=(pul=purl `tape`(apex ~ pul))
|
||||||
^- tape
|
|%
|
||||||
:(weld (head p.pul) "/" (body q.pul) (tail r.pul))
|
++ apex
|
||||||
|
|= qur=quri
|
||||||
|
?- -.qur
|
||||||
|
%& (weld (head p.p.qur) `tape`['/' $(qur [%| +.p.qur])])
|
||||||
|
%| (weld (body p.qur) (tail q.qur))
|
||||||
|
==
|
||||||
::
|
::
|
||||||
++ body
|
++ body
|
||||||
|= pok=pork ^- tape
|
|= pok=pork ^- tape
|
||||||
@ -1233,16 +1288,14 @@
|
|||||||
:- '?'
|
:- '?'
|
||||||
|- ^- tape
|
|- ^- tape
|
||||||
?~ kay ~
|
?~ kay ~
|
||||||
;: weld
|
;: welp
|
||||||
(urle (trip p.i.kay))
|
(urle (trip p.i.kay))
|
||||||
"="
|
?~(q.i.kay ~ ['=' (urle (trip q.i.kay))])
|
||||||
(urle (trip q.i.kay))
|
|
||||||
?~(t.kay ~ `tape`['&' $(kay t.kay)])
|
?~(t.kay ~ `tape`['&' $(kay t.kay)])
|
||||||
==
|
==
|
||||||
--
|
--
|
||||||
::
|
::
|
||||||
++ epur :: url/header parser
|
++ urlp :: url/header parser
|
||||||
=< |=(a=cord `(unit purl)`(rush a auri))
|
|
||||||
|%
|
|%
|
||||||
++ apat :: 2396 abs_path
|
++ apat :: 2396 abs_path
|
||||||
%+ cook deft
|
%+ cook deft
|
||||||
@ -1278,7 +1331,7 @@
|
|||||||
++ pesc ;~(pfix cen mes) :: 2396 escaped
|
++ pesc ;~(pfix cen mes) :: 2396 escaped
|
||||||
++ pold (cold ' ' (just '+')) :: old space code
|
++ pold (cold ' ' (just '+')) :: old space code
|
||||||
++ pque ;~(pose pcar fas wut) :: 3986 query char
|
++ pque ;~(pose pcar fas wut) :: 3986 query char
|
||||||
++ pquo ;~(pose pure pesc pold) :: normal query char
|
++ pquo ;~(pose pure pesc pold fas wut) :: normal query char
|
||||||
++ pure ;~(pose aln hep dot cab sig) :: 2396 unreserved
|
++ pure ;~(pose aln hep dot cab sig) :: 2396 unreserved
|
||||||
++ psub ;~ pose :: 3986 sub-delims
|
++ psub ;~ pose :: 3986 sub-delims
|
||||||
zap buc pam soq pel per
|
zap buc pam soq pel per
|
||||||
@ -1341,6 +1394,8 @@
|
|||||||
(stag %| ;~(plug apat yque))
|
(stag %| ;~(plug apat yque))
|
||||||
==
|
==
|
||||||
--
|
--
|
||||||
|
++ epur :: url/header parser
|
||||||
|
=>(urlp |=(a=cord `(unit purl)`(rush a auri)))
|
||||||
::
|
::
|
||||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
:: section 3bH, names etc ::
|
:: section 3bH, names etc ::
|
||||||
@ -1646,22 +1701,22 @@
|
|||||||
?~ two one
|
?~ two one
|
||||||
?:((lth u.one u.two) one two)
|
?:((lth u.one u.two) one two)
|
||||||
::
|
::
|
||||||
++ mojo :: compiling load
|
:: ++ mojo :: compiling load
|
||||||
|= [pax=path src=*]
|
:: |= [pax=path src=*]
|
||||||
^- (each twig (list tank))
|
:: ^- (each twig (list tank))
|
||||||
?. ?=(@ src)
|
:: ?. ?=(@ src)
|
||||||
[%| ~[[leaf/"musk: malformed: {<pax>}"]]]
|
:: [%| ~[[leaf/"musk: malformed: {<pax>}"]]]
|
||||||
=+ ^= mud
|
:: =+ ^= mud
|
||||||
%- mule |.
|
:: %- mule |.
|
||||||
((full vest) [1 1] (trip src))
|
:: ((full vest) [1 1] (trip src))
|
||||||
?: ?=(| -.mud) mud
|
:: ?: ?=(| -.mud) mud
|
||||||
?~ q.p.mud
|
:: ?~ q.p.mud
|
||||||
:~ %|
|
:: :~ %|
|
||||||
leaf/"musk: syntax error: {<pax>}"
|
:: leaf/"musk: syntax error: {<pax>}"
|
||||||
leaf/"musk: line {<p.p.p.mud>}, column {<q.p.p.mud>}"
|
:: leaf/"musk: line {<p.p.p.mud>}, column {<q.p.p.mud>}"
|
||||||
==
|
:: ==
|
||||||
[%& p.u.q.p.mud]
|
:: [%& p.u.q.p.mud]
|
||||||
::
|
:: ::
|
||||||
++ mole :: new to old sky
|
++ mole :: new to old sky
|
||||||
|= ska=$+(* (unit (unit)))
|
|= ska=$+(* (unit (unit)))
|
||||||
|= a=*
|
|= a=*
|
||||||
@ -1670,21 +1725,21 @@
|
|||||||
?~ b ~
|
?~ b ~
|
||||||
?~ u.b ~
|
?~ u.b ~
|
||||||
[~ u.u.b]
|
[~ u.u.b]
|
||||||
::
|
:: ::
|
||||||
++ much :: constructing load
|
:: ++ much :: constructing load
|
||||||
|= [pax=path src=*]
|
:: |= [pax=path src=*]
|
||||||
^- gank
|
:: ^- gank
|
||||||
=+ moj=(mojo pax src)
|
:: =+ moj=(mojo pax src)
|
||||||
?: ?=(| -.moj) moj
|
:: ?: ?=(| -.moj) moj
|
||||||
(mule |.((slap !>(+>.$) `twig`p.moj)))
|
:: (mule |.((slap !>(+>.$) `twig`p.moj)))
|
||||||
::
|
:: ::
|
||||||
++ musk :: compiling apply
|
:: ++ musk :: compiling apply
|
||||||
|= [pax=path src=* sam=vase]
|
:: |= [pax=path src=* sam=vase]
|
||||||
^- gank
|
:: ^- gank
|
||||||
=+ mud=(much pax src)
|
:: =+ mud=(much pax src)
|
||||||
?: ?=(| -.mud) mud
|
:: ?: ?=(| -.mud) mud
|
||||||
(mule |.((slam p.mud sam)))
|
:: (mule |.((slam p.mud sam)))
|
||||||
::
|
:: ::
|
||||||
++ pack :: light path encoding
|
++ pack :: light path encoding
|
||||||
|= [a=term b=path] ^- span
|
|= [a=term b=path] ^- span
|
||||||
%+ rap 3 :- (wack a)
|
%+ rap 3 :- (wack a)
|
||||||
@ -1860,7 +1915,6 @@
|
|||||||
ced=cred :: client credentials
|
ced=cred :: client credentials
|
||||||
bem=beam :: original path
|
bem=beam :: original path
|
||||||
but=path :: ending
|
but=path :: ending
|
||||||
nyp=path :: request model
|
|
||||||
== ::
|
== ::
|
||||||
++ flap ,@uvH :: network packet id
|
++ flap ,@uvH :: network packet id
|
||||||
++ flow :: packet connection
|
++ flow :: packet connection
|
||||||
@ -2068,7 +2122,7 @@
|
|||||||
$% [& p=suba] :: delta
|
$% [& p=suba] :: delta
|
||||||
[| p=@tas] :: label
|
[| p=@tas] :: label
|
||||||
== ::
|
== ::
|
||||||
++ octs ,[p=@ud q=@] :: octet-stream
|
++ octs ,[p=@ud q=@t] :: octet-stream
|
||||||
++ oryx ,@t :: CSRF secret
|
++ oryx ,@t :: CSRF secret
|
||||||
++ page (cask) :: untyped cage
|
++ page (cask) :: untyped cage
|
||||||
++ pail ?(%none %warm %cold) :: connection status
|
++ pail ?(%none %warm %cold) :: connection status
|
||||||
|
10
main/cat/hello/gate.hook
Normal file
10
main/cat/hello/gate.hook
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/gate/hello/cat
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
!:
|
||||||
|
|= [* [[txt=@tas ~] ~]]
|
||||||
|
:- %noun
|
||||||
|
(crip (weld "hello, " (flop (trip txt))))
|
12
main/cat/helm/init/gate.hook
Normal file
12
main/cat/helm/init/gate.hook
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/gate/reload/helm/cat
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
!:
|
||||||
|
|= $: [now=@da eny=@uvI bec=beak]
|
||||||
|
[~ ~]
|
||||||
|
==
|
||||||
|
:- %helm-init
|
||||||
|
p.bec
|
BIN
main/cat/helm/reload/.gate.hook.swp
Normal file
BIN
main/cat/helm/reload/.gate.hook.swp
Normal file
Binary file not shown.
12
main/cat/helm/reload/gate.hook
Normal file
12
main/cat/helm/reload/gate.hook
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/gate/reload/helm/cat
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
!:
|
||||||
|
|= $: [now=@da eny=@uvI bec=beak]
|
||||||
|
[arg=(list term) ~]
|
||||||
|
==
|
||||||
|
:- %helm-reload
|
||||||
|
arg
|
12
main/cat/helm/sync/gate.hook
Normal file
12
main/cat/helm/sync/gate.hook
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/gate/sync/helm/cat
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
!:
|
||||||
|
|= $: [now=@da eny=@uvI bec=beak]
|
||||||
|
[arg=[syd=@tas her=@p sud=@tas ~] ~]
|
||||||
|
==
|
||||||
|
:- %helm-sync
|
||||||
|
arg
|
12
main/cat/ticket/gate.hook
Normal file
12
main/cat/ticket/gate.hook
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/gate/ticket/cat
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
!:
|
||||||
|
|= $: [now=@da eny=@uvI bec=beak]
|
||||||
|
[[her=@p ~] ~]
|
||||||
|
==
|
||||||
|
:- %noun
|
||||||
|
((hard ,@p) .^(/a/(scot %p p.bec)/tick/(scot %da now)/(scot %p her)))
|
45
main/dog/helm/begin/gate.hook
Normal file
45
main/dog/helm/begin/gate.hook
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/gate/begin/helm/gun
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
/- *sole
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
!:
|
||||||
|
=> |%
|
||||||
|
++ begs ,[his=@p tic=@p yen=@t ges=gens]
|
||||||
|
--
|
||||||
|
|= $: [now=@da eny=@uvI bec=beak]
|
||||||
|
[~ ~]
|
||||||
|
==
|
||||||
|
^- (sole-result (cask begs))
|
||||||
|
%+ sole-lo
|
||||||
|
[%& %helm-begin "your ship: ~"]
|
||||||
|
%+ sole-go fed:ag
|
||||||
|
|= his=@p
|
||||||
|
%+ sole-lo
|
||||||
|
[%& %helm-ticket "your ticket: ~"]
|
||||||
|
%+ sole-go fed:ag
|
||||||
|
|= tic=@p
|
||||||
|
%+ sole-lo
|
||||||
|
[%& %helm-entropy "some entropy: "]
|
||||||
|
%+ sole-go (boss 256 (more gon qit))
|
||||||
|
|= yen=@t
|
||||||
|
=+ ney=(shax yen)
|
||||||
|
%+ sole-yo `tank`[%leaf "entropy check: {(scow %p `@p`(mug ney))}"]
|
||||||
|
%+ sole-so %helm-begin
|
||||||
|
:* his
|
||||||
|
tic
|
||||||
|
ney
|
||||||
|
::
|
||||||
|
^- gens
|
||||||
|
:- %en
|
||||||
|
=+ can=(clan his)
|
||||||
|
?- can
|
||||||
|
%czar [%czar ~]
|
||||||
|
%duke [%duke %anon ~]
|
||||||
|
%earl [%earl (scot %p his)]
|
||||||
|
%king [%king ?:(=(~doznec his) 'Urban Republic' (scot %p his))]
|
||||||
|
%pawn [%pawn ~]
|
||||||
|
==
|
||||||
|
==
|
12
main/dog/helm/reload/gate.hook
Normal file
12
main/dog/helm/reload/gate.hook
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/gate/reload/helm/gun
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
/- *sole
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
!:
|
||||||
|
|= $: [now=@da eny=@uvI bec=beak]
|
||||||
|
[arg=(list term) ~]
|
||||||
|
==
|
||||||
|
(sole-so %helm-reload arg)
|
12
main/dog/helm/reset/gate.hook
Normal file
12
main/dog/helm/reset/gate.hook
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/gate/reset/helm/gun
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
/- *sole
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
!:
|
||||||
|
|= $: [now=@da eny=@uvI bec=beak]
|
||||||
|
[~ ~]
|
||||||
|
==
|
||||||
|
(sole-so %helm-reset ~)
|
13
main/dog/helm/verb/gate.hook
Normal file
13
main/dog/helm/verb/gate.hook
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/gate/verb/helm/gun
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
/- *sole
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
!:
|
||||||
|
|= $: [now=@da eny=@ bec=beak]
|
||||||
|
[~ ~]
|
||||||
|
==
|
||||||
|
~& %helm-verb
|
||||||
|
(sole-so %helm-verb ~)
|
40
main/dog/solid/gate.hook
Normal file
40
main/dog/solid/gate.hook
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/gate/solid/gun
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
/- *sole
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
!:
|
||||||
|
|= $: [now=@da eny=@uvI bec=beak]
|
||||||
|
[~ ~]
|
||||||
|
==
|
||||||
|
%+ sole-so %noun
|
||||||
|
=+ top=`path`/(scot %p p.bec)/main/(scot %da now)/arvo
|
||||||
|
=+ pax=`path`(weld top `path`[%hoon ~])
|
||||||
|
~& %solid-start
|
||||||
|
=+ gen=(reck pax)
|
||||||
|
~& %solid-parsed
|
||||||
|
=+ ken=q:(~(mint ut %noun) %noun gen)
|
||||||
|
~& %solid-compiled
|
||||||
|
:- ken
|
||||||
|
=+ all=.*(0 ken)
|
||||||
|
=+ ^= vay ^- (list ,[p=@tas q=@tas])
|
||||||
|
:~ [%$ %zuse]
|
||||||
|
[%g %gall]
|
||||||
|
[%f %ford]
|
||||||
|
[%a %ames]
|
||||||
|
[%c %clay]
|
||||||
|
[%d %dill]
|
||||||
|
[%e %eyre]
|
||||||
|
[%t %time]
|
||||||
|
==
|
||||||
|
|- ^+ all
|
||||||
|
?~ vay all
|
||||||
|
=+ pax=(weld top `path`[q.i.vay ~])
|
||||||
|
=+ txt=((hard ,@) .^(%cx (weld pax `path`[%hoon ~])))
|
||||||
|
=+ sam=[now `ovum`[[%gold ~] [%veer p.i.vay pax txt]]]
|
||||||
|
~& [%solid-veer i.vay]
|
||||||
|
=+ gat=.*(all .*(all [0 42]))
|
||||||
|
=+ nex=+:.*([-.gat [sam +>.gat]] -.gat)
|
||||||
|
$(vay t.vay, all nex)
|
147
main/lib/base.css
Normal file
147
main/lib/base.css
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: "bau";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/bau.woff");
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "bau";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/bau-italic.woff");
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "bau";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/bau-medium.woff");
|
||||||
|
font-weight: 500;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "bau";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/bau-mediumitalic.woff");
|
||||||
|
font-weight: 500;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "bau";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/bau-bold.woff");
|
||||||
|
font-weight: 600;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "bau";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/bau-bolditalic.woff");
|
||||||
|
font-weight: 600;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "bau";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/bau-super.woff");
|
||||||
|
font-weight: 600;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "bau";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/bau-superitalic.woff");
|
||||||
|
font-weight: 600;
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "scp";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/scp-extralight.woff");
|
||||||
|
font-weight: 200;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "scp";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/scp-light.woff");
|
||||||
|
font-weight: 300;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "scp";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/scp-regular.woff");
|
||||||
|
font-weight: 400;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "scp";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/scp-medium.woff");
|
||||||
|
font-weight: 500;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "scp";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/scp-bold.woff");
|
||||||
|
font-weight: 600;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "scp";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/scp-black.woff");
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
input,
|
||||||
|
button,
|
||||||
|
body {
|
||||||
|
font-family: "bau";
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre,
|
||||||
|
code,
|
||||||
|
.mono {
|
||||||
|
font-family:"scp";
|
||||||
|
}
|
||||||
|
|
||||||
|
#c {
|
||||||
|
width: 24rem;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -12rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#c pre {
|
||||||
|
font-size: .6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#c.err {
|
||||||
|
width: 32rem;
|
||||||
|
margin-left: -16rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pass {
|
||||||
|
width: 24rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
border: .3rem solid #000;
|
||||||
|
background-color: #fff;
|
||||||
|
font-size: 1rem;
|
||||||
|
padding: .3rem;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ship,
|
||||||
|
input {
|
||||||
|
font-family: "scp";
|
||||||
|
display: inline;
|
||||||
|
border: none;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
padding: .3rem;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ship:focus,
|
||||||
|
input:focus {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
@ -28,9 +28,7 @@
|
|||||||
::
|
::
|
||||||
++ add-subs :: add gall subscription
|
++ add-subs :: add gall subscription
|
||||||
|* [hat=[hapt ship path] ref=_,[(list) ^]]
|
|* [hat=[hapt ship path] ref=_,[(list) ^]]
|
||||||
=+ `[hapt ship path]`hat :: typecheck
|
(add-resp [%pass /show %g %show hat] ref)
|
||||||
%+ add-resp [%pass /show %g %show hat]
|
|
||||||
ref
|
|
||||||
::
|
::
|
||||||
++ args-into-gate :: poke--args from gate: output and exit
|
++ args-into-gate :: poke--args from gate: output and exit
|
||||||
|* [con=[* [hide *] *] gat=_,[@ *]]
|
|* [con=[* [hide *] *] gat=_,[@ *]]
|
||||||
|
3
main/lib/shu/core.hook
Normal file
3
main/lib/shu/core.hook
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
:: Alias
|
||||||
|
/+ sh-utils
|
||||||
|
.
|
142
main/lib/sole/core.hook
Normal file
142
main/lib/sole/core.hook
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/core/sole/lib
|
||||||
|
::
|
||||||
|
:: This file is in the public domain.
|
||||||
|
::
|
||||||
|
/? 310
|
||||||
|
/- *sole
|
||||||
|
!:
|
||||||
|
::::
|
||||||
|
::
|
||||||
|
|%
|
||||||
|
++ cs :: shared-state engine
|
||||||
|
|_ sole-share
|
||||||
|
++ abet +<
|
||||||
|
++ apply
|
||||||
|
|= ted=sole-edit
|
||||||
|
^+ +>
|
||||||
|
?- -.ted
|
||||||
|
%del +>.$(buf (weld (scag p.ted buf) (slag +(p.ted) buf)))
|
||||||
|
%ins +>.$(buf (weld (scag p.ted buf) `_buf`[q.ted (slag p.ted buf)]))
|
||||||
|
%mor |- ^+ +>.^$
|
||||||
|
?~ p.ted
|
||||||
|
+>.^$
|
||||||
|
$(p.ted t.p.ted, +>.^$ ^$(ted i.p.ted))
|
||||||
|
%nop +>.$
|
||||||
|
%set +>.$(buf p.ted)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
:: ++transmute: symmetric operational transformation.
|
||||||
|
::
|
||||||
|
:: for any sole state +>, obeys
|
||||||
|
::
|
||||||
|
:: =+ [x=(transmute a b) y=(transmute b a)]
|
||||||
|
:: .= (apply:(apply b) x)
|
||||||
|
:: (apply:(apply a) y)
|
||||||
|
::
|
||||||
|
++ transmute :: dex as after sin
|
||||||
|
|= [sin=sole-edit dex=sole-edit]
|
||||||
|
^- sole-edit
|
||||||
|
?: ?=(%mor -.sin)
|
||||||
|
|- ^- sole-edit
|
||||||
|
?~ p.sin dex
|
||||||
|
$(p.sin t.p.sin, dex ^$(sin i.p.sin))
|
||||||
|
::
|
||||||
|
?: ?=(%mor -.dex)
|
||||||
|
:- %mor
|
||||||
|
|- ^- (list sole-edit)
|
||||||
|
?~ p.dex ~
|
||||||
|
[^$(dex i.p.dex) $(p.dex t.p.dex)]
|
||||||
|
::
|
||||||
|
?: |(?=(%nop -.sin) ?=(%nop -.dex)) dex
|
||||||
|
?: ?=(%set -.sin) [%nop ~]
|
||||||
|
?: ?=(%set -.dex) dex
|
||||||
|
::
|
||||||
|
?- -.sin
|
||||||
|
%del
|
||||||
|
?- -.dex
|
||||||
|
%del ?: =(p.sin p.dex) [%nop ~]
|
||||||
|
?:((lth p.sin p.dex) dex(p (dec p.dex)) dex)
|
||||||
|
%ins ?:((lte p.sin p.dex) dex(p (dec p.dex)) dex)
|
||||||
|
==
|
||||||
|
::
|
||||||
|
%ins
|
||||||
|
?- -.dex
|
||||||
|
%del ?:((lte p.sin p.dex) dex(p +(p.dex)) dex)
|
||||||
|
%ins ?: =(p.sin p.dex)
|
||||||
|
?:((gth q.sin q.dex) dex dex(p +(p.dex)))
|
||||||
|
?:((lte p.sin p.dex) dex(p +(p.dex)) dex)
|
||||||
|
==
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ commit :: local change
|
||||||
|
|= ted=sole-edit
|
||||||
|
^- sole-share
|
||||||
|
abet:(apply(own.ven +(own.ven), leg [ted leg]) ted)
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
:: ++inverse: inverse of change in context.
|
||||||
|
::
|
||||||
|
:: for any sole state +>, obeys
|
||||||
|
::
|
||||||
|
:: =(+> (apply:(apply a) (inverse a)))
|
||||||
|
::
|
||||||
|
++ inverse :: relative inverse
|
||||||
|
|= ted=sole-edit
|
||||||
|
^- sole-edit
|
||||||
|
=. ted ?.(?=([%mor * ~] ted) ted i.p.ted)
|
||||||
|
?- -.ted
|
||||||
|
%del [%ins p.ted (snag p.ted buf)]
|
||||||
|
%ins [%del p.ted]
|
||||||
|
%mor :- %mor
|
||||||
|
%- flop
|
||||||
|
|- ^- (list sole-edit)
|
||||||
|
?~ p.ted ~
|
||||||
|
:- ^$(ted i.p.ted)
|
||||||
|
$(p.ted t.p.ted, +>.^$ (apply i.p.ted))
|
||||||
|
%nop [%nop ~]
|
||||||
|
%set [%set buf]
|
||||||
|
==
|
||||||
|
::
|
||||||
|
++ receive :: naturalize event
|
||||||
|
|= sole-change
|
||||||
|
^- [sole-edit sole-share]
|
||||||
|
?> &(=(his.ler his.ven) (lte own.ler own.ven))
|
||||||
|
?> &(=(his.ler his.ven) (lte own.ler own.ven))
|
||||||
|
?> |(!=(own.ler own.ven) =(haw (sham buf)) =(haw 0)) :: trust the clock
|
||||||
|
=. leg (scag (sub own.ven own.ler) leg)
|
||||||
|
:: ~? !=(own.ler own.ven) [%miss-leg leg]
|
||||||
|
=+ dat=(transmute [%mor leg] ted)
|
||||||
|
:: ~? !=(~ leg) [%transmute from/ted to/dat ~]
|
||||||
|
[dat abet:(apply(his.ven +(his.ven)) dat)]
|
||||||
|
::
|
||||||
|
++ remit :: conditional accept
|
||||||
|
|= [cal=sole-change ask=$+((list ,@c) ?)]
|
||||||
|
^- [(unit sole-change) sole-share]
|
||||||
|
=+ old=buf
|
||||||
|
=^ dat +>+<.$ (receive cal)
|
||||||
|
?: (ask buf)
|
||||||
|
[~ +>+<.$]
|
||||||
|
=^ lic +>+<.$ (transmit (inverse(buf old) dat))
|
||||||
|
[`lic +>+<.$]
|
||||||
|
::
|
||||||
|
++ transmit :: outgoing change
|
||||||
|
|= ted=sole-edit
|
||||||
|
^- [sole-change sole-share]
|
||||||
|
[[[his.ven own.ven] (sham buf) ted] (commit ted)]
|
||||||
|
::
|
||||||
|
++ transceive :: receive and invert
|
||||||
|
|= sole-change
|
||||||
|
^- [sole-edit sole-share]
|
||||||
|
=+ old=buf
|
||||||
|
=^ dat +>+<.$ (receive +<.$)
|
||||||
|
[(inverse(buf old) dat) +>+<.$]
|
||||||
|
::
|
||||||
|
++ transpose :: adjust position
|
||||||
|
|= pos=@ud
|
||||||
|
=+ dat=(transmute [%mor leg] [%ins pos `@c`0])
|
||||||
|
?> ?=(%ins -.dat)
|
||||||
|
p.dat
|
||||||
|
--
|
||||||
|
--
|
@ -1,10 +1,10 @@
|
|||||||
::
|
::
|
||||||
:::: /hook/core/rodeo/lib
|
:::: /hook/core/talk/lib
|
||||||
::
|
::
|
||||||
:: This file is in the public domain.
|
:: This file is in the public domain.
|
||||||
::
|
::
|
||||||
/? 314
|
/? 314
|
||||||
/- *rodeo
|
/- *talk
|
||||||
::
|
::
|
||||||
::::
|
::::
|
||||||
::
|
::
|
282
main/lib/urb.js
282
main/lib/urb.js
@ -1,94 +1,272 @@
|
|||||||
|
window.urb.seqn_u = 1
|
||||||
|
window.urb.dely = 0
|
||||||
|
window.urb.puls = false
|
||||||
|
window.urb.cabs = {}
|
||||||
|
if(!window.urb.appl) window.urb.appl = null
|
||||||
|
|
||||||
|
window.urb.req = function(method,url,params,json,cb) {
|
||||||
|
var xhr = new XMLHttpRequest()
|
||||||
|
method = method.toUpperCase()
|
||||||
|
if(method == "PUT" || method == "DELETE")
|
||||||
|
xhr.open("POST", url+"?"+method)
|
||||||
|
else xhr.open(method, url)
|
||||||
|
|
||||||
|
if(json)
|
||||||
|
xhr.setRequestHeader("content-type", "text/json")
|
||||||
|
|
||||||
|
if(!window.urb.oryx) throw "No CSRF token" // XX fetch auth.json
|
||||||
|
_data = {oryx: window.urb.oryx}
|
||||||
|
if(params.xyro) { _data.xyro = params.xyro; }
|
||||||
|
if(params.ship) { _data.ship = params.ship; }
|
||||||
|
if(params.path) { _data.path = params.path; }
|
||||||
|
if(params.appl) { _data.appl = params.appl; }
|
||||||
|
if(params.mark) { _data.mark = params.mark; }
|
||||||
|
if(params.wire) { _data.wire = params.wire; }
|
||||||
|
if(cb) {
|
||||||
|
xhr.onload = function() {
|
||||||
|
try {
|
||||||
|
err = null
|
||||||
|
res = {
|
||||||
|
status:this.status,
|
||||||
|
data: JSON.parse(this.responseText)
|
||||||
|
}
|
||||||
|
if(res.data.reload)
|
||||||
|
res.reload = res.data.reload
|
||||||
|
} catch(e) {
|
||||||
|
if(urb.wall || true) document.write(this.responseText) // XX
|
||||||
|
err = {
|
||||||
|
message:"Failed to parse JSON",
|
||||||
|
raw:this.responseText
|
||||||
|
}
|
||||||
|
res = null
|
||||||
|
}
|
||||||
|
cb(err,res)
|
||||||
|
}
|
||||||
|
xhr.onerror = function() {
|
||||||
|
cb({
|
||||||
|
status:this.status,
|
||||||
|
data:this.responseText
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xhr.send(JSON.stringify(_data))
|
||||||
|
}
|
||||||
|
|
||||||
|
window.urb.reqq = []
|
||||||
|
window.urb.qreq = function(method,url,params,json,cb) {
|
||||||
|
walk = function() {
|
||||||
|
qobj = {}
|
||||||
|
qobj.oargs = window.urb.reqq[0]
|
||||||
|
qobj.nargs = [].slice.apply(qobj.oargs,[0,4])
|
||||||
|
qobj.nargs.push(function(){
|
||||||
|
if(this.oargs[4])
|
||||||
|
this.oargs[4].apply(window.urb,arguments)
|
||||||
|
window.urb.reqq.shift()
|
||||||
|
if(window.urb.reqq.length > 0)
|
||||||
|
walk()
|
||||||
|
}.bind(qobj))
|
||||||
|
window.urb.req.apply(this,qobj.nargs)
|
||||||
|
}
|
||||||
|
l = window.urb.reqq.length
|
||||||
|
window.urb.reqq.push(arguments);
|
||||||
|
if(l == 0) { walk() }
|
||||||
|
}
|
||||||
|
|
||||||
|
window.urb.gsig = function(params) {
|
||||||
|
var path = params.path
|
||||||
|
if(!path) path = ""
|
||||||
|
if(path[0] !== "/") path = "/"+path
|
||||||
|
return "~"+params.ship+"/"+
|
||||||
|
params.appl+
|
||||||
|
path.replace(/[^\x00-\x7F]/g, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
window.urb.poll = function(params) {
|
||||||
|
if(!params) throw new Error("You must supply params to urb.poll.")
|
||||||
|
|
||||||
|
var url, $this
|
||||||
|
|
||||||
|
seqn = this.seqn_u
|
||||||
|
if(params.seqn) seqn = params.seqn()
|
||||||
|
|
||||||
|
url = "/~/of/"+this.ixor+"?poll="+seqn
|
||||||
|
|
||||||
|
this.puls = true
|
||||||
|
|
||||||
|
$this = this
|
||||||
|
this.req("get",url,params,true,function(err,res) {
|
||||||
|
if(res){
|
||||||
|
if(res.data.beat)
|
||||||
|
return $this.poll(params)
|
||||||
|
switch(res.data.type){
|
||||||
|
case "news":
|
||||||
|
return document.location.reload() // XX check autoreload
|
||||||
|
case "rush":
|
||||||
|
case "mean":
|
||||||
|
var err2 = err
|
||||||
|
if(res.data.type == "mean")
|
||||||
|
err2 = res.data.data
|
||||||
|
var fn = $this.gsig(res.data.from)
|
||||||
|
if($this.cabs[fn])
|
||||||
|
$this.cabs[fn].call(this,err2,
|
||||||
|
{status: res.status, data: res.data.data.json}) // XX non-json
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Error("Lost event %"+res.data.type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dely = params.dely ? params.dely : $this.dely
|
||||||
|
|
||||||
|
if(err)
|
||||||
|
dely = dely+Math.ceil(dely*.02)
|
||||||
|
else {
|
||||||
|
$this.dely = 0
|
||||||
|
if(params.incs)
|
||||||
|
params.incs()
|
||||||
|
else
|
||||||
|
$this.seqn_u++
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
$this.poll(params)
|
||||||
|
},dely)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// if (window.urb.auto) { // need dependencies
|
||||||
|
// var tries = 0
|
||||||
|
// var cnt = 0
|
||||||
|
// var param = {
|
||||||
|
// type:"pol"
|
||||||
|
// }
|
||||||
|
// window.urb.poll(param)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// window.urb.heartbeat = function() {
|
||||||
|
// this.poll({
|
||||||
|
// type:"heb",
|
||||||
|
// ship:this.ship,
|
||||||
|
// dely:30000,
|
||||||
|
// seqn:function() {
|
||||||
|
// return window.urb.seqn_h
|
||||||
|
// },
|
||||||
|
// incs:function() {
|
||||||
|
// window.urb.seqn_h = window.urb.seqn_h+1
|
||||||
|
// }
|
||||||
|
// },function() {
|
||||||
|
// console.log('heartbeat.')
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
// window.urb.heartbeat()
|
||||||
|
|
||||||
|
// // / // / // //
|
||||||
|
// end old %eyre code //
|
||||||
|
// // / // / // //
|
||||||
|
|
||||||
window.urb.seqn_s = 0
|
window.urb.seqn_s = 0
|
||||||
|
|
||||||
|
// TODO urb.send(data, [params/params.appl]?, cb?)
|
||||||
window.urb.send = function(params,cb) {
|
window.urb.send = function(params,cb) {
|
||||||
if(!params)
|
if(!params)
|
||||||
throw new Error("You must supply params to urb.send.")
|
throw new Error("You must supply params to urb.send.")
|
||||||
if(!params.appl) {
|
if(!params.appl && !this.appl){
|
||||||
if(!urb.appl)
|
throw new Error("You must specify an appl for urb.send.")
|
||||||
throw new Error("You must specify an appl for urb.send.")
|
|
||||||
params.appl = urb.appl
|
|
||||||
}
|
}
|
||||||
if(!params.data) { params.data = {}; }
|
|
||||||
|
|
||||||
var method, perm, url, $this
|
var url, $this
|
||||||
|
|
||||||
type = params.type ? params.type : "mes"
|
|
||||||
perm = this.perms[type]
|
|
||||||
|
|
||||||
params.ship = params.ship ? params.ship : this.ship
|
params.ship = params.ship ? params.ship : this.ship
|
||||||
|
params.appl = params.appl ? params.appl : this.appl
|
||||||
params.mark = params.mark ? params.mark : "json"
|
params.mark = params.mark ? params.mark : "json"
|
||||||
|
params.xyro = params.data ? params.data : {}
|
||||||
|
params.wire = params.wire ? params.wire : "/"
|
||||||
|
|
||||||
method = "put"
|
|
||||||
url = [perm,this.user,this.port,this.seqn_s]
|
url = ["to",params.appl,params.mark]
|
||||||
url = "/"+url.join("/")
|
url = "/~/"+url.join("/")
|
||||||
|
|
||||||
this.seqn_s++
|
this.seqn_s++
|
||||||
|
|
||||||
$this = this
|
$this = this
|
||||||
this.qreq(method,url,params,true,function(err,data) {
|
this.qreq('post',url,params,true,function(err,data) {
|
||||||
if(err) { $this.seqn_s--; }
|
if(err) { $this.seqn_s--; }
|
||||||
if(cb) { cb.apply(this,arguments); }
|
if(cb) { cb.apply(this,arguments); }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
window.urb.subscribe = function(params,cb) {
|
window.urb.subscribe = function(params,cb) { // legacy interface
|
||||||
if(!cb)
|
if(!params) throw new Error("You must supply params to urb.subscribe")
|
||||||
throw new Error("You must supply a callback to urb.subscribe.")
|
return window.urb.bind(params.path, params, cb, cb)
|
||||||
if(!params)
|
}
|
||||||
throw new Error("You must supply params to urb.subscribe.")
|
window.urb.bind = function(path, cb){ // or bind(path, params, cb, nicecb?)
|
||||||
if(!params.appl) {
|
var params, nicecb
|
||||||
if(!urb.appl)
|
if(arguments.length > 2)
|
||||||
throw new Error("You must specify an appl for urb.subscribe.")
|
{params = cb; cb = arguments[2], nicecb = arguments[3]}
|
||||||
params.appl = urb.appl
|
else params = {}
|
||||||
}
|
|
||||||
if(!params.path)
|
params.path = path
|
||||||
throw new Error("You must specify a path for urb.subscribe.")
|
if(params.path[0] !== "/") params.path = "/"+params.path
|
||||||
params.ship = params.ship ? params.ship : this.ship
|
params.ship = params.ship ? params.ship : this.ship
|
||||||
|
params.appl = params.appl ? params.appl : this.appl
|
||||||
|
params.mark = params.mark ? params.mark : "json"
|
||||||
|
params.wire = params.wire ? params.wire : params.path
|
||||||
|
|
||||||
|
if(typeof path != "string")
|
||||||
|
throw new Error("You must specify a string path for urb.bind.")
|
||||||
|
if(!params.appl) throw new Error("You must specify an appl for urb.bind.")
|
||||||
|
if(!cb) throw new Error("You must supply a callback to urb.bind.")
|
||||||
|
|
||||||
var method, perm, url, $this
|
var method, perm, url, $this
|
||||||
|
|
||||||
params.type = "sub"
|
if(params.mark !== "json")
|
||||||
|
throw new Error("Non-json subscriptions unimplemented.") // XX
|
||||||
|
url = "/~/is/"+this.gsig(params)+"."+params.mark
|
||||||
|
|
||||||
|
params.path = params.wire
|
||||||
this.cabs[this.gsig(params)] = cb
|
this.cabs[this.gsig(params)] = cb
|
||||||
|
|
||||||
url = [this.perms["sub"],this.user,this.port]
|
|
||||||
url = "/"+url.join("/")
|
|
||||||
method = "put"
|
|
||||||
|
|
||||||
$this = this
|
$this = this
|
||||||
this.qreq(method,url,params,true,function(err,data) {
|
this.qreq("put",url,params,true,function(err,res) {
|
||||||
if(cb) { cb.apply(this,[err,{status: data.status, data: data.data}])}
|
if(nicecb) { nicecb.apply(this,[err,{status: res.status, data: res.data}])}
|
||||||
if(!err && $this.puls == 0) {
|
// XX give raw data
|
||||||
params.type = "pol"
|
//
|
||||||
$this.poll(params)
|
if(!err && !$this.puls) $this.poll(params)
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
window.urb.unsubscribe = function(params,cb) {
|
window.urb.unsubscribe = function(params,cb) {
|
||||||
if(!params)
|
if(!params) throw new Error("You must supply params to urb.unsubscribe.")
|
||||||
throw new Error("You must supply params to urb.unsubscribe.")
|
|
||||||
if(!params.appl) {
|
|
||||||
if(!urb.appl)
|
|
||||||
throw new Error("You must specify an appl for urb.unsubscribe.")
|
|
||||||
params.appl = urb.appl
|
|
||||||
}
|
|
||||||
if(!params.path)
|
|
||||||
throw new Error("You must specify a path for urb.unsubscribe.")
|
|
||||||
params.ship = params.ship ? params.ship : this.ship
|
params.ship = params.ship ? params.ship : this.ship
|
||||||
|
params.appl = params.appl ? params.appl : this.appl
|
||||||
|
params.wire = params.wire ? params.wire : params.path
|
||||||
|
|
||||||
method = "put"
|
if(!params.path) throw new Error("You must specify a path for urb.unsubscribe.")
|
||||||
type = "uns"
|
if(!params.appl) throw new Error("You must specify an appl for urb.unsubscribe.")
|
||||||
url = [this.perms[type],this.user,this.port]
|
if(!cb) throw new Error("You must supply a callback to urb.unsubscribe.")
|
||||||
url = "/"+url.join("/")
|
|
||||||
|
|
||||||
var $this = this
|
url = "/~/is/"+this.gsig(params)+".json"
|
||||||
this.req(method,url,params,true,function(err,data) {
|
method = "delete"
|
||||||
cb(err,data)
|
this.req("delete",url,params,true,function(err,res) {
|
||||||
|
cb(err,res)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
window.urb.util = {
|
window.urb.util = {
|
||||||
|
isURL: function(s) {
|
||||||
|
r = new RegExp('^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$', 'i');
|
||||||
|
return s.length < 2083 && r.test(s);
|
||||||
|
},
|
||||||
|
numDot: function(n) {
|
||||||
|
_n = String(n)
|
||||||
|
fun = function(s){
|
||||||
|
if(s.length <= 3)
|
||||||
|
return s
|
||||||
|
return fun(s.slice(0,-3))+"."+s.slice(-3)
|
||||||
|
}
|
||||||
|
return fun((_n))
|
||||||
|
},
|
||||||
toDate: function (dat){
|
toDate: function (dat){
|
||||||
var mils = Math.floor((0x10000 * dat.getUTCMilliseconds()) / 1000).toString(16)
|
var mils = Math.floor((0x10000 * dat.getUTCMilliseconds()) / 1000).toString(16)
|
||||||
function pad(num, str){
|
function pad(num, str){
|
||||||
|
13
main/mar/console-action/door.hook
Normal file
13
main/mar/console-action/door.hook
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/door/console-action/mar
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
/- *console
|
||||||
|
!:
|
||||||
|
|_ cod=console-action
|
||||||
|
::
|
||||||
|
++ grab :: convert from
|
||||||
|
|%
|
||||||
|
++ noun console-action :: clam from %noun
|
||||||
|
--
|
||||||
|
--
|
14
main/mar/console-effect/door.hook
Normal file
14
main/mar/console-effect/door.hook
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/door/console-effect/mar
|
||||||
|
::
|
||||||
|
/? 310
|
||||||
|
/- *console
|
||||||
|
!:
|
||||||
|
|_ cod=console-effect
|
||||||
|
::
|
||||||
|
++ grab :: convert from
|
||||||
|
|%
|
||||||
|
++ noun console-effect :: clam from %noun
|
||||||
|
--
|
||||||
|
--
|
||||||
|
|
58
main/mar/dill-belt/door.hook
Normal file
58
main/mar/dill-belt/door.hook
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/door/dill-belt/mar
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
/- kyev,*sole
|
||||||
|
!:
|
||||||
|
::::
|
||||||
|
::
|
||||||
|
|_ dill-belt
|
||||||
|
::
|
||||||
|
++ grab :: convert from
|
||||||
|
|%
|
||||||
|
++ json
|
||||||
|
=< (cork . kyev)
|
||||||
|
|= jon=^json ^- ^kyev
|
||||||
|
%- need
|
||||||
|
%. jon => jo %- ot
|
||||||
|
:~ mod/(cu ^sa (ar (su (perk ~[%ctrl %shift %alt %meta]))))
|
||||||
|
:- %key
|
||||||
|
%+ cu |*(a=$%([%str @t] [%act @]) ?+(-.a a %str +.a))
|
||||||
|
=- (of str/so act/(su (perk -)) ~)
|
||||||
|
:~ %ctrl %shift %alt %meta %entr %esc %caps %uncap
|
||||||
|
%pgup %pgdn %home %end %baxp %del %ins
|
||||||
|
%up %down %left %right
|
||||||
|
== ==
|
||||||
|
++ kyev
|
||||||
|
|= kev=^kyev ^- dill-belt
|
||||||
|
~| dill-belt-incomplete/kev
|
||||||
|
?: ?=([%act ?(%ctrl %shift %alt %meta)] q.kev)
|
||||||
|
[%txt ~] :: ignore
|
||||||
|
=+ mod=(~(del in p.kev) %shift)
|
||||||
|
?^ mod
|
||||||
|
?^ q.kev !! :: only accept strings
|
||||||
|
=. q.kev
|
||||||
|
?. (~(has in p.kev) %ctrl)
|
||||||
|
q.kev
|
||||||
|
(con 96 q.kev) :: ctrl key decoding
|
||||||
|
=+ cha=(tuba (trip q.kev))
|
||||||
|
?> ?=([@ ~] cha) :: of a single character
|
||||||
|
?+ mod !! :: modified by one buckykey
|
||||||
|
[%ctrl ~ ~] [%ctl i.cha]
|
||||||
|
[%alt ~ ~] [%met i.cha]
|
||||||
|
==
|
||||||
|
?@ q.kev
|
||||||
|
[%txt (tuba (trip q.kev))]
|
||||||
|
?+ +.q.kev !!
|
||||||
|
%del [%del ~]
|
||||||
|
%baxp [%bac ~]
|
||||||
|
%entr [%ret ~]
|
||||||
|
%up [%aro %u]
|
||||||
|
%down [%aro %d]
|
||||||
|
%left [%aro %l]
|
||||||
|
%right [%aro %r]
|
||||||
|
== :: %yow, %rez?
|
||||||
|
::
|
||||||
|
++ noun dill-belt :: clam from %noun
|
||||||
|
--
|
||||||
|
--
|
23
main/mar/dill-blit/door.hook
Normal file
23
main/mar/dill-blit/door.hook
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/door/dill-blit/mar
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
/- *sole
|
||||||
|
|_ dib=dill-blit
|
||||||
|
::
|
||||||
|
++ grab :: convert from
|
||||||
|
|%
|
||||||
|
++ noun dill-blit :: clam from %noun
|
||||||
|
--
|
||||||
|
++ grow
|
||||||
|
|%
|
||||||
|
++ json
|
||||||
|
^- ^json
|
||||||
|
?+ -.dib ~|(unsupported-blit/-.dib !!)
|
||||||
|
%mor [%a (turn p.dib |=(a=dill-blit json(dib a)))]
|
||||||
|
%hop (joba %hop (jone p.dib))
|
||||||
|
?(%pro %out) (joba -.dib (jape (tufa p.dib)))
|
||||||
|
?(%bel %clr) (joba %act %s -.dib)
|
||||||
|
==
|
||||||
|
--
|
||||||
|
--
|
@ -9,6 +9,7 @@
|
|||||||
++ html (crip (poxo own)) :: convert to %html
|
++ html (crip (poxo own)) :: convert to %html
|
||||||
++ mime [/text/html (taco html)] :: convert to %mime
|
++ mime [/text/html (taco html)] :: convert to %mime
|
||||||
--
|
--
|
||||||
|
++ garb [%urb ~]
|
||||||
++ grab |% :: convert from
|
++ grab |% :: convert from
|
||||||
++ noun manx :: clam from %noun
|
++ noun manx :: clam from %noun
|
||||||
-- --
|
-- --
|
||||||
|
@ -9,13 +9,15 @@
|
|||||||
::
|
::
|
||||||
++ grow :: convert to
|
++ grow :: convert to
|
||||||
|%
|
|%
|
||||||
++ mime :: convert to %mime
|
++ mime [/text/json (taco txt)] :: convert to %mime
|
||||||
[/text/json (taco (crip (pojo jon)))]
|
++ txt (crip (pojo jon))
|
||||||
--
|
--
|
||||||
++ grab
|
++ grab
|
||||||
|% :: convert from
|
|% :: convert from
|
||||||
++ mime |=([p=mite q=octs] *json) ::(fall (rush (,@t q.q) apex:poja) *json))
|
++ mime |=([p=mite q=octs] *json) ::(fall (rush (,@t q.q) apex:poja) *json))
|
||||||
++ noun json :: clam from %noun
|
++ noun json :: clam from %noun
|
||||||
|
++ numb jone
|
||||||
|
++ time jode
|
||||||
--
|
--
|
||||||
++ grad
|
++ grad
|
||||||
|%
|
|%
|
||||||
|
@ -1,74 +0,0 @@
|
|||||||
::
|
|
||||||
:::: /hook/door/radio-command/mar
|
|
||||||
::
|
|
||||||
/? 314
|
|
||||||
/- *radio
|
|
||||||
!:
|
|
||||||
|_ cod=command
|
|
||||||
::
|
|
||||||
++ grab :: convert from
|
|
||||||
|%
|
|
||||||
++ noun command :: clam from %noun
|
|
||||||
++ json
|
|
||||||
=> [jo ..command]
|
|
||||||
|= a=json ^- command
|
|
||||||
=- (need ((of -) a))
|
|
||||||
=< :~ publish/(ar thot)
|
|
||||||
review/(ar thot)
|
|
||||||
design/(ot party/so config/(mu conf) ~)
|
|
||||||
ping/auri
|
|
||||||
==
|
|
||||||
|%
|
|
||||||
++ as :: array as set
|
|
||||||
:: |*(a=fist (cu sa (ar a))) :: XX types
|
|
||||||
|* a=fist
|
|
||||||
%- cu :_ (ar a)
|
|
||||||
~(gas in *(set ,_(need *a)))
|
|
||||||
::
|
|
||||||
++ lake |*(a=_,* $+(json (unit a)))
|
|
||||||
++ peach
|
|
||||||
|* a=_[rule rule]
|
|
||||||
|= tub=nail
|
|
||||||
^- (like (each ,_(wonk (-.a)) ,_(wonk (+.a))))
|
|
||||||
%. tub
|
|
||||||
;~(pose (stag %& -.a) (stag %| +.a))
|
|
||||||
::
|
|
||||||
++ thot
|
|
||||||
^- $+(json (unit thought))
|
|
||||||
%- ot :~
|
|
||||||
serial/(ci (slat %uv) so)
|
|
||||||
audience/audi
|
|
||||||
statement/stam
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ audi (op stati (ci (soft delivery) so)) :: audience
|
|
||||||
++ auri (op stati (ci (soft presence) so))
|
|
||||||
::
|
|
||||||
++ stati
|
|
||||||
^- $+(nail (like station))
|
|
||||||
%+ peach
|
|
||||||
;~((glue fas) ;~(pfix sig fed:ag) urs:ab)
|
|
||||||
%+ sear (soft partner)
|
|
||||||
;~((glue fas) sym urs:ab) :: XX [a-z0-9_]{1,15}
|
|
||||||
::
|
|
||||||
++ stam
|
|
||||||
^- $+(json (unit statement))
|
|
||||||
=- (ot now/di speech/(of -) ~)
|
|
||||||
:~ own/so
|
|
||||||
say/so
|
|
||||||
exp/(cu |=(a=cord [a ~]) so)
|
|
||||||
inv/(ot ship/(su fed:ag) party/(su urs:ab) ~)
|
|
||||||
==
|
|
||||||
::
|
|
||||||
::
|
|
||||||
++ conf
|
|
||||||
^- $+(json (unit config))
|
|
||||||
%- ot :~
|
|
||||||
sources/(as (su stati))
|
|
||||||
:- %cordon
|
|
||||||
%+ cu |*(a=^ ?~(-.a a a)) :: XX do type stuff
|
|
||||||
(ot white/bu list/(as (su fed:ag)) ~)
|
|
||||||
==
|
|
||||||
--
|
|
||||||
-- --
|
|
||||||
|
|
@ -1,92 +0,0 @@
|
|||||||
::
|
|
||||||
:::: /hook/door/radio-report/mar
|
|
||||||
::
|
|
||||||
/? 314
|
|
||||||
/- *radio
|
|
||||||
!:
|
|
||||||
|_ rep=report
|
|
||||||
::
|
|
||||||
++ grab :: convert from
|
|
||||||
|%
|
|
||||||
++ noun report :: clam from %noun
|
|
||||||
--
|
|
||||||
++ grow
|
|
||||||
|%
|
|
||||||
++ mime [/text/json (taco (crip (pojo json)))]
|
|
||||||
++ json
|
|
||||||
=> +
|
|
||||||
|^ %+ joba -.rep
|
|
||||||
?- -.rep
|
|
||||||
%config ~! rep (conf +.rep)
|
|
||||||
%house [%a (turn (~(tap by +.rep)) joce)]
|
|
||||||
%grams (jobe num/(jone p.rep) tele/[%a (turn q.rep gram)] ~)
|
|
||||||
::%group (grop +.rep)
|
|
||||||
%group (jobe local/(grop p.rep) global/%.(q.rep (jome stan grop)) ~)
|
|
||||||
==
|
|
||||||
++ joce |=(a=span [%s a])
|
|
||||||
++ jope |=(a=ship (jape +:<a>)) ::[%s (crip +:(scow %p a))])
|
|
||||||
++ joke |=(a=tank [%s (role (turn (wash 0^80 a) crip))])
|
|
||||||
++ jode |=(a=time (jone (div (mul (sub a ~1970.1.1) 1.000) ~s1)))
|
|
||||||
:: ++ jase
|
|
||||||
:: |* a=,json
|
|
||||||
:: |= b=(set ,_+<.a) ^- json
|
|
||||||
:: ~! b
|
|
||||||
:: [%a (turn (~(tap in b)) a)]
|
|
||||||
::
|
|
||||||
++ jome :: stringify keys
|
|
||||||
|* [a=_cord b=_json]
|
|
||||||
|= c=(map ,_+<.a ,_+<.b)
|
|
||||||
(jobe (turn (~(tap by c)) (both a b)))
|
|
||||||
::
|
|
||||||
++ both :: cons two gates
|
|
||||||
|* [a=_,* b=_,*]
|
|
||||||
|=(c=_[+<.a +<.b] [(a -.c) (b +.c)])
|
|
||||||
::
|
|
||||||
::
|
|
||||||
++ grop (jome phon stas) :: (map ship status)
|
|
||||||
++ phon |=(a=ship (scot %p a))
|
|
||||||
++ stas |=(status (jobe presence/(joce p) human/(huma q) ~))
|
|
||||||
++ gram |=(telegram (jobe ship/(jope p) thought/(thot q) ~))
|
|
||||||
++ thot
|
|
||||||
|= thought
|
|
||||||
(jobe serial/(jape <p>) audience/(audi q) statement/(stam r) ~)
|
|
||||||
::
|
|
||||||
++ audi (jome stan joce)
|
|
||||||
++ stan
|
|
||||||
|= a=station ^- cord
|
|
||||||
%- crip
|
|
||||||
?~ -.a "{<p.p.a>}/{(trip q.p.a)}"
|
|
||||||
?- -.p.a
|
|
||||||
%twitter "{(trip -.p.a)}/{(trip p.p.a)}"
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ stam |=(statement (jobe time/(jode p) speech/(spec q) ~))
|
|
||||||
++ spec
|
|
||||||
|= a=speech
|
|
||||||
%+ joba -.a
|
|
||||||
?- -.a
|
|
||||||
?(%own %say) [%s p.a]
|
|
||||||
%exp (jobe code/[%s p.a] done/?~(q.a ~ (joke u.q.a)) ~)
|
|
||||||
%inv (jobe ship/(jope p.a) party/[%s q.a] ~)
|
|
||||||
==
|
|
||||||
::
|
|
||||||
++ huma
|
|
||||||
|= human
|
|
||||||
%^ jobe
|
|
||||||
hand/?~(hand ~ [%s u.hand])
|
|
||||||
:- %true
|
|
||||||
?~ true ~
|
|
||||||
=+ u.true
|
|
||||||
(jobe first/[%s p] middle/?~(q ~ [%s u.q]) last/[%s r] ~)
|
|
||||||
~
|
|
||||||
::
|
|
||||||
++ conf
|
|
||||||
|= config
|
|
||||||
%- jobe :~
|
|
||||||
sources/[%a (turn (~(tap in sources)) |=(a=station [%s (stan a)]))]
|
|
||||||
=- cordon/(jobe white/[%b -.cordon] list/[%a -] ~)
|
|
||||||
(turn (~(tap in p.cordon)) jope) :: XX jase
|
|
||||||
==
|
|
||||||
--
|
|
||||||
-- --
|
|
||||||
|
|
@ -50,10 +50,14 @@
|
|||||||
::
|
::
|
||||||
++ grow :: convert to
|
++ grow :: convert to
|
||||||
|%
|
|%
|
||||||
++ psal own
|
++ mime
|
||||||
++ hymn ;html:(head:title:"snip" body:"+{psal}") :: convert to %hymn
|
=< mime
|
||||||
++ html (crip (poxo hymn)) :: convert to %html
|
|%
|
||||||
++ mime [/text/html (taco html)] :: convert to %mime
|
++ psal own
|
||||||
|
++ hymn ;html:(head:title:"snip" body:"+{psal}") :: convert to %hymn
|
||||||
|
++ html (crip (poxo hymn)) :: convert to %html
|
||||||
|
++ mime [/text/html (taco html)] :: convert to %mime
|
||||||
|
--
|
||||||
--
|
--
|
||||||
++ garb [%react-snip ~]
|
++ garb [%react-snip ~]
|
||||||
++ grab |% :: convert from
|
++ grab |% :: convert from
|
||||||
|
38
main/mar/sole-action/door.hook
Normal file
38
main/mar/sole-action/door.hook
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/door/sole-action/mar
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
/- *sole
|
||||||
|
!:
|
||||||
|
::::
|
||||||
|
::
|
||||||
|
|_ sole-action
|
||||||
|
::
|
||||||
|
++ grab :: convert from
|
||||||
|
|%
|
||||||
|
++ json
|
||||||
|
|= jon=^json ^- sole-action
|
||||||
|
%- need %. jon
|
||||||
|
=> [jo ..sole-action]
|
||||||
|
|^ =- ~! (-) -
|
||||||
|
(fo %ret (of det/change ~))
|
||||||
|
++ fo
|
||||||
|
|* [a=term b=fist]
|
||||||
|
|=(c=json ?.(=([%s a] c) (b c) (some [a ~])))
|
||||||
|
::
|
||||||
|
++ ra
|
||||||
|
|* [a=[p=term q=fist] b=fist]
|
||||||
|
|= c=json %. c
|
||||||
|
?.(=(%a -.c) b (pe p.a (ar q.a)))
|
||||||
|
::
|
||||||
|
++ change (ot ler/(at ni ni ~) ted/(cu |*(a=* [0v0 a]) edit) ~)
|
||||||
|
++ char (cu turf so)
|
||||||
|
++ edit
|
||||||
|
%+ fo %nop
|
||||||
|
%+ ra mor/|=(json (edit +<))
|
||||||
|
(of del/ni set/(cu tuba sa) ins/(ot at/ni new/char ~) ~)
|
||||||
|
--
|
||||||
|
::
|
||||||
|
++ noun sole-action :: clam from %noun
|
||||||
|
--
|
||||||
|
--
|
55
main/mar/sole-effect/door.hook
Normal file
55
main/mar/sole-effect/door.hook
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/door/sole-effect/mar
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
/- *sole
|
||||||
|
!:
|
||||||
|
::::
|
||||||
|
::
|
||||||
|
|%
|
||||||
|
++ mar-sole-change :: XX dependency
|
||||||
|
|_ cha=sole-change
|
||||||
|
++ grow
|
||||||
|
|% ++ json
|
||||||
|
^- ^json
|
||||||
|
=+ cha
|
||||||
|
=< (jobe ted/(. ted) ler/a/~[(jone own.ler) (jone his.ler)] ~)
|
||||||
|
|= ted=sole-edit
|
||||||
|
?- -.ted
|
||||||
|
%nop [%s 'nop']
|
||||||
|
%mor [%a (turn p.ted ..$)]
|
||||||
|
%del (joba %del (jone p.ted))
|
||||||
|
%set (joba %set (jape (tufa p.ted)))
|
||||||
|
%ins (joba %ins (jobe at/(jone p.ted) new/s/(tuft q.ted) ~))
|
||||||
|
==
|
||||||
|
--
|
||||||
|
--
|
||||||
|
++ wush
|
||||||
|
|= [wid=@u tan=tang]
|
||||||
|
^- tape
|
||||||
|
=+ rolt=|=(a=wall `tape`?~(a ~ :(weld i.a "\0a" $(a t.a))))
|
||||||
|
(rolt (turn tan |=(a=tank (rolt (wash 0^wid a)))))
|
||||||
|
::
|
||||||
|
--
|
||||||
|
!:
|
||||||
|
|_ sef=sole-effect
|
||||||
|
::
|
||||||
|
++ grab :: convert from
|
||||||
|
|%
|
||||||
|
++ noun sole-effect :: clam from %noun
|
||||||
|
--
|
||||||
|
++ grow
|
||||||
|
|%
|
||||||
|
++ json
|
||||||
|
^- ^json
|
||||||
|
?+ -.sef ~|(unsupported-effect/-.sef !!)
|
||||||
|
%mor [%a (turn p.sef |=(a=sole-effect json(sef a)))]
|
||||||
|
%err (joba %hop (jone p.sef))
|
||||||
|
%txt (joba %txt (jape p.sef))
|
||||||
|
%tan (joba %tan (jape (wush 160 p.sef)))
|
||||||
|
%det json:~(grow mar-sole-change +.sef)
|
||||||
|
%pro (jobe vis/b/vis.sef tag/s/tag.sef cad/(jape cad.sef) ~)
|
||||||
|
?(%bel %clr %nex) (joba %act %s -.sef)
|
||||||
|
==
|
||||||
|
--
|
||||||
|
--
|
@ -1,8 +1,8 @@
|
|||||||
::
|
::
|
||||||
:::: /hook/door/rodeo-command/mar
|
:::: /hook/door/talk-command/mar
|
||||||
::
|
::
|
||||||
/? 314
|
/? 314
|
||||||
/- *rodeo
|
/- *talk
|
||||||
!:
|
!:
|
||||||
|_ cod=command
|
|_ cod=command
|
||||||
::
|
::
|
||||||
@ -72,6 +72,7 @@
|
|||||||
^- $+(json (unit statement))
|
^- $+(json (unit statement))
|
||||||
=- (ot date/di bouquet/(as (ar so)) speech/(of -) ~)
|
=- (ot date/di bouquet/(as (ar so)) speech/(of -) ~)
|
||||||
:~ lin/(ot say/bo txt/so ~)
|
:~ lin/(ot say/bo txt/so ~)
|
||||||
|
url/(su auri:urlp)
|
||||||
:: exp/(cu |=(a=cord [a ~]) so)
|
:: exp/(cu |=(a=cord [a ~]) so)
|
||||||
:: inv/(ot ship/(su fed:ag) party/(su urs:ab) ~)
|
:: inv/(ot ship/(su fed:ag) party/(su urs:ab) ~)
|
||||||
==
|
==
|
@ -1,8 +1,8 @@
|
|||||||
::
|
::
|
||||||
:::: /hook/door/rodeo-report/mar
|
:::: /hook/door/talk-report/mar
|
||||||
::
|
::
|
||||||
/? 314
|
/? 314
|
||||||
/- *rodeo
|
/- *talk
|
||||||
!:
|
!:
|
||||||
|_ rep=report
|
|_ rep=report
|
||||||
::
|
::
|
||||||
@ -17,7 +17,7 @@
|
|||||||
=> +
|
=> +
|
||||||
|^ %+ joba -.rep
|
|^ %+ joba -.rep
|
||||||
?- -.rep
|
?- -.rep
|
||||||
%config ~! rep (conf +.rep)
|
%cabal (cabl +.rep)
|
||||||
%house a/(turn (~(tap by +.rep)) jose)
|
%house a/(turn (~(tap by +.rep)) jose)
|
||||||
%grams (jobe num/(jone p.rep) tele/[%a (turn q.rep gram)] ~)
|
%grams (jobe num/(jone p.rep) tele/[%a (turn q.rep gram)] ~)
|
||||||
%group (jobe local/(grop p.rep) global/%.(q.rep (jome parn grop)) ~)
|
%group (jobe local/(grop p.rep) global/%.(q.rep (jome parn grop)) ~)
|
||||||
@ -67,12 +67,18 @@
|
|||||||
::
|
::
|
||||||
++ parn
|
++ parn
|
||||||
|= a=partner ^- cord
|
|= a=partner ^- cord
|
||||||
%- crip
|
?- -.a
|
||||||
?~ -.a "{<p.p.a>}/{(trip q.p.a)}"
|
%& (stat p.a)
|
||||||
?- -.p.a
|
%| %- crip
|
||||||
%twitter "{(trip -.p.a)}/{(trip p.p.a)}"
|
?- -.p.a
|
||||||
|
%twitter "{(trip -.p.a)}/{(trip p.p.a)}"
|
||||||
|
==
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
|
++ stat
|
||||||
|
|= a=station ^- cord
|
||||||
|
(crip "{<p.a>}/{(trip q.a)}")
|
||||||
|
::
|
||||||
++ stam
|
++ stam
|
||||||
|= statement
|
|= statement
|
||||||
(jobe date/(jode p) bouquet/(bouq q) speech/(spec r) ~)
|
(jobe date/(jode p) bouquet/(bouq q) speech/(spec r) ~)
|
||||||
@ -82,6 +88,7 @@
|
|||||||
%+ joba -.a
|
%+ joba -.a
|
||||||
?+ -.a !!
|
?+ -.a !!
|
||||||
%lin (jobe say/[%b p.a] txt/[%s q.a] ~)
|
%lin (jobe say/[%b p.a] txt/[%s q.a] ~)
|
||||||
|
%url (jobe url/[%s (crip (earn p.a))] ~)
|
||||||
%exp (jobe code/[%s p.a] ~)
|
%exp (jobe code/[%s p.a] ~)
|
||||||
:: %inv (jobe ship/(jope p.a) party/[%s q.a] ~)
|
:: %inv (jobe ship/(jope p.a) party/[%s q.a] ~)
|
||||||
==
|
==
|
||||||
@ -96,6 +103,13 @@
|
|||||||
(jobe first/[%s p] middle/?~(q ~ [%s u.q]) last/[%s r] ~)
|
(jobe first/[%s p] middle/?~(q ~ [%s u.q]) last/[%s r] ~)
|
||||||
~
|
~
|
||||||
::
|
::
|
||||||
|
++ cabl
|
||||||
|
|= cabal
|
||||||
|
%- jobe :~
|
||||||
|
loc/(conf loc)
|
||||||
|
ham/((jome stat conf) ham)
|
||||||
|
==
|
||||||
|
::
|
||||||
++ conf
|
++ conf
|
||||||
|= config
|
|= config
|
||||||
%- jobe :~
|
%- jobe :~
|
@ -1,9 +1,17 @@
|
|||||||
::
|
::
|
||||||
:::: /hoon/core/zing/mar
|
:::: /hoon/core/psal/mar
|
||||||
::
|
::
|
||||||
/? 314
|
/? 314
|
||||||
|
!:
|
||||||
|_ tan=(list tank)
|
|_ tan=(list tank)
|
||||||
::
|
::
|
||||||
|
++ grow
|
||||||
|
|%
|
||||||
|
++ psal
|
||||||
|
=- ;pre:code:"{(trip (role (turn - crip)))}" :: XX
|
||||||
|
^- wall %- zing ^- (list wall)
|
||||||
|
(turn tan |=(a=tank (wash 0^160 a)))
|
||||||
|
--
|
||||||
++ grab :: convert from
|
++ grab :: convert from
|
||||||
|%
|
|%
|
||||||
++ noun (list tank) :: clam from %noun
|
++ noun (list tank) :: clam from %noun
|
||||||
|
31
main/mar/urb/door.hook
Normal file
31
main/mar/urb/door.hook
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/door/urb/mar
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
|
:: /= dep /$ |=([^ but=path] `@uvH`?>(?=([%dep @ ~] but) (slav %uv i.t.but)))
|
||||||
|
!:
|
||||||
|
|_ own=manx
|
||||||
|
::
|
||||||
|
++ grow :: convert to
|
||||||
|
|%
|
||||||
|
++ html (crip (poxo own)) :: convert to %html
|
||||||
|
++ mime [/text/html (taco html)] :: convert to %mime
|
||||||
|
--
|
||||||
|
++ grab
|
||||||
|
|% :: convert from
|
||||||
|
++ noun manx :: clam from %noun
|
||||||
|
++ hymn :: inject into %hymn
|
||||||
|
|= old=manx old :: moved to %eyre
|
||||||
|
:: ~| hymn//mal-formed
|
||||||
|
:: :: ~| old
|
||||||
|
:: ?> ?=([[%html ~] [[%head ~] *] [[%body ~] ^] ~] old) :: XX static
|
||||||
|
:: :: =+ bek=(sa (turn (turn dep) |=(a=beam (tope a(s ~)))))
|
||||||
|
:: %_ old
|
||||||
|
:: c.i.c
|
||||||
|
:: :- ;meta(charset "utf-8", urb_injected "");
|
||||||
|
:: ?~ dep c.i.c.old
|
||||||
|
:: :- ;script@"/~/on/{<dep>}.js";
|
||||||
|
:: c.i.c.old
|
||||||
|
:: ==
|
||||||
|
--
|
||||||
|
--
|
@ -1989,7 +1989,7 @@ try to get the aeon referred to by the starting case. If it doesn't
|
|||||||
exist yet, then we can't do anything interesting with this subscription,
|
exist yet, then we can't do anything interesting with this subscription,
|
||||||
so we move on to the next one.
|
so we move on to the next one.
|
||||||
|
|
||||||
Otherwise, we try to get the aeon referrred to by the ending case. If it
|
Otherwise, we try to get the aeon referred to by the ending case. If it
|
||||||
doesn't exist yet, then we produce all the information we can. We call
|
doesn't exist yet, then we produce all the information we can. We call
|
||||||
`++lobes-at-path` at the given aeon and path to see if the requested
|
`++lobes-at-path` at the given aeon and path to see if the requested
|
||||||
path has actually changed. If it hasn't, then we don't produce anything;
|
path has actually changed. If it hasn't, then we don't produce anything;
|
||||||
|
@ -56,3 +56,8 @@ Unsubscribe from stream `[stream]` on a foreign Urbit.
|
|||||||
|
|
||||||
urb.js
|
urb.js
|
||||||
======
|
======
|
||||||
|
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
</hr>
|
||||||
|
<list></list>
|
||||||
|
@ -1,5 +1,273 @@
|
|||||||
Eyre: Reference
|
Eyre: Reference
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
## State
|
||||||
|
|
||||||
|
Stored
|
||||||
|
|
||||||
|
- `++bolo`
|
||||||
|
- `++cyst`
|
||||||
|
- `++stem`
|
||||||
|
|
||||||
|
Runtime
|
||||||
|
|
||||||
|
- `perk`
|
||||||
|
+ `perk-auth`
|
||||||
|
- `pest`
|
||||||
|
- `even`
|
||||||
|
|
||||||
|
## Cores
|
||||||
|
|
||||||
|
- `++handle`
|
||||||
|
+ `++parse`
|
||||||
|
- `++as...`
|
||||||
|
- `++ya`
|
||||||
|
- `++ix`
|
||||||
|
|
||||||
Eyre: Commentary
|
Eyre: Commentary
|
||||||
================
|
================
|
||||||
|
|
||||||
|
Let us follow the loading of a simple cli app, as it bounces from
|
||||||
|
browser to server to browser and back.
|
||||||
|
|
||||||
|
## Initial request[#init]
|
||||||
|
|
||||||
|
An http request for `http://sampel-sipnym.urbit.org/cli` will be [redirected](dns)
|
||||||
|
to the `%eyre` on ~sampel-sipnym, and come in as a `%this` kiss.
|
||||||
|
|
||||||
|
From arvo, requests enter `++call`, which after some type reification are passed
|
||||||
|
along to `++apex:ye`. In the case of a `%this` kiss, its components are
|
||||||
|
parsed(see `++zest:epur`, `++eat-headers`) and handed off to `++handle`, wrapped
|
||||||
|
in `++emule` to produce a `++fail` page in case of error. `++apex:handle` will
|
||||||
|
`++process` the request to a `pest` or a `++done` core, and in the former case
|
||||||
|
`++resolve` the pest into an outgoing card.
|
||||||
|
|
||||||
|
XX it also seems to affect the current ship, test that serving ship name is consistently correct
|
||||||
|
|
||||||
|
The pest is produced by `++process`, which will first further `++parse` the
|
||||||
|
request, and if this does not make the response immediately obvious,
|
||||||
|
`++process-parsed` the resulting `perk`.
|
||||||
|
|
||||||
|
`++parse` produces the `perk`, by attempting to interpret the `pork`(url path)
|
||||||
|
[`++as-magic-filename`](#mage), `++as-beam`, and `++as-aux-request`. In this
|
||||||
|
case, `/cli` is parsed by the second case as a `%beam` query to `/=cli=`: a path
|
||||||
|
which starts with a valid ship name is expected to be a full clay(well, ford)
|
||||||
|
path, and one starting with a term implies the current serving ship and a case
|
||||||
|
of `0`, the current revision.
|
||||||
|
|
||||||
|
XX spur: when the desks are merged, `/cli` shall point to `/=main=/pub/cli`
|
||||||
|
|
||||||
|
The parsed `perk` generates a `%f %boil` note, `mark`ed as its extension(here
|
||||||
|
defaulting to `%urb`) and `wire`d with `~` to return unaltered to the client. It
|
||||||
|
goes on to `++resolve` by being passed to `++ford-get-beam`, which translates
|
||||||
|
the perk it into a `%boil` `++ford-req`, adding an `++fcgi` path-segment
|
||||||
|
containing query string and `++fcgi-cred:for-client` auth information.
|
||||||
|
|
||||||
|
`%ford`s translation of `/=cli=/hymn/hook` to a self-refreshing `%urb` html page
|
||||||
|
[deserves its own commentary](../ford/commentary), but we resume in `%eyre`
|
||||||
|
when the `%made` sign arrives in `++take`, and soon after `++axon:ye`. There the
|
||||||
|
`wire`, or rather the `whir` it has been verified to be, determines that the
|
||||||
|
response should be served immediately. However, as the mark is not `%mime`,
|
||||||
|
another trip to `%ford` is required to encode it, on the same wire; afterwards,
|
||||||
|
the value of the `%mime` cage is verified to be of the correct type, and finally
|
||||||
|
delivered back up the requesting duct as a succesful `%thou` HTTP response.
|
||||||
|
|
||||||
|
XX `%cast %mime` used to be in ford-get-beam, is there a reason it was removed?
|
||||||
|
|
||||||
|
## Back into the breach, or: auxilary requests
|
||||||
|
|
||||||
|
Now, it was mentioned that this result is self-refreshing: the `%urb`
|
||||||
|
translation door injects a `;script@"/~/on/{deps}.js"` into every page, `deps`
|
||||||
|
is a ford-readable hash of the set of resources that page construction depended
|
||||||
|
on.
|
||||||
|
|
||||||
|
This triggers another `%this` request. Its handling is identical to that of
|
||||||
|
`/cli` up until `++parse`, where it is seen not `++as-beam` but
|
||||||
|
`++as-aux-request`(auxillary requests starting with `/~/` or `/~~/`).
|
||||||
|
`/on/[hash]` is a long-`%poll`, which `++process-parsed`, for a `.js` mark,
|
||||||
|
answers with a direct `%js`. Its contents are the static `++poll:js`, which
|
||||||
|
initiates the long-polling loop, run against an injected `urb.js` of
|
||||||
|
`{poll:[hash]}`.
|
||||||
|
|
||||||
|
A `%js` `pest` is `resolve`d as a `text/javascript` success `%this`.
|
||||||
|
|
||||||
|
When `poll.js` is recieved by the client, it opens an `XMLHttpRequest` for
|
||||||
|
`/~/on/{window.urb.poll}.json`, bringing us back to `%poll:process`.
|
||||||
|
|
||||||
|
In the case of a non-`%js` `/~/on/`, `%poll:process-parsed` turns into a
|
||||||
|
`++new-dependency`, which stores the listening duct, and `pass-note`s a `%wasp`
|
||||||
|
with the deps-hash back to `%ford` whence it came. While this occured, the page
|
||||||
|
has loaded.
|
||||||
|
|
||||||
|
Some indeterminate amount of time afterwards, with dropped `/~/on/{...}.json`s
|
||||||
|
being retried upon expiring and also being stored, a `%news` sign arrives in
|
||||||
|
`++axon`, and the hash in question is retrieved from the wire, and the listening
|
||||||
|
long-polls retrieved by the hash. Each receives a 205 "Reload parent view" HTTP
|
||||||
|
response, which `poll.js` dutifully executes, and a fixed typo of markdown is
|
||||||
|
rendered.
|
||||||
|
|
||||||
|
## Authentication.
|
||||||
|
|
||||||
|
Now, while this accurately reflects the presentation of e.g. a markdown file,
|
||||||
|
`/cli` is an application front-end, and one that permits only owner access. Its
|
||||||
|
second script is `@"/~~/~/at/main/lib/urb.js"`, semantically equivalent to
|
||||||
|
`/~/as/own/~/at/main/lib/urb.js`, and handled as follows.
|
||||||
|
|
||||||
|
In `++as-aux-request`, `%as %own` becomes `%auth %get our` perk, which
|
||||||
|
`++process` passes to `++process-parsed` passes to `++process-auth`. There, a
|
||||||
|
`yac` "ya" core is built `++for-client`: a `++cookie-prefix`, which is just the
|
||||||
|
serving ship name, is used to get a `++session-from-cookies`, here nil as the
|
||||||
|
client has no cookie set. In lieu of a cookie, a `++new-ya` is constructed, with
|
||||||
|
a random token `hole` and a `++new-cyst` which fills out `cyst` session state
|
||||||
|
from request data.
|
||||||
|
|
||||||
|
Returning to `++process-auth`, `%get` checks if the yac is authenticated with
|
||||||
|
the requested credentials(`anon` requests are always granted), which for the
|
||||||
|
fresh new `cyst` is not the case (more on success [later](#auth-ok)). Unless
|
||||||
|
authentiacting as a [foreign ship](#xeno), the only thing left is to
|
||||||
|
`++show-login-page`, which detects that the requested resource is not `%html`,
|
||||||
|
and produces a `%red` pest. For `%js`, `%red`irections `++resolve` to
|
||||||
|
`++auth-redir:js`, a line of javascript which prepends `/~~` to the url path.
|
||||||
|
|
||||||
|
The owner-authenticated main page request similarly ends in `++show-login-page`,
|
||||||
|
which for the empty session is an `[%htme ++login-page:xml]`, `resolve`d to
|
||||||
|
`++give-html` with a 401 "unathorized".
|
||||||
|
|
||||||
|
The login page shows a simple prompt, and requests `/~/at/auth.js` to handle the
|
||||||
|
submission. And so we are, once again, attempting to divine if what we're doing
|
||||||
|
makes sense `++as-aux-request`.
|
||||||
|
|
||||||
|
To understand `/~/at`, there will first be a brief diversion to `~/auth.json`.
|
||||||
|
`auth.json`, perk `[%auth %json]`, in `++process-auth` serves `++stat-json:ya`,
|
||||||
|
containing such information as the serving ship, which identities are associated
|
||||||
|
with this session, and `oryx`, a CSRF token. An oryx must be present on all
|
||||||
|
stateful requests, in this case executing a log in. It also saves the new/old
|
||||||
|
session using `abet`.
|
||||||
|
|
||||||
|
XX explain `ixor` here and not [later](#ixor)?
|
||||||
|
|
||||||
|
`/~/at` is an alternate interface, which injects `auth.json` data into the
|
||||||
|
requested file. `/~/at/auth.js`, then, is a request for the built-in `auth:js`
|
||||||
|
(parsed to and processed from an `[%auth %js ~]` perk), with session data added
|
||||||
|
as `window.urb`. And indeed, ``[`%js /~/at/auth]`` is parsed to
|
||||||
|
``[%auth at [`%js /auth]``, which in `++process-auth` is re-`process`ed to
|
||||||
|
`[%js ++auth:js]`, which is `++resolve`d after an `++add-json` of
|
||||||
|
the relevant data. The yac cookies are also passed to `resolve`, which
|
||||||
|
`++add-cookies` injects into the `httr`.
|
||||||
|
|
||||||
|
It is at this point that there is first occasion for user input, namely the password.
|
||||||
|
|
||||||
|
The `auth:js` script sends a `PUT` request, also to `/~/auth.json`. In `parse`,
|
||||||
|
the first nontrivial `++check-oryx` occurs, `++grab-body` the request oryx and
|
||||||
|
ensuring it is recorded for the session. The request parsed with `++need-body`
|
||||||
|
to a `[%auth %try {password}]` perk. `%get:process-auth` checks it against
|
||||||
|
`++load-secret`, upon success updates the session with `++logon:ya`, and
|
||||||
|
serves a fresh `auth.json` which reflects the changed `user`. Upon recieving
|
||||||
|
this, the page is refreshed to retry the original request.
|
||||||
|
|
||||||
|
## Post-authentication: app communication. [#auth-ok]
|
||||||
|
|
||||||
|
Upon refresh, `/~~/cli` brings us for the third time to `%get:process-auth`, but
|
||||||
|
this time the cookie is set, and the `yac` fetched contains the serving ship as
|
||||||
|
authenticated. The `++handle` sample is updated to reflect the requesting ship,
|
||||||
|
and the `process` continues for the rest of the pork, once again serving the
|
||||||
|
ford page.
|
||||||
|
|
||||||
|
The `/~/on/[deps].json` poll starts anew, and `/~~/~/at/main/lib/urb.js` we now
|
||||||
|
know to serve the window.urb necessary to make requests, and the `urb.js`
|
||||||
|
standard library which extends it with a number of wrappers to them and other
|
||||||
|
useful functions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
One of those functions is `urb.bind`, which is used to subscribe to application
|
||||||
|
data. Userspace javascript sets `urb.appl` to `/tic`, and binds `lines` to a
|
||||||
|
`;pre;` text display, using a callback.
|
||||||
|
|
||||||
|
This triggers a `PUT` to `/~/is/{ixor}/cli/lines.json`, where `ixor` is a hash
|
||||||
|
of `oryx` that identifies the connection. `++as-aux-request`, an `%is` is a
|
||||||
|
`%subs` subscription update update, which for `%put` forwards to
|
||||||
|
`++add-subs:ix`, the ix core fetched `++for-view` by hashing the request
|
||||||
|
`++oryx-to-ixor`.
|
||||||
|
|
||||||
|
[#ixor] A view has all the state associated with a client that must be
|
||||||
|
remembered between events. In this case, this is what app/path the request duct
|
||||||
|
is associated with; but mainly, `++add-subs:ix` will `pass-note` to `%gall` so
|
||||||
|
it `%show`s the data on the path, current and future.
|
||||||
|
|
||||||
|
This will immediately(assuming the ship is local) result in a `%nice` by the
|
||||||
|
`/cli` app, returning `{ok:true}` `++nice-json` to `urb.bind`'s second callback
|
||||||
|
as `{ok:true}`. The initial `%rush` results also arrive, and in `++axon` are
|
||||||
|
converted to json using `++back`(ford `%cast` wrapper), and when `%made` get
|
||||||
|
passed to `++get-rush:ix`. There the source application/path are decoded by
|
||||||
|
duct, and then the full event goes to `++get-even`; `++add-even` inserts it to
|
||||||
|
the queue, and as there is no long poll it simply stays there.
|
||||||
|
|
||||||
|
Upon receipt, the client realizes the long-poll isn't actually running, so that
|
||||||
|
is started using `urb.poll`. At `/~/of/{ixor}`, perk
|
||||||
|
`[%view ixor ~ {sequence-number}]`, it is `process`ed by `++poll:ix` (the cyst
|
||||||
|
is retrieved by `++ire-ix` form global state, using the perk `ixor`): the
|
||||||
|
sequence number is in the past, so the previously recieved `%rush` is
|
||||||
|
`++give-even`. After deleting the previous message in the queue and invoking
|
||||||
|
`++pass-took` to signal `%gall` of this occurrence, the data is annotated with
|
||||||
|
the source app+path `++subs-to-json`, and returned to the polling duct.
|
||||||
|
|
||||||
|
On the client, the user callback receives the `/cli` history, and displays it on
|
||||||
|
the page. The `/~/of` long poll is continued, this time reaching `++poll:ix`
|
||||||
|
with the "pending" sequence number, and being stored in the `cyst` for its troubles.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Its next update proceeds idenitcally, but first it must be triggered, which
|
||||||
|
happens when the user enters "(add 2 2)\n", firing an `urb.send` from the event
|
||||||
|
handler. This sends a `POST` request to `/~/to/cli/json.json`, perk `%mess`,
|
||||||
|
`++process`ed to a `%g %mess`. Were the mark not `%json`, a `%ford` conversion
|
||||||
|
would occur first, and `%made:axon` would send the gall message proper. In
|
||||||
|
either case, eventually a `%mean` or `%nice` arrives, is encoded as json, and
|
||||||
|
sent to the client callback.
|
||||||
|
|
||||||
|
## A path not taken: magic filenames [#mage]
|
||||||
|
|
||||||
|
The `/robots.txt` and `/favicon.(ico|png)` files are static, and served
|
||||||
|
immediately when caught by a `++parse`.
|
||||||
|
|
||||||
|
XX index.html?
|
||||||
|
|
||||||
|
## A path not taken: foreign auth [#xeno]
|
||||||
|
|
||||||
|
While this example details a login `/~/as/own`, it is possible to be
|
||||||
|
authenticated as any ship on the network. A request for such seen in
|
||||||
|
`%get:process-auth` is passed to `++foreign-auth:ya`, which sends an
|
||||||
|
`%ames /lon` message to the ship in question. The foreign ship stores the
|
||||||
|
inquiry, calculates(the local) `++our-host` and responds with a `/hat`,
|
||||||
|
containing the redirection host, which is stored by `++foreign-hat`; it is later
|
||||||
|
used to send the client to a `/~/am` url on the foreign client, which acts as a
|
||||||
|
normal login page but later sends the client back. XX expand, basically the
|
||||||
|
status quo is you're logged in and `/~/as/foo` is ignored, just setting your
|
||||||
|
`urb.user` XX
|
||||||
|
|
||||||
|
|
||||||
|
## A path not taken: deauthentication
|
||||||
|
|
||||||
|
`/~/away`, perk `[%away ~]`, produces a static `++logout-page:xml`, which also
|
||||||
|
uses `/~/at/auth.js`, to send a `DELETE /~/auth.json`, perk `[%auth %del]`. This
|
||||||
|
executes `++logoff:ya` for the cookie session, resolving to `++abut` to wipe it
|
||||||
|
from memory.
|
||||||
|
|
||||||
|
## A path not taken: unsubscription
|
||||||
|
|
||||||
|
`DELETE /~/is/app/path/within` works much like `PUT /~/is/app/path/within`,
|
||||||
|
`++del-subs:ix` acting as reverse of `++add-subs` by deleting the duct binding
|
||||||
|
and sending `%g %nuke`.
|
||||||
|
|
||||||
|
|
||||||
|
XX unmentioned arms: abet, add-poll, adit, ames-gram, anon, ares-to-json, bolo, cyst, doze, even, ford-kill, get-mean, gift, give-json, give-thou, gram, hapt, hasp, host-to-ship, ix, ixor, js, kiss, load, mean-json, move, note, pass-note, perk, perk-auth, pest, poke-test, print-subs, render-tang, resp, root-beak, scry, ses-authed, ses-ya, sign, silk, sine, stay, stem, teba, titl, to-oryx, urb, wait-era, wake, whir, wush, xml, ya, ye
|
||||||
|
|
||||||
|
## Appendix A: DNS [#dns]
|
||||||
|
|
||||||
|
The `*.urbit.org` domain can be used to access destroyers and cruisers. In the
|
||||||
|
common case oh hosted ships, this is done by dynamic DNS directly to the hosting
|
||||||
|
instance. We do not speak of the uncommon case. When ports are blocked and
|
||||||
|
infrastructure crumbles around you, only imported martian networking can be
|
||||||
|
trusted: the `%get` and `%got` [gram]()s are used to proxy [`%this` requests]() and
|
||||||
|
[`%thou` responses]() respectively.
|
||||||
|
@ -47,12 +47,12 @@ machine directly.
|
|||||||
|
|
||||||
#### Try it
|
#### Try it
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/1/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/1/
|
||||||
|
|
||||||
#### What did you just do?
|
#### What did you just do?
|
||||||
|
|
||||||
The code you just wrote is urbit's native programming langauge, hoon.
|
The code you just wrote is urbit's native programming langauge, hoon.
|
||||||
Generating HTML with hoon is similar to writing [jade](link) or other
|
Generating HTML with hoon is similar to writing [jade]() or other
|
||||||
similar HTML shorthand. In hoon, this shorthand is called [`++sail`]()
|
similar HTML shorthand. In hoon, this shorthand is called [`++sail`]()
|
||||||
and it's a native part of the hoon language.
|
and it's a native part of the hoon language.
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ our `;h1:` above, and are closed implicitly with a new line. Nodes with
|
|||||||
no content are closed with another `;`, such as `;br;`.
|
no content are closed with another `;`, such as `;br;`.
|
||||||
|
|
||||||
You can find more information about `++sail` in our [rune library
|
You can find more information about `++sail` in our [rune library
|
||||||
documentation](link).
|
documentation]().
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
</hr>
|
</hr>
|
||||||
@ -90,7 +90,7 @@ documentation](link).
|
|||||||
|
|
||||||
#### Try it
|
#### Try it
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/2/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/2/
|
||||||
|
|
||||||
### What's going on there?
|
### What's going on there?
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ Clearly, the code `(add 2 2)` is generating `4`, and it's not too hard
|
|||||||
to see why. `add` is one of the library functions that are a part of
|
to see why. `add` is one of the library functions that are a part of
|
||||||
`hoon.hoon`. Try replacing `(add 2 2)` with `(sub 2 (add 2 2))`. You can
|
`hoon.hoon`. Try replacing `(add 2 2)` with `(sub 2 (add 2 2))`. You can
|
||||||
find documentation for the full hoon library in the [library
|
find documentation for the full hoon library in the [library
|
||||||
reference](link).
|
reference]().
|
||||||
|
|
||||||
Since the product of `(add 2 2)` is a number, we need a few extra things
|
Since the product of `(add 2 2)` is a number, we need a few extra things
|
||||||
to have it print properly. In `++sail` we use `{` and `}` to do string
|
to have it print properly. In `++sail` we use `{` and `}` to do string
|
||||||
@ -140,7 +140,7 @@ we need to explicitly convert our types.
|
|||||||
|
|
||||||
#### Try it
|
#### Try it
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/3/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/3/
|
||||||
|
|
||||||
#### How does that work?
|
#### How does that work?
|
||||||
|
|
||||||
@ -148,9 +148,9 @@ The first thing you should notice in this example is the `=+` at the top
|
|||||||
of our file. `=+` is a rune. hoon is a programming with no reserved
|
of our file. `=+` is a rune. hoon is a programming with no reserved
|
||||||
words. We don't use `if` `this` or `function` at all. Instead, runes
|
words. We don't use `if` `this` or `function` at all. Instead, runes
|
||||||
have their own pronunciation. `=+` is pronounced 'tislus'. You can find
|
have their own pronunciation. `=+` is pronounced 'tislus'. You can find
|
||||||
the table of pronunciation [here](link). In hoon you construct your
|
the table of pronunciation [here](). In hoon you construct your
|
||||||
programs using runes, which are two character ascii pairs. You can see
|
programs using runes, which are two character ascii pairs. You can see
|
||||||
the whole set of runes in the [rune index](link).
|
the whole set of runes in the [rune index]().
|
||||||
|
|
||||||
`=+` pushes an expression on to our subject. The subject in hoon is
|
`=+` pushes an expression on to our subject. The subject in hoon is
|
||||||
similar to `this` in other languages. hoon being a functional language
|
similar to `this` in other languages. hoon being a functional language
|
||||||
@ -168,7 +168,7 @@ Looking at the rendered page it's clear that we're assigning `a` to be
|
|||||||
we're doing this in two different ways. Runes in hoon can have irregular
|
we're doing this in two different ways. Runes in hoon can have irregular
|
||||||
forms, and `^=` is one of them. The first two lines of our example are
|
forms, and `^=` is one of them. The first two lines of our example are
|
||||||
doing the same thing, where `a=2` is simply the irregular form of
|
doing the same thing, where `a=2` is simply the irregular form of
|
||||||
`^= a 2`. You can see the full list of irregular forms [here](link).
|
`^= a 2`. You can see the full list of irregular forms [here]().
|
||||||
|
|
||||||
Looking at the simple computation on the page, you can try changing the
|
Looking at the simple computation on the page, you can try changing the
|
||||||
values of `a` and `b` to any integers to produce similar results.
|
values of `a` and `b` to any integers to produce similar results.
|
||||||
@ -212,7 +212,7 @@ values of `a` and `b` to any integers to produce similar results.
|
|||||||
|
|
||||||
(and be sure to put two spaces between `++` and arm names)
|
(and be sure to put two spaces between `++` and arm names)
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/4/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/4/
|
||||||
|
|
||||||
### What's happening?
|
### What's happening?
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ core. Gates only have one arm and are quite similar to a function in
|
|||||||
other languages. We use `|=` to construct our gate. Runes in hoon are
|
other languages. We use `|=` to construct our gate. Runes in hoon are
|
||||||
generally categorized by their first character. `|` indicates a rune
|
generally categorized by their first character. `|` indicates a rune
|
||||||
having to do with cores. You can find all of the `|` runes in the [rune
|
having to do with cores. You can find all of the `|` runes in the [rune
|
||||||
library](link).
|
library]().
|
||||||
|
|
||||||
Our `++length` [gate]() takes two arguments, `s` and `e`. In hoon we
|
Our `++length` [gate]() takes two arguments, `s` and `e`. In hoon we
|
||||||
call the data passed in to a gate the 'sample'. Every `|=` has two
|
call the data passed in to a gate the 'sample'. Every `|=` has two
|
||||||
@ -241,7 +241,7 @@ computes the difference between `e` and `s`.
|
|||||||
|
|
||||||
`@ud` is an odor. Odors aren't quite types, but they're similar. You'll
|
`@ud` is an odor. Odors aren't quite types, but they're similar. You'll
|
||||||
learn the difference by example as we progress, and you can always refer
|
learn the difference by example as we progress, and you can always refer
|
||||||
to the [odor index](link).
|
to the [odor index]().
|
||||||
|
|
||||||
You probably also noticed our indentation. In general hoon has both tall
|
You probably also noticed our indentation. In general hoon has both tall
|
||||||
and wide forms. In tall form, hoon uses two spaces for indentation and
|
and wide forms. In tall form, hoon uses two spaces for indentation and
|
||||||
@ -282,7 +282,7 @@ margin. In wide form we use parenthesis just like almost everyone else.
|
|||||||
|
|
||||||
#### Try it
|
#### Try it
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/5/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/5/
|
||||||
|
|
||||||
#### What's the difference?
|
#### What's the difference?
|
||||||
|
|
||||||
@ -301,7 +301,7 @@ At a high level you can think of hoon as being composed of two things,
|
|||||||
tiles and twigs. Twigs are the actual AST structures that get consumed
|
tiles and twigs. Twigs are the actual AST structures that get consumed
|
||||||
by the compiler. Tiles reduce to twigs and provide major affordances for
|
by the compiler. Tiles reduce to twigs and provide major affordances for
|
||||||
the programmer. If you're interested in learning about tiles more deeply
|
the programmer. If you're interested in learning about tiles more deeply
|
||||||
you can find an in-depth explanation in the [tile overview](link).
|
you can find an in-depth explanation in the [tile overview]().
|
||||||
|
|
||||||
It should suffice, for now, to say that we create tiles in the same way
|
It should suffice, for now, to say that we create tiles in the same way
|
||||||
that you would think of creating type definitions in another language.
|
that you would think of creating type definitions in another language.
|
||||||
@ -325,7 +325,7 @@ you're usually familiar with. We still separate our addressing with `.`,
|
|||||||
but do it from the inside out. Given a tuple such as
|
but do it from the inside out. Given a tuple such as
|
||||||
`[a=1 b=[c=[d=2 e=3]]]` we can address the value of `e` with `e.c.b`.
|
`[a=1 b=[c=[d=2 e=3]]]` we can address the value of `e` with `e.c.b`.
|
||||||
You can read more about how faces work in the commentary on `++type`
|
You can read more about how faces work in the commentary on `++type`
|
||||||
[here](link).
|
[here]().
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
</hr>
|
</hr>
|
||||||
@ -362,11 +362,11 @@ You can read more about how faces work in the commentary on `++type`
|
|||||||
|
|
||||||
#### Try it
|
#### Try it
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/6/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/6/
|
||||||
|
|
||||||
#### What is that doing?
|
#### What is that doing?
|
||||||
|
|
||||||
We're printing a few members of the [fibonacci sequence](link) by
|
We're printing a few members of the [fibonacci sequence]() by
|
||||||
calling our arm `++fib` with a few values. The fibonacci sequence is a
|
calling our arm `++fib` with a few values. The fibonacci sequence is a
|
||||||
fairly straight forward algorithm: `F(n-1) + F(n-2)` where `F(1) = 1`
|
fairly straight forward algorithm: `F(n-1) + F(n-2)` where `F(1) = 1`
|
||||||
and `F(2) = 1`. As is obvious from the formula, generating the fibonacci
|
and `F(2) = 1`. As is obvious from the formula, generating the fibonacci
|
||||||
@ -375,10 +375,10 @@ the code.
|
|||||||
|
|
||||||
Our example here should look similar to the previous one. We build a
|
Our example here should look similar to the previous one. We build a
|
||||||
core with `|%` and add the arm `++fib`. `++fib` is a gate which takes
|
core with `|%` and add the arm `++fib`. `++fib` is a gate which takes
|
||||||
one argument `x`, an atom. Using [`?:`](link) we test if `x` is less
|
one argument `x`, an atom. Using [`?:`]() we test if `x` is less
|
||||||
than `2` with the library function [`lte`](link) to handle our seed
|
than `2` with the library function [`lte`]() to handle our seed
|
||||||
values of `F(1) = 1` and `F(2) = 1`. `?:` is a member of the [`?`
|
values of `F(1) = 1` and `F(2) = 1`. `?:` is a member of the [`?`
|
||||||
runes](link), related to true / false values, or loobeans. In hoon true
|
runes](), related to true / false values, or loobeans. In hoon true
|
||||||
and false are `0` and `1` respectively and take the odor `@f`. We tend
|
and false are `0` and `1` respectively and take the odor `@f`. We tend
|
||||||
to say 'yes' and 'no' instead of 'true' and 'false' to keep track of the
|
to say 'yes' and 'no' instead of 'true' and 'false' to keep track of the
|
||||||
switch. Our built-in function `lte` produces a loobean, so we evaluate
|
switch. Our built-in function `lte` produces a loobean, so we evaluate
|
||||||
@ -389,7 +389,7 @@ We mentioned previously that a gate is a special kind of core with only
|
|||||||
one arm, called `$`. Here we're using `$` to mimic the behavior of a
|
one arm, called `$`. Here we're using `$` to mimic the behavior of a
|
||||||
loop. You can read the expression `$(x (dec x))` as 'call the gate again
|
loop. You can read the expression `$(x (dec x))` as 'call the gate again
|
||||||
with `x` replaced by `(dec x)`. For more on how this works, check out
|
with `x` replaced by `(dec x)`. For more on how this works, check out
|
||||||
the documentation of [`%=`](link) and [`%-`](link). With that in mind it
|
the documentation of [`%=`]() and [`%-`](). With that in mind it
|
||||||
should be clear how the last line of `++fib` produces the member of the
|
should be clear how the last line of `++fib` produces the member of the
|
||||||
sequence at a given value `x`.
|
sequence at a given value `x`.
|
||||||
|
|
||||||
@ -431,7 +431,7 @@ sequence at a given value `x`.
|
|||||||
|
|
||||||
#### Try it
|
#### Try it
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/7/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/7/
|
||||||
http://ship-name.urbit.org/gin/del/main/pub/fab/guide/exercise/7/
|
http://ship-name.urbit.org/gin/del/main/pub/fab/guide/exercise/7/
|
||||||
|
|
||||||
Here we're putting our publishing framework, `%ford` to work a little
|
Here we're putting our publishing framework, `%ford` to work a little
|
||||||
@ -447,19 +447,19 @@ They belong at the top of the file.
|
|||||||
|
|
||||||
`/?` simply checks for compatibility. In this case the line means 'need
|
`/?` simply checks for compatibility. In this case the line means 'need
|
||||||
urbit 314 or below', or in hoon: `(lte zuse 314)`. `314` is the number
|
urbit 314 or below', or in hoon: `(lte zuse 314)`. `314` is the number
|
||||||
in the kelvin versioning system, which you can read about [here](link).
|
in the kelvin versioning system, which you can read about [here]().
|
||||||
|
|
||||||
`/=` is similar to the combination of `=+ =^`, or assignment. `/$`
|
`/=` is similar to the combination of `=+ =^`, or assignment. `/$`
|
||||||
calls a parsing function, which we specify as [`++fuel`](link) with the
|
calls a parsing function, which we specify as [`++fuel`]() with the
|
||||||
[`++beam`](link) and [`++path`](link) of our current file.
|
[`++beam`]() and [`++path`]() of our current file.
|
||||||
`/= gas /$ fuel` is a common way to open your page, since the
|
`/= gas /$ fuel` is a common way to open your page, since the
|
||||||
product of `++fuel` is useful when writing pages to the web. The use of
|
product of `++fuel` is useful when writing pages to the web. The use of
|
||||||
`++fuel` is not enforced — you can also write your own parser.
|
`++fuel` is not enforced — you can also write your own parser.
|
||||||
|
|
||||||
Our page is made up of two generated parts: who requested the page, the
|
Our page is made up of two generated parts: who requested the page, the
|
||||||
location of the page and its revision. Both are parsed out of the `gas`
|
location of the page and its revision. Both are parsed out of the `gas`
|
||||||
variable using some straightforward library functions, [`++ju`](link),
|
variable using some straightforward library functions, [`++ju`](),
|
||||||
[`++spud`](link) and [`++scow`](link). You can follow those links to the
|
[`++spud`]() and [`++scow`](). You can follow those links to the
|
||||||
library reference to learn more about them. You'll also notice our
|
library reference to learn more about them. You'll also notice our
|
||||||
addressing moving in the opposite direction as you may be used to.
|
addressing moving in the opposite direction as you may be used to.
|
||||||
`aut.ced.gas` pulls `aut` from inside `ced` from inside `gas`.
|
`aut.ced.gas` pulls `aut` from inside `ced` from inside `gas`.
|
||||||
@ -468,13 +468,13 @@ Inside of the `;code` tag we also print (for our own reference) the
|
|||||||
entire `gas`, so you can take a look at the contents. This can be a
|
entire `gas`, so you can take a look at the contents. This can be a
|
||||||
helpful trick when debugging. To fully understand what gets put in
|
helpful trick when debugging. To fully understand what gets put in
|
||||||
`gas`, we can take a look at `++fuel` and note that it produces a
|
`gas`, we can take a look at `++fuel` and note that it produces a
|
||||||
[`++epic`](link), which also contains a [`++cred`](link). You can follow
|
[`++epic`](), which also contains a [`++cred`](). You can follow
|
||||||
those links to learn more about them.
|
those links to learn more about them.
|
||||||
|
|
||||||
When we try changing the url from `gen/main` to `gin/del/main` we're
|
When we try changing the url from `main` to `gin/del/main` we're
|
||||||
using some of the access methods from `%eyre` (the urbit webserver) to
|
using some of the access methods from `%eyre` (the urbit webserver) to
|
||||||
pretend to be the urbit `~del`. You can find documentation on those
|
pretend to be the urbit `~del`. You can find documentation on those
|
||||||
access methods in the `%eyre` commentary, [here](link).
|
access methods in the `%eyre` commentary, [here]().
|
||||||
|
|
||||||
Path and identity are useful, but there are some other parameters worth
|
Path and identity are useful, but there are some other parameters worth
|
||||||
checking out as well.
|
checking out as well.
|
||||||
@ -510,8 +510,8 @@ checking out as well.
|
|||||||
|
|
||||||
#### Try it
|
#### Try it
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/8/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/8/
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/8/?code=yes-i-do
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/8/?code=yes-i-do
|
||||||
|
|
||||||
This is a simple example, showing off another use of
|
This is a simple example, showing off another use of
|
||||||
`/= gas /$ fuel`. In this case we're just pulling out the value of
|
`/= gas /$ fuel`. In this case we're just pulling out the value of
|
||||||
@ -519,10 +519,10 @@ the `code` query string parameter. You should be able to change that
|
|||||||
value to any url-safe string and see it appear on the page.
|
value to any url-safe string and see it appear on the page.
|
||||||
|
|
||||||
We're using a few simple library functions to actually pull the value
|
We're using a few simple library functions to actually pull the value
|
||||||
out, [`++fall`](link) and [`get:by`](link). Query string parameters are
|
out, [`++fall`]() and [`get:by`](). Query string parameters are
|
||||||
stored in `qix.gas` as a `++map`, one of the main container constructs
|
stored in `qix.gas` as a `++map`, one of the main container constructs
|
||||||
used in hoon. We'll encounter a lot of maps along the way, and you can
|
used in hoon. We'll encounter a lot of maps along the way, and you can
|
||||||
learn more about them in the [map section](link) of the library doc.
|
learn more about them in the [map section]() of the library doc.
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
</hr>
|
</hr>
|
||||||
@ -569,7 +569,7 @@ learn more about them in the [map section](link) of the library doc.
|
|||||||
|
|
||||||
#### Try it
|
#### Try it
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/9/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/9/
|
||||||
|
|
||||||
#### How are they getting combined?
|
#### How are they getting combined?
|
||||||
|
|
||||||
@ -598,7 +598,8 @@ In order to find our file one level up we need two `%%` to get to
|
|||||||
`/pub/fab/guide/exercise/9/`. Adding `lib` resolve to our neighboring
|
`/pub/fab/guide/exercise/9/`. Adding `lib` resolve to our neighboring
|
||||||
file. You can read more about how `%clay` paths are parsed in the
|
file. You can read more about how `%clay` paths are parsed in the
|
||||||
[`%clay` overview](link). It's also pretty easy to try them out using
|
[`%clay` overview](link). It's also pretty easy to try them out using
|
||||||
`:cd` and `:ls` in your `%arvo` terminal.
|
`/=main=`, `/=try`, `/try/a/b/c/d`, etc.
|
||||||
|
and `:ls` in your `%arvo` terminal.
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
</hr>
|
</hr>
|
||||||
@ -652,9 +653,9 @@ file. You can read more about how `%clay` paths are parsed in the
|
|||||||
|
|
||||||
#### Try it
|
#### Try it
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/10/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/10/
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/10/?number=7
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/10/?number=7
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/10/?number=12
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/10/?number=12
|
||||||
|
|
||||||
As you can see by changing the URL, we're now passing our query string
|
As you can see by changing the URL, we're now passing our query string
|
||||||
parameter to our `++fib` script and printing the output. It's common to
|
parameter to our `++fib` script and printing the output. It's common to
|
||||||
@ -670,21 +671,21 @@ remaining computation. In short, you can read the code that produces
|
|||||||
runes to write this in tall form. `%` runes are used for calling gates
|
runes to write this in tall form. `%` runes are used for calling gates
|
||||||
or evaluating changes. `%+` 'slams' or calls a gate with two arguments,
|
or evaluating changes. `%+` 'slams' or calls a gate with two arguments,
|
||||||
and `%-` 'slams' or calls a gate with one argument. As usual, you can
|
and `%-` 'slams' or calls a gate with one argument. As usual, you can
|
||||||
find more about the `%` runes in the [`%` section](link) of the rune
|
find more about the `%` runes in the [`%` section]() of the rune
|
||||||
library.
|
library.
|
||||||
|
|
||||||
To get a value out of our map of query string parameters `qix.gas` we
|
To get a value out of our map of query string parameters `qix.gas` we
|
||||||
use a method from the [maps library](link) that produces a `++unit`.
|
use a method from the [maps library]() that produces a `++unit`.
|
||||||
`++unit`s are a common type in hoon used for optional values. A
|
`++unit`s are a common type in hoon used for optional values. A
|
||||||
[`++unit`](link) is either `~` or `[~ p=value]`. Since we need to
|
[`++unit`]() is either `~` or `[~ p=value]`. Since we need to
|
||||||
specify a value for `(fib arg)` even when someone doesn't enter the
|
specify a value for `(fib arg)` even when someone doesn't enter the
|
||||||
query string we use [`++fall`](link), which produces either the value of
|
query string we use [`++fall`](), which produces either the value of
|
||||||
the unit, or the second argument if the `++unit` is null. Since our
|
the unit, or the second argument if the `++unit` is null. Since our
|
||||||
`qix.gas` has string values in it we specify a string in our second
|
`qix.gas` has string values in it we specify a string in our second
|
||||||
argument, `'0'`. As an aside, `'0'` is different from `"0"` in hoon. You
|
argument, `'0'`. As an aside, `'0'` is different from `"0"` in hoon. You
|
||||||
can read about the difference in [`++cord`](link) and [`++tape`](link).
|
can read about the difference in [`++cord`]() and [`++tape`]().
|
||||||
|
|
||||||
Our outermost call, to [`++slav`](link), casts our string to a `@ud` —
|
Our outermost call, to [`++slav`](), casts our string to a `@ud` —
|
||||||
which is the type expected by `++fib`. `++slav` takes the name of an
|
which is the type expected by `++fib`. `++slav` takes the name of an
|
||||||
odor and a value, and tries to cast the value to that odor.
|
odor and a value, and tries to cast the value to that odor.
|
||||||
|
|
||||||
@ -742,9 +743,9 @@ odor and a value, and tries to cast the value to that odor.
|
|||||||
|
|
||||||
#### Try it
|
#### Try it
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/11/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/11/
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/11/lib/1/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/11/lib/1/
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/exercise/11/lib/2/
|
http://ship-name.urbit.org/main/pub/fab/guide/exercise/11/lib/2/
|
||||||
|
|
||||||
#### Experiment with it
|
#### Experiment with it
|
||||||
|
|
||||||
@ -764,7 +765,7 @@ If we take the next few lines and write them as pseudo code in wide form
|
|||||||
they might look something like this, `(/; [gate] (/@ /psal/))`. That
|
they might look something like this, `(/; [gate] (/@ /psal/))`. That
|
||||||
being the case, let's start at the bottom and move upwards since that's
|
being the case, let's start at the bottom and move upwards since that's
|
||||||
how our data flows. In depth documentation on individual `++horn` runes
|
how our data flows. In depth documentation on individual `++horn` runes
|
||||||
can be found in the [horn section of the rune library](link).
|
can be found in the [horn section of the rune library]().
|
||||||
|
|
||||||
`/psal/` loads our `psal` mark. Marks are like content types, and we
|
`/psal/` loads our `psal` mark. Marks are like content types, and we
|
||||||
keep them in `/main/mar/`. You can open `/main/mar/psal/door.hook` to
|
keep them in `/main/mar/`. You can open `/main/mar/psal/door.hook` to
|
||||||
@ -776,16 +777,16 @@ where `mark` exists in the `/main/mar/` directory. A `psal` is a partial
|
|||||||
`/@` loads a list of files in numerical order from the previously
|
`/@` loads a list of files in numerical order from the previously
|
||||||
specified `++beam` using our mark, `psal`. `/@` has a few close
|
specified `++beam` using our mark, `psal`. `/@` has a few close
|
||||||
relatives. `/&`, for example, reads files by `@da` or absolute date. You
|
relatives. `/&`, for example, reads files by `@da` or absolute date. You
|
||||||
can see the rest in the [horn section of the library](link).
|
can see the rest in the [horn section of the library]().
|
||||||
|
|
||||||
`/;` takes the output from `/@` and `/psal/` and passes it to a twig. In
|
`/;` takes the output from `/@` and `/psal/` and passes it to a twig. In
|
||||||
this case, a gate. Our `/@` actually produces a [`++list`](link) of
|
this case, a gate. Our `/@` actually produces a [`++list`]() of
|
||||||
pairs of `[@ manx]` where the `@` is the filename, and the `manx` is the
|
pairs of `[@ manx]` where the `@` is the filename, and the `manx` is the
|
||||||
converted contents. We use [`++turn`](link), one of our `++list`
|
converted contents. We use [`++turn`](), one of our `++list`
|
||||||
operator functions, to iterate through the list and produce only a list
|
operator functions, to iterate through the list and produce only a list
|
||||||
of `++manx`. This is the output assigned to `posts`.
|
of `++manx`. This is the output assigned to `posts`.
|
||||||
|
|
||||||
Then, further down, we use [`;*`](link) to write the list to the page.
|
Then, further down, we use [`;*`]() to write the list to the page.
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
</hr>
|
</hr>
|
||||||
@ -800,7 +801,7 @@ Then, further down, we use [`;*`](link) to write the list to the page.
|
|||||||
|
|
||||||
#### Try it
|
#### Try it
|
||||||
|
|
||||||
http://ship-name.urbit.org/gen/main/pub/fab/guide/
|
http://ship-name.urbit.org/main/pub/fab/guide/
|
||||||
|
|
||||||
#### Bring it all together
|
#### Bring it all together
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ under the corresponding paths. You will need four files:
|
|||||||
|
|
||||||
When everything is in place, try it:
|
When everything is in place, try it:
|
||||||
|
|
||||||
http://localhost:8080/gen/main/pub/lead/
|
http://localhost:8080/main/pub/lead/
|
||||||
|
|
||||||
That URL should render a page and be self explanatory. Try adding names
|
That URL should render a page and be self explanatory. Try adding names
|
||||||
to the leaderboard and incrementing their scores. It's also fun to open
|
to the leaderboard and incrementing their scores. It's also fun to open
|
||||||
@ -63,7 +63,7 @@ Our application-specific resources are stored in `/main/pub/lead/src/`.
|
|||||||
`/main/pub/lead/src/main.js` updates the page and sends data.
|
`/main/pub/lead/src/main.js` updates the page and sends data.
|
||||||
|
|
||||||
We also use two utility scripts: `/gop/hart.js` and
|
We also use two utility scripts: `/gop/hart.js` and
|
||||||
`/gen/main/lib/urb.js`. These are the standard libraries for handling
|
`/main/lib/urb.js`. These are the standard libraries for handling
|
||||||
data transfer from a browser to Urbit, and are very frequently used.
|
data transfer from a browser to Urbit, and are very frequently used.
|
||||||
`hart.js` handles the page heartbeat, making regular AJAX requests so we
|
`hart.js` handles the page heartbeat, making regular AJAX requests so we
|
||||||
can keep track of subscribers, and `urb.js` offers a more complete set
|
can keep track of subscribers, and `urb.js` offers a more complete set
|
||||||
|
@ -62,13 +62,13 @@ repeated child node `'repeat'`. [`++poxo`]() prints our result in XML.
|
|||||||
;=
|
;=
|
||||||
;% |=(a=marl (turn a |=(b=manx ;script(src (poxo b));)))
|
;% |=(a=marl (turn a |=(b=manx ;script(src (poxo b));)))
|
||||||
; /gep/hart.js
|
; /gep/hart.js
|
||||||
; /gen/main/lib/urb.js
|
; /main/lib/urb.js
|
||||||
; //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js
|
; //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js
|
||||||
==
|
==
|
||||||
~[
|
~[
|
||||||
[[%script [%src "/gep/hart.js
|
[[%script [%src "/gep/hart.js
|
||||||
"] ~] ~]
|
"] ~] ~]
|
||||||
[[%script [%src "/gen/main/lib/urb.js
|
[[%script [%src "/main/lib/urb.js
|
||||||
"] ~] ~]
|
"] ~] ~]
|
||||||
[ [ %script
|
[ [ %script
|
||||||
[%src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js
|
[%src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js
|
||||||
@ -83,10 +83,10 @@ repeated child node `'repeat'`. [`++poxo`]() prints our result in XML.
|
|||||||
;=
|
;=
|
||||||
;% |=(a=marl (turn a |=(b=manx ;script(src (poxo b));)))
|
;% |=(a=marl (turn a |=(b=manx ;script(src (poxo b));)))
|
||||||
; /gep/hart.js
|
; /gep/hart.js
|
||||||
; /gen/main/lib/urb.js
|
; /main/lib/urb.js
|
||||||
; //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js
|
; //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js
|
||||||
==
|
==
|
||||||
"<script src="/gep/hart.js"></script><script src="/gen/main/lib/urb.js"></script><script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"></script>"
|
"<script src="/gep/hart.js"></script><script src="/main/lib/urb.js"></script><script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"></script>"
|
||||||
|
|
||||||
Here we go through a similar example, passing a list of urls for a
|
Here we go through a similar example, passing a list of urls for a
|
||||||
script tag to a gate that produces a `<script>` tag. Since we produce
|
script tag to a gate that produces a `<script>` tag. Since we produce
|
||||||
|
@ -14,13 +14,13 @@
|
|||||||
;script:'''
|
;script:'''
|
||||||
try{Typekit.load();}catch(e){}
|
try{Typekit.load();}catch(e){}
|
||||||
'''
|
'''
|
||||||
;link(type "text/css", rel "stylesheet", href "/gen/main/pub/radio/src/main.css");
|
;link(type "text/css", rel "stylesheet", href "/main/pub/radio/src/main.css");
|
||||||
;script(type "text/javascript", src "/gop/hart.js");
|
;script(type "text/javascript", src "/gop/hart.js");
|
||||||
;title: Radio
|
;title: Radio
|
||||||
==
|
==
|
||||||
;body
|
;body
|
||||||
;div#c;
|
;div#c;
|
||||||
;script(type "text/javascript", src "/gen/main/lib/urb.js");
|
;script(type "text/javascript", src "/main/lib/urb.js");
|
||||||
;script(type "text/javascript", src "/gen/main/pub/radio/src/main.js");
|
;script(type "text/javascript", src "/main/pub/radio/src/main.js");
|
||||||
==
|
==
|
||||||
==
|
==
|
||||||
|
165
main/pub/sole/fab/hymn.hook
Normal file
165
main/pub/sole/fab/hymn.hook
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
:: Console front-end
|
||||||
|
::
|
||||||
|
:::: /hook/hymn/fab/sole/pub
|
||||||
|
::
|
||||||
|
/? 310
|
||||||
|
|%
|
||||||
|
++ cdnj |=(a=tape ;script(src "//cdnjs.cloudflare.com/ajax/libs/{a}");)
|
||||||
|
--
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
::
|
||||||
|
^- manx
|
||||||
|
;html
|
||||||
|
;head
|
||||||
|
;title: Sole
|
||||||
|
;* %- turn :_ cdnj ^- wall
|
||||||
|
:~ "jquery/2.1.1/jquery.min.js"
|
||||||
|
"mousetrap/1.4.6/mousetrap.js"
|
||||||
|
"react/0.11.0/react.js"
|
||||||
|
==
|
||||||
|
;script(src "/~/at/main/lib/urb.js");
|
||||||
|
;script: urb.appl = 'dojo'
|
||||||
|
;style:'''
|
||||||
|
#term {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
#term * {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
==
|
||||||
|
;body
|
||||||
|
;div#err;
|
||||||
|
;div#term:""
|
||||||
|
;script(type "text/coffeescript") ;- %- trip
|
||||||
|
'''
|
||||||
|
[DOM,recl,rend] = [React.DOM, React.createClass, React.renderComponent]
|
||||||
|
[div, pre] = [DOM.div, DOM.pre]
|
||||||
|
Matr = recl render: ->
|
||||||
|
[pro,cur] = [@props.prompt + " ", @props.cursor + 1]
|
||||||
|
prompt = "#{pro.slice(0,cur)}\u0332#{pro.slice(cur)}"
|
||||||
|
lines = [prompt, @props.rows...]
|
||||||
|
div {}, lines.slice().reverse().map (lin)->
|
||||||
|
pre {}, lin
|
||||||
|
|
||||||
|
$ ->
|
||||||
|
termRev = 0
|
||||||
|
pressed = []
|
||||||
|
deltim = null
|
||||||
|
|
||||||
|
met = $('<pre>').text('m').css(display: 'none').appendTo(term).width()
|
||||||
|
subs = ""
|
||||||
|
# $(window).resize ->
|
||||||
|
# window.termWif = ($(term).width() / met).toFixed()
|
||||||
|
# path = "/new/#{termWif}"
|
||||||
|
# if path is subs
|
||||||
|
# return
|
||||||
|
# if subs
|
||||||
|
# urb.unsubscribe {path:subs}
|
||||||
|
# subs = path
|
||||||
|
# urb.subscribe {path}, (err,dat)->
|
||||||
|
# if err or dat.data.ok
|
||||||
|
# return;
|
||||||
|
# syncRev = dat.data.rev
|
||||||
|
# unless termRev > syncRev
|
||||||
|
# termRev = syncRev
|
||||||
|
# matr.setProps rows: dat.data.stak
|
||||||
|
# document.title = "Matrix" # XX debug
|
||||||
|
# $(window).resize()
|
||||||
|
|
||||||
|
matr = rend (Matr rows:[], prompt:"", cursor:1), term
|
||||||
|
flash = ($el, background)->
|
||||||
|
$el.css {background}
|
||||||
|
if background
|
||||||
|
setTimeout (()-> flash $el,''), 50
|
||||||
|
|
||||||
|
peer = (ruh) ->
|
||||||
|
switch false
|
||||||
|
when !ruh.map then ruh.map peer
|
||||||
|
# when !ruh.pro then matr.setProps prompt: ruh.pro
|
||||||
|
# when !ruh.hop then matr.setProps cursor: ruh.hop
|
||||||
|
# when !ruh.out
|
||||||
|
# matr.setProps rows: [ruh.out, matr.props.rows...]
|
||||||
|
# when !ruh.act then switch ruh.act
|
||||||
|
# when 'clr' then matr.setProps rows:[]
|
||||||
|
# when 'bel' then flash ($ 'body'), 'black'
|
||||||
|
# else throw "Unknown "+(JSON.stringify ruh)
|
||||||
|
else console.log ruh
|
||||||
|
|
||||||
|
urb.bind "/sole", {wire:"/"}, (err,d)->
|
||||||
|
if d.data then peer d.data
|
||||||
|
|
||||||
|
#later = (data)->
|
||||||
|
# if data
|
||||||
|
# pressed.push data
|
||||||
|
# clearTimeout deltim
|
||||||
|
# setTimeout (->
|
||||||
|
# if urb.reqq.length > 0
|
||||||
|
# return deltim = later()
|
||||||
|
# urb.send data: pressed
|
||||||
|
# pressed = []
|
||||||
|
# ), 500
|
||||||
|
|
||||||
|
Mousetrap.handleKey = (char, mod, e)->
|
||||||
|
norm = {
|
||||||
|
capslock: 'caps'
|
||||||
|
pageup: 'pgup'
|
||||||
|
pagedown: 'pgdn'
|
||||||
|
backspace: 'baxp'
|
||||||
|
enter: 'entr'
|
||||||
|
}
|
||||||
|
key =
|
||||||
|
if char.length is 1
|
||||||
|
if e.type is 'keypress'
|
||||||
|
str: char
|
||||||
|
else if e.type is 'keydown'
|
||||||
|
if char isnt 'space'
|
||||||
|
act: norm[char] ? char
|
||||||
|
else if e.type is 'keyup' and norm[key] is 'caps'
|
||||||
|
act: 'uncap'
|
||||||
|
if key
|
||||||
|
e.preventDefault()
|
||||||
|
urb.send mark: 'dill-belt', data: {mod,key}
|
||||||
|
|
||||||
|
# amod = (arr)->
|
||||||
|
# for i in arr
|
||||||
|
# unless mod.indexOf(i) < 0
|
||||||
|
# return yes
|
||||||
|
# no
|
||||||
|
# if key.str or key.act is 'baxp' or key.act is 'entr'
|
||||||
|
# termRev++
|
||||||
|
# [bot, rest...] = old = matr.props.rows
|
||||||
|
# matr.setProps rows:(
|
||||||
|
# switch key.act
|
||||||
|
# when 'baxp'
|
||||||
|
# if amod ['ctrl', 'meta']
|
||||||
|
# ['', rest...]
|
||||||
|
# else if amod ['alt']
|
||||||
|
# [(bot.replace /\ *[^ ]*$/, ''), rest...]
|
||||||
|
# else if bot and bot.length
|
||||||
|
# [bot.slice(0, -1), rest...]
|
||||||
|
# else if rest[0] and rest[0].length
|
||||||
|
# res = rest.slice()
|
||||||
|
# res[0] = res[0].slice(0, -1)
|
||||||
|
# res
|
||||||
|
# else rest
|
||||||
|
# when 'entr'
|
||||||
|
# ['', old...]
|
||||||
|
# when undefined
|
||||||
|
# if mod.length > 1 or (mod.length and !amod ['shift'])
|
||||||
|
# old
|
||||||
|
# else unless old and bot isnt null
|
||||||
|
# [key.str]
|
||||||
|
# #else if bot.length is termWif
|
||||||
|
# # [key.str, old...]
|
||||||
|
# else [bot + key.str, rest...]
|
||||||
|
# )
|
||||||
|
# document.title = "Matri" # XX debug
|
||||||
|
# later {mod, key}
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
==
|
||||||
|
;+ (cdnj "coffee-script/1.7.1/coffee-script.min.js")
|
||||||
|
== ==
|
@ -5,7 +5,7 @@
|
|||||||
;script(type "text/javascript", src "/gep/hart.js");
|
;script(type "text/javascript", src "/gep/hart.js");
|
||||||
==
|
==
|
||||||
;body
|
;body
|
||||||
;script(type "text/javascript", src "/gen/main/lib/urb.js");
|
;script(type "text/javascript", src "/main/lib/urb.js");
|
||||||
;script(type "text/javascript", src "/gen/main/pub/src/radio/main.js");
|
;script(type "text/javascript", src "/main/pub/src/radio/main.js");
|
||||||
==
|
==
|
||||||
==
|
==
|
@ -2,22 +2,34 @@
|
|||||||
::
|
::
|
||||||
:::: /hook/hymn/fab/chat/pub/
|
:::: /hook/hymn/fab/chat/pub/
|
||||||
::
|
::
|
||||||
|
|%
|
||||||
|
++ cdnj
|
||||||
|
|= a=wall ^- marl
|
||||||
|
%+ turn a
|
||||||
|
|= lib=tape
|
||||||
|
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/{lib}");
|
||||||
|
--
|
||||||
|
::
|
||||||
|
::::
|
||||||
|
::
|
||||||
^- manx
|
^- manx
|
||||||
;html
|
;html
|
||||||
;head
|
;head
|
||||||
;meta(charset "utf-8");
|
;meta(charset "utf-8");
|
||||||
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js");
|
;* %- cdnj :~
|
||||||
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js");
|
"jquery/2.1.1/jquery.js"
|
||||||
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/react/0.12.1/react.js");
|
"lodash.js/2.4.1/lodash.min.js"
|
||||||
;script(type "text/javascript", src "/gen/main/pub/talk/src/js/dep/director.js");
|
"react/0.13.1/react.js"
|
||||||
;meta(name "viewport", content "width=432, initial-scale=1");
|
==
|
||||||
;link(type "text/css", rel "stylesheet", href "/gen/main/pub/talk/src/css/main.css");
|
:: remove /~~ for anon
|
||||||
;script(type "text/javascript", src "/gop/hart.js");
|
;script(type "text/javascript", src "/~~/~/at/main/lib/urb.js");
|
||||||
|
;meta(name "viewport", content "width=device-width, height=device-height, ".
|
||||||
|
"initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0");
|
||||||
|
;link(type "text/css", rel "stylesheet", href "/main/pub/talk/src/css/main.css");
|
||||||
;title: Radio
|
;title: Radio
|
||||||
==
|
==
|
||||||
;body
|
;body
|
||||||
;div#c;
|
;div#c;
|
||||||
;script(type "text/javascript", src "/gen/main/lib/urb.js");
|
;script(type "text/javascript", src "/main/pub/talk/src/js/main.js");
|
||||||
;script(type "text/javascript", src "/gen/main/pub/talk/src/js/main.js");
|
|
||||||
==
|
==
|
||||||
==
|
==
|
||||||
|
@ -70,3 +70,15 @@
|
|||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "scp";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/scp-bold.woff");
|
||||||
|
font-weight: 600;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "scp";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/scp-black.woff");
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
@ -70,10 +70,25 @@
|
|||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "scp";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/scp-bold.woff");
|
||||||
|
font-weight: 600;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
@font-face {
|
||||||
|
font-family: "scp";
|
||||||
|
src: url("http://storage.googleapis.com/urbit-extra/scp-black.woff");
|
||||||
|
font-weight: 700;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
.iden,
|
.iden,
|
||||||
.audi,
|
.audi,
|
||||||
.time,
|
.time,
|
||||||
#length {
|
#length,
|
||||||
|
#where,
|
||||||
|
#who,
|
||||||
|
.station {
|
||||||
font-family: "scp";
|
font-family: "scp";
|
||||||
}
|
}
|
||||||
.join-ctrl input {
|
.join-ctrl input {
|
||||||
@ -92,14 +107,22 @@ body {
|
|||||||
.time {
|
.time {
|
||||||
font-size: 0.6rem;
|
font-size: 0.6rem;
|
||||||
letter-spacing: 0;
|
letter-spacing: 0;
|
||||||
|
}
|
||||||
|
.time {
|
||||||
font-weight: 200;
|
font-weight: 200;
|
||||||
}
|
}
|
||||||
|
#length {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
input.join,
|
input.join,
|
||||||
.iden,
|
.iden,
|
||||||
.audi,
|
.audi,
|
||||||
#station {
|
#station {
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
}
|
}
|
||||||
|
.iden {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
html,
|
html,
|
||||||
body {
|
body {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
@ -113,124 +136,148 @@ body {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
#c {
|
#c {
|
||||||
top: 0;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
#stations-container {
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 1rem;
|
top: 0rem;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
width: 24rem;
|
width: 58rem;
|
||||||
margin-left: -12rem;
|
margin-left: -29rem;
|
||||||
font-size: 4rem;
|
margin-bottom: 12rem;
|
||||||
}
|
}
|
||||||
#station-container {
|
#station-container {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
width: 58rem;
|
||||||
left: 50%;
|
max-height: 2.7rem;
|
||||||
width: 28rem;
|
background-color: #fff;
|
||||||
max-height: 2.6rem;
|
border-bottom: 0.3rem solid #000;
|
||||||
|
padding-bottom: 1rem;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin-left: -14rem;
|
z-index: 10;
|
||||||
|
-webkit-transition: max-height 0.2s;
|
||||||
|
}
|
||||||
|
#station #station-container {
|
||||||
padding-top: 1rem;
|
padding-top: 1rem;
|
||||||
background-color: #f5f5f5;
|
min-width: 30rem;
|
||||||
border-bottom: 3px solid #ededed;
|
text-align: right;
|
||||||
transition: max-height 0.15s ease-out;
|
|
||||||
}
|
}
|
||||||
#station-container:hover {
|
#writing-container {
|
||||||
max-height: 12rem;
|
bottom: 4rem;
|
||||||
transition: max-height 0.25s ease-in;
|
|
||||||
}
|
|
||||||
#stations-container,
|
|
||||||
#messages-container {
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
#messaging-container {
|
|
||||||
position: absolute;
|
|
||||||
top: 4rem;
|
|
||||||
left: 50%;
|
|
||||||
width: 24rem;
|
|
||||||
margin-left: -12rem;
|
|
||||||
margin-bottom: 4rem;
|
|
||||||
}
|
|
||||||
#station > div {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
#station-meta {
|
|
||||||
margin-right: 1rem;
|
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
#sources-container {
|
#messages-container {
|
||||||
width: 6rem;
|
vertical-align: top;
|
||||||
float: right;
|
margin-top: 4rem;
|
||||||
margin: 1rem -6rem 0 0;
|
|
||||||
}
|
}
|
||||||
#members {
|
.caret,
|
||||||
margin-left: 2rem;
|
.circle {
|
||||||
}
|
|
||||||
#station .iden {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.station {
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 9rem;
|
|
||||||
margin-bottom: 0.3rem;
|
|
||||||
cursor: pointer;
|
|
||||||
font-weight: 200;
|
|
||||||
}
|
}
|
||||||
#stations .station {
|
.caret {
|
||||||
display: block;
|
width: 0;
|
||||||
width: 24rem;
|
height: 0;
|
||||||
}
|
border-top: 6px solid transparent;
|
||||||
.station .name {
|
border-right: 6px solid transparent;
|
||||||
padding: 0.3rem;
|
|
||||||
border-bottom: 6px solid transparent;
|
border-bottom: 6px solid transparent;
|
||||||
|
border-left: 6px solid #000;
|
||||||
|
margin-top: 2px;
|
||||||
}
|
}
|
||||||
.station .name:hover {
|
.circle {
|
||||||
background-color: #f5f5f5;
|
width: 6px;
|
||||||
border-bottom: 6px solid #ededed;
|
height: 6px;
|
||||||
|
border: 3px solid #000;
|
||||||
|
border-radius: 6px;
|
||||||
|
margin-top: 2px;
|
||||||
}
|
}
|
||||||
.station > div {
|
#station-container #where .caret {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
-webkit-transform-origin: 0 50%;
|
||||||
|
-webkit-transition: -webkit-transform 0.2s;
|
||||||
|
}
|
||||||
|
#head {
|
||||||
|
width: 100%;
|
||||||
|
height: 4rem;
|
||||||
|
}
|
||||||
|
#station-container h1 {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 0.6rem;
|
||||||
|
letter-spacing: 0.06rem;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
line-height: 1.2rem;
|
||||||
}
|
}
|
||||||
.toggle {
|
#audience,
|
||||||
width: 0.4rem;
|
#who {
|
||||||
height: 0.4rem;
|
width: 34.6rem;
|
||||||
border: 2px solid #000;
|
|
||||||
margin-right: 0.6rem;
|
|
||||||
}
|
}
|
||||||
.toggle.active {
|
#stations,
|
||||||
background-color: #000;
|
#where {
|
||||||
|
width: 17.3rem;
|
||||||
|
}
|
||||||
|
#stations,
|
||||||
|
#audience,
|
||||||
|
#head > div {
|
||||||
|
display: inline-block;
|
||||||
|
text-align: right;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
#head > div {
|
||||||
|
height: 2rem;
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
}
|
||||||
|
#where .caret {
|
||||||
|
border-left-color: #f00;
|
||||||
|
margin-left: 1rem;
|
||||||
|
}
|
||||||
|
#where > span,
|
||||||
|
#who > span {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
#who > span {
|
||||||
|
margin-left: 1rem;
|
||||||
|
}
|
||||||
|
#members > div {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#members > div div {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
#members .audi {
|
||||||
|
margin-right: 0.3rem;
|
||||||
|
}
|
||||||
|
#members .iden {
|
||||||
|
min-width: 10rem;
|
||||||
|
}
|
||||||
|
.station div {
|
||||||
|
display: inline-block;
|
||||||
}
|
}
|
||||||
.station .remove {
|
.station .remove {
|
||||||
display: none;
|
opacity: 0;
|
||||||
float: right;
|
cursor: pointer;
|
||||||
margin-left: 1rem;
|
width: 0.6rem;
|
||||||
|
margin-right: 0.6rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: #f00;
|
color: #f00;
|
||||||
}
|
}
|
||||||
.station:hover .remove {
|
.station:hover .remove {
|
||||||
display: inline;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
#sources-container .station {
|
|
||||||
font-family: "scp";
|
|
||||||
font-weight: 500;
|
|
||||||
text-transform: lowercase;
|
|
||||||
}
|
|
||||||
.sour-ctrl {
|
|
||||||
margin-bottom: 0.16rem;
|
|
||||||
}
|
|
||||||
.join-ctrl input,
|
|
||||||
.sour-ctrl input {
|
.sour-ctrl input {
|
||||||
|
font-family: "scp";
|
||||||
border: none;
|
border: none;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
|
text-align: right;
|
||||||
|
line-height: 1rem;
|
||||||
|
outline: none;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.sour-ctrl input::-webkit-input-placeholder {
|
.sour-ctrl input::-webkit-input-placeholder {
|
||||||
font-family: "bau";
|
font-family: "scp";
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
font-weight: 200;
|
font-weight: 600;
|
||||||
margin-left: 0.6rem;
|
margin-left: 0.6rem;
|
||||||
color: #0003ff;
|
color: #000;
|
||||||
|
}
|
||||||
|
.sour-ctrl input:focus::-webkit-input-placeholder {
|
||||||
|
color: #fff;
|
||||||
}
|
}
|
||||||
.message {
|
.message {
|
||||||
padding-top: 0.3rem;
|
padding-top: 0.3rem;
|
||||||
@ -245,8 +292,9 @@ body {
|
|||||||
#messages .message:hover .time {
|
#messages .message:hover .time {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
.time {
|
#messages .message .ship,
|
||||||
margin-right: 0.6rem;
|
#messages .message .audi > div {
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.member {
|
.member {
|
||||||
width: 12rem;
|
width: 12rem;
|
||||||
@ -255,55 +303,90 @@ body {
|
|||||||
#messages {
|
#messages {
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
.message.pending {
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
.message.say .mess {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
text-decoration: underline;
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
.mess,
|
.mess,
|
||||||
.iden,
|
.iden,
|
||||||
.attr > div,
|
|
||||||
#station .member div,
|
#station .member div,
|
||||||
#writing {
|
#writing {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
.iden > div {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
.mess,
|
.mess,
|
||||||
#writing,
|
#writing,
|
||||||
#length {
|
#length {
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
.attr > div {
|
||||||
|
max-width: 16rem;
|
||||||
|
}
|
||||||
.attr {
|
.attr {
|
||||||
color: #d7d7d7;
|
text-align: right;
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 0.3rem;
|
||||||
|
min-width: 16rem;
|
||||||
}
|
}
|
||||||
.attr .iden {
|
.attr .iden {
|
||||||
color: #000;
|
margin-left: 0.3rem;
|
||||||
}
|
}
|
||||||
.attr > div {
|
.audi {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.audi > div {
|
||||||
margin-right: 0.3rem;
|
margin-right: 0.3rem;
|
||||||
|
max-width: 8rem;
|
||||||
|
}
|
||||||
|
.iden > div {
|
||||||
|
max-width: 10rem;
|
||||||
|
}
|
||||||
|
.iden > div,
|
||||||
|
.audi > div {
|
||||||
|
display: inline-block;
|
||||||
|
background-color: #fff;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
-webkit-transition: max-width 0.2s;
|
||||||
|
}
|
||||||
|
.audi > div:last-child {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.iden > div:hover,
|
||||||
|
.audi > div:hover {
|
||||||
|
position: relative;
|
||||||
|
-webkit-transition: max-width 0.2s;
|
||||||
}
|
}
|
||||||
.mess {
|
.mess {
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
line-height: 1.6rem;
|
|
||||||
letter-spacing: 0.03rem;
|
letter-spacing: 0.03rem;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
max-width: 31rem;
|
margin-left: 0.3rem;
|
||||||
}
|
}
|
||||||
.ship {
|
.mess,
|
||||||
font-weight: 600;
|
#writing,
|
||||||
|
.iden > div:hover,
|
||||||
|
.audi > div:hover {
|
||||||
|
max-width: 30rem;
|
||||||
}
|
}
|
||||||
.ship.talk:before {
|
#writing {
|
||||||
content: "...";
|
font-size: 0.9rem;
|
||||||
margin-left: -1.3rem;
|
min-height: 1.6rem;
|
||||||
margin-right: 0.3rem;
|
min-width: 1.3rem;
|
||||||
width: 1rem;
|
outline: none;
|
||||||
margin-top: -0.4rem;
|
background-color: #eee;
|
||||||
vertical-align: middle;
|
padding: 0.3rem 0.1rem;
|
||||||
display: inline-block;
|
margin-left: 0.2rem;
|
||||||
line-height: 0.2rem;
|
margin-top: -0.3rem;
|
||||||
letter-spacing: -0.1rem;
|
|
||||||
}
|
}
|
||||||
#writing-container {
|
#writing:focus {
|
||||||
bottom: 4rem;
|
background-color: #fff;
|
||||||
margin-bottom: 1rem;
|
|
||||||
float: left;
|
|
||||||
}
|
}
|
||||||
.writing {
|
.writing {
|
||||||
padding-top: 0.3rem;
|
padding-top: 0.3rem;
|
||||||
@ -313,60 +396,25 @@ body {
|
|||||||
margin-left: 1rem;
|
margin-left: 1rem;
|
||||||
margin-top: 1.2rem;
|
margin-top: 1.2rem;
|
||||||
}
|
}
|
||||||
#writing {
|
.writing .iden {
|
||||||
font-size: 0.9rem;
|
display: block;
|
||||||
min-height: 1.6rem;
|
text-align: right;
|
||||||
line-height: 1.6rem;
|
width: 100%;
|
||||||
min-width: 1.3rem;
|
}
|
||||||
padding: 0;
|
.writing .iden .ship {
|
||||||
outline: none;
|
margin-right: 0.3rem;
|
||||||
|
}
|
||||||
|
#audi {
|
||||||
|
display: inline-block;
|
||||||
background-color: #eee;
|
background-color: #eee;
|
||||||
}
|
padding: 0.3rem 0.1rem;
|
||||||
#writing:focus {
|
margin-top: -0.3rem;
|
||||||
background-color: #fff;
|
margin-right: -0.2rem;
|
||||||
}
|
|
||||||
#station h1 {
|
|
||||||
display: inline-block;
|
|
||||||
margin: 0;
|
|
||||||
font-weight: 200;
|
|
||||||
font-size: 2rem;
|
|
||||||
text-transform: lowercase;
|
|
||||||
}
|
|
||||||
input.join {
|
|
||||||
font-size: 4rem;
|
|
||||||
background-color: #fff;
|
|
||||||
outline: none;
|
outline: none;
|
||||||
width: 24rem;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
#station input.join {
|
.valid-false {
|
||||||
font-family: "scp";
|
color: #ff2f2f;
|
||||||
font-size: 0.7rem;
|
|
||||||
line-height: 1rem;
|
|
||||||
width: 12rem;
|
|
||||||
}
|
|
||||||
input.join::-webkit-input-placeholder {
|
|
||||||
color: #0003ff;
|
|
||||||
}
|
|
||||||
input.join:focus::-webkit-input-placeholder {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
.pending {
|
|
||||||
color: #ccc;
|
|
||||||
}
|
|
||||||
a.up {
|
|
||||||
height: 2rem;
|
|
||||||
margin-top: 0.6rem;
|
|
||||||
vertical-align: middle;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
.arow-up {
|
|
||||||
display: inline-block;
|
|
||||||
margin: 0 0.5rem 0 0.5rem;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
border-left: 9px solid transparent;
|
|
||||||
border-right: 9px solid transparent;
|
|
||||||
border-bottom: 9px solid #000;
|
|
||||||
}
|
}
|
||||||
#scrolling {
|
#scrolling {
|
||||||
display: none;
|
display: none;
|
||||||
@ -383,67 +431,92 @@ a.up {
|
|||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
@media (max-width: 40rem) {
|
@media only screen and (min-width: 1024px) {
|
||||||
#c {
|
#station-container:hover {
|
||||||
left: 0;
|
max-height: 30rem;
|
||||||
margin-left: 0;
|
height: auto;
|
||||||
width: 24rem;
|
-webkit-transition: max-height 0.2s;
|
||||||
}
|
}
|
||||||
#messages-container,
|
#station-container:hover #where .caret {
|
||||||
#writing-container {
|
transform: rotate(90deg);
|
||||||
margin-left: 1rem;
|
transform-origin: 0 50%;
|
||||||
}
|
-webkit-transform: rotate(90deg);
|
||||||
#stations-container,
|
-webkit-transition: -webkit-transform 0.2s;
|
||||||
#station-container {
|
}
|
||||||
position: relative;
|
}
|
||||||
float: left;
|
@media only screen and (max-width: 1170px) {
|
||||||
}
|
#station-container.open {
|
||||||
#stations-container {
|
max-height: 30rem;
|
||||||
width: 8rem;
|
height: auto;
|
||||||
}
|
-webkit-transition: max-height 0.2s;
|
||||||
#station-container {
|
}
|
||||||
left: auto;
|
#station-container.open #where .caret {
|
||||||
}
|
transform: rotate(90deg);
|
||||||
.station {
|
transform-origin: 0 50%;
|
||||||
width: 5rem;
|
-webkit-transform: rotate(90deg);
|
||||||
}
|
-webkit-transition: -webkit-transform 0.2s;
|
||||||
.attr {
|
}
|
||||||
display: block;
|
#c,
|
||||||
text-align: left;
|
#station-container {
|
||||||
width: 2rem;
|
width: 96%;
|
||||||
margin-right: 1rem;
|
left: 0;
|
||||||
}
|
margin-left: 2%;
|
||||||
.message {
|
margin-right: 2%;
|
||||||
height: 1.6rem;
|
}
|
||||||
}
|
.mess,
|
||||||
.stations,
|
#writing {
|
||||||
.iden,
|
max-width: 40%;
|
||||||
#station {
|
line-height: 1.2rem;
|
||||||
font-size: 0.5rem;
|
}
|
||||||
}
|
.attr,
|
||||||
.station .remove {
|
#stations,
|
||||||
display: inline;
|
#where {
|
||||||
font-size: 0.6rem;
|
width: 20%;
|
||||||
line-height: 0.6rem;
|
min-width: 20%;
|
||||||
}
|
}
|
||||||
.ship.talk:before {
|
#audience,
|
||||||
margin-left: -0.3rem;
|
#who {
|
||||||
margin-right: 0;
|
width: 60%;
|
||||||
}
|
}
|
||||||
.attr {
|
#writing {
|
||||||
width: 4rem;
|
padding: 0.1rem;
|
||||||
}
|
}
|
||||||
.iden > div {
|
#station-container.m-down,
|
||||||
display: block;
|
#station-container.m-up {
|
||||||
}
|
position: absolute;
|
||||||
.attr > .time {
|
}
|
||||||
display: none;
|
#station-container.m-down.m-fixed {
|
||||||
}
|
position: fixed;
|
||||||
.mess {
|
top: 0;
|
||||||
max-width: 12rem;
|
}
|
||||||
margin-bottom: 1rem;
|
}
|
||||||
}
|
@media only screen and (min-device-width: 320px) and (max-device-width: 480px) {
|
||||||
#writing {
|
.mess,
|
||||||
max-width: 12rem;
|
#writing {
|
||||||
|
max-width: 70%;
|
||||||
|
line-height: 1.2rem;
|
||||||
|
}
|
||||||
|
#stations,
|
||||||
|
#audience {
|
||||||
|
width: 96%;
|
||||||
|
}
|
||||||
|
#stations,
|
||||||
|
#audience,
|
||||||
|
.sour-ctrl input {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
#station {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
#station-container.open {
|
||||||
|
max-height: 30rem;
|
||||||
|
height: auto;
|
||||||
|
-webkit-transition: max-height 0.2s;
|
||||||
|
}
|
||||||
|
#station-container.open #where .caret {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
transform-origin: 0 50%;
|
||||||
|
-webkit-transform: rotate(90deg);
|
||||||
|
-webkit-transition: -webkit-transform 0.2s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,16 @@
|
|||||||
|
//
|
||||||
|
// fonts first
|
||||||
|
//
|
||||||
|
|
||||||
@import 'fonts'
|
@import 'fonts'
|
||||||
|
|
||||||
.iden
|
.iden
|
||||||
.audi
|
.audi
|
||||||
.time
|
.time
|
||||||
#length
|
#length
|
||||||
|
#where
|
||||||
|
#who
|
||||||
|
.station
|
||||||
font-family "scp"
|
font-family "scp"
|
||||||
|
|
||||||
.join-ctrl input
|
.join-ctrl input
|
||||||
@ -22,18 +29,30 @@ body
|
|||||||
.time
|
.time
|
||||||
font-size .6rem
|
font-size .6rem
|
||||||
letter-spacing 0
|
letter-spacing 0
|
||||||
|
|
||||||
|
.time
|
||||||
font-weight 200
|
font-weight 200
|
||||||
|
|
||||||
|
#length
|
||||||
|
font-weight 500
|
||||||
|
|
||||||
input.join
|
input.join
|
||||||
.iden
|
.iden
|
||||||
.audi
|
.audi
|
||||||
#station
|
#station
|
||||||
font-size .7rem
|
font-size .7rem
|
||||||
|
|
||||||
|
.iden
|
||||||
|
font-weight 600
|
||||||
|
|
||||||
html
|
html
|
||||||
body
|
body
|
||||||
font-size 18px
|
font-size 18px
|
||||||
|
|
||||||
|
//
|
||||||
|
// containers
|
||||||
|
//
|
||||||
|
|
||||||
body
|
body
|
||||||
background-color #fefefe
|
background-color #fefefe
|
||||||
padding 0
|
padding 0
|
||||||
@ -43,125 +62,161 @@ body
|
|||||||
display none
|
display none
|
||||||
|
|
||||||
#c
|
#c
|
||||||
top 0
|
|
||||||
background-color #fff
|
|
||||||
|
|
||||||
#stations-container
|
|
||||||
position absolute
|
position absolute
|
||||||
top 1rem
|
top 0rem
|
||||||
left 50%
|
left 50%
|
||||||
width 24rem
|
width 58rem
|
||||||
margin-left -12rem
|
margin-left -29rem
|
||||||
font-size 4rem
|
margin-bottom 12rem
|
||||||
|
|
||||||
#station-container
|
#station-container
|
||||||
position fixed
|
position fixed
|
||||||
top 0
|
width 58rem
|
||||||
left 50%
|
max-height 2.7rem
|
||||||
width 28rem
|
background-color white
|
||||||
max-height 2.6rem
|
border-bottom .3rem solid black
|
||||||
|
padding-bottom 1rem
|
||||||
overflow hidden
|
overflow hidden
|
||||||
margin-left -14rem
|
z-index 10
|
||||||
|
-webkit-transition max-height .2s
|
||||||
|
|
||||||
|
#station #station-container
|
||||||
padding-top 1rem
|
padding-top 1rem
|
||||||
background-color #f5f5f5
|
min-width 30rem
|
||||||
border-bottom 3px solid #ededed
|
text-align right
|
||||||
transition max-height 0.15s ease-out
|
|
||||||
|
|
||||||
#station-container:hover
|
#writing-container
|
||||||
max-height 12rem
|
bottom 4rem
|
||||||
transition max-height 0.25s ease-in
|
|
||||||
|
|
||||||
#stations-container
|
|
||||||
#messages-container
|
|
||||||
vertical-align top
|
|
||||||
|
|
||||||
#messaging-container
|
|
||||||
position absolute
|
|
||||||
top 4rem
|
|
||||||
left 50%
|
|
||||||
width 24rem
|
|
||||||
margin-left -12rem
|
|
||||||
margin-bottom 4rem
|
|
||||||
|
|
||||||
#station > div
|
|
||||||
display inline-block
|
|
||||||
|
|
||||||
#station-meta
|
|
||||||
margin-right 1rem
|
|
||||||
margin-bottom 1rem
|
margin-bottom 1rem
|
||||||
|
|
||||||
#sources-container
|
#messages-container
|
||||||
width 6rem
|
vertical-align top
|
||||||
float right
|
margin-top 4rem
|
||||||
margin 1rem -6rem 0 0
|
|
||||||
|
|
||||||
#members
|
//
|
||||||
margin-left 2rem
|
// components
|
||||||
|
//
|
||||||
|
|
||||||
#station .iden
|
.caret
|
||||||
display block
|
.circle
|
||||||
|
|
||||||
.station
|
|
||||||
display inline-block
|
display inline-block
|
||||||
width 9rem
|
|
||||||
margin-bottom .3rem
|
|
||||||
cursor pointer
|
|
||||||
font-weight 200
|
|
||||||
|
|
||||||
#stations .station
|
.caret
|
||||||
display block
|
width 0
|
||||||
width 24rem
|
height 0
|
||||||
|
border-top 6px solid transparent
|
||||||
.station .name
|
border-right 6px solid transparent
|
||||||
padding .3rem
|
|
||||||
border-bottom 6px solid transparent
|
border-bottom 6px solid transparent
|
||||||
|
border-left 6px solid #000
|
||||||
|
margin-top 2px
|
||||||
|
|
||||||
.station .name:hover
|
.circle
|
||||||
background-color #f5f5f5
|
width 6px
|
||||||
border-bottom 6px solid #ededed
|
height 6px
|
||||||
|
border 3px solid black
|
||||||
|
border-radius 6px
|
||||||
|
margin-top 2px
|
||||||
|
|
||||||
.station > div
|
//
|
||||||
|
// station
|
||||||
|
//
|
||||||
|
|
||||||
|
#station-container #where .caret
|
||||||
|
-webkit-transform rotate(0deg)
|
||||||
|
-webkit-transform-origin 0 50%
|
||||||
|
-webkit-transition -webkit-transform .2s
|
||||||
|
|
||||||
|
#head
|
||||||
|
width 100%
|
||||||
|
height 4rem
|
||||||
|
|
||||||
|
#station-container h1
|
||||||
|
font-weight 500
|
||||||
|
font-size .6rem
|
||||||
|
letter-spacing .06rem
|
||||||
display inline-block
|
display inline-block
|
||||||
|
line-height 1.2rem
|
||||||
|
|
||||||
.toggle
|
#audience
|
||||||
width .4rem
|
#who
|
||||||
height .4rem
|
width 34.6rem
|
||||||
border 2px solid #000
|
|
||||||
margin-right .6rem
|
|
||||||
|
|
||||||
.toggle.active
|
#stations
|
||||||
background-color #000
|
#where
|
||||||
|
width 17.3rem
|
||||||
|
|
||||||
|
#stations
|
||||||
|
#audience
|
||||||
|
#head > div
|
||||||
|
display inline-block
|
||||||
|
text-align right
|
||||||
|
vertical-align top
|
||||||
|
|
||||||
|
#head > div
|
||||||
|
height 2rem
|
||||||
|
margin-top 1.5rem
|
||||||
|
|
||||||
|
#where .caret
|
||||||
|
border-left-color red
|
||||||
|
margin-left 1rem
|
||||||
|
|
||||||
|
#where > span
|
||||||
|
#who > span
|
||||||
|
vertical-align top
|
||||||
|
|
||||||
|
#who > span
|
||||||
|
margin-left 1rem
|
||||||
|
|
||||||
|
#members > div
|
||||||
|
display block
|
||||||
|
|
||||||
|
#members > div div
|
||||||
|
display inline-block
|
||||||
|
vertical-align bottom
|
||||||
|
|
||||||
|
#members .audi
|
||||||
|
margin-right .3rem
|
||||||
|
|
||||||
|
#members .iden
|
||||||
|
min-width 10rem
|
||||||
|
|
||||||
|
.station div
|
||||||
|
display inline-block
|
||||||
|
|
||||||
.station .remove
|
.station .remove
|
||||||
display none
|
opacity 0
|
||||||
float right
|
cursor pointer
|
||||||
margin-left 1rem
|
width .6rem
|
||||||
|
margin-right .6rem
|
||||||
font-weight 600
|
font-weight 600
|
||||||
color #ff0000
|
color #ff0000
|
||||||
|
|
||||||
.station:hover .remove
|
.station:hover .remove
|
||||||
display inline
|
opacity 1
|
||||||
|
|
||||||
#sources-container .station
|
// add source
|
||||||
font-family "scp"
|
|
||||||
font-weight 500
|
|
||||||
text-transform lowercase
|
|
||||||
|
|
||||||
// hate this.
|
|
||||||
.sour-ctrl
|
|
||||||
margin-bottom .16rem
|
|
||||||
|
|
||||||
.join-ctrl input
|
|
||||||
.sour-ctrl input
|
.sour-ctrl input
|
||||||
|
font-family "scp"
|
||||||
border none
|
border none
|
||||||
font-weight 400
|
font-weight 400
|
||||||
|
text-align right
|
||||||
|
line-height 1rem
|
||||||
|
outline none
|
||||||
|
cursor pointer
|
||||||
|
|
||||||
.sour-ctrl input::-webkit-input-placeholder
|
.sour-ctrl input::-webkit-input-placeholder
|
||||||
font-family "bau"
|
font-family "scp"
|
||||||
font-size 1rem
|
font-size 1rem
|
||||||
font-weight 200
|
font-weight 600
|
||||||
margin-left .6rem
|
margin-left .6rem
|
||||||
color #0003FF
|
color #000
|
||||||
|
|
||||||
|
.sour-ctrl input:focus::-webkit-input-placeholder
|
||||||
|
color white
|
||||||
|
|
||||||
|
//
|
||||||
|
// messages
|
||||||
|
//
|
||||||
|
|
||||||
.message
|
.message
|
||||||
padding-top .3rem
|
padding-top .3rem
|
||||||
@ -176,8 +231,9 @@ body
|
|||||||
#messages .message:hover .time
|
#messages .message:hover .time
|
||||||
opacity 1
|
opacity 1
|
||||||
|
|
||||||
.time
|
#messages .message .ship
|
||||||
margin-right .6rem
|
#messages .message .audi > div
|
||||||
|
cursor pointer
|
||||||
|
|
||||||
.member
|
.member
|
||||||
width 12rem
|
width 12rem
|
||||||
@ -186,55 +242,95 @@ body
|
|||||||
#messages
|
#messages
|
||||||
height auto
|
height auto
|
||||||
|
|
||||||
|
.message.pending
|
||||||
|
color #ccc
|
||||||
|
|
||||||
|
.message.say .mess
|
||||||
|
font-style italic
|
||||||
|
|
||||||
|
a
|
||||||
|
text-decoration underline
|
||||||
|
color inherit
|
||||||
|
|
||||||
.mess
|
.mess
|
||||||
.iden
|
.iden
|
||||||
.attr > div
|
|
||||||
#station .member div
|
#station .member div
|
||||||
#writing
|
#writing
|
||||||
display inline-block
|
display inline-block
|
||||||
|
|
||||||
.iden > div
|
|
||||||
display inline
|
|
||||||
|
|
||||||
.mess
|
.mess
|
||||||
#writing
|
#writing
|
||||||
#length
|
#length
|
||||||
vertical-align top
|
vertical-align top
|
||||||
|
|
||||||
|
.attr > div
|
||||||
|
max-width 16rem
|
||||||
|
|
||||||
.attr
|
.attr
|
||||||
color #D7D7D7
|
text-align right
|
||||||
|
display inline-block
|
||||||
|
margin-right .3rem
|
||||||
|
min-width 16rem
|
||||||
|
|
||||||
.attr .iden
|
.attr .iden
|
||||||
color #000
|
margin-left .3rem
|
||||||
|
|
||||||
.attr > div
|
.audi
|
||||||
|
white-space nowrap
|
||||||
|
|
||||||
|
.audi > div
|
||||||
margin-right .3rem
|
margin-right .3rem
|
||||||
|
max-width 8rem
|
||||||
|
|
||||||
|
.iden > div
|
||||||
|
max-width 10rem
|
||||||
|
|
||||||
|
.iden > div
|
||||||
|
.audi > div
|
||||||
|
display inline-block
|
||||||
|
background-color white
|
||||||
|
overflow hidden
|
||||||
|
white-space nowrap
|
||||||
|
text-overflow ellipsis
|
||||||
|
-webkit-transition max-width .2s
|
||||||
|
|
||||||
|
.audi > div:last-child
|
||||||
|
margin-right 0
|
||||||
|
|
||||||
|
.iden > div:hover
|
||||||
|
.audi > div:hover
|
||||||
|
position relative
|
||||||
|
-webkit-transition max-width .2s
|
||||||
|
|
||||||
.mess
|
.mess
|
||||||
font-size .9rem
|
font-size .9rem
|
||||||
line-height 1.6rem
|
|
||||||
letter-spacing .03rem
|
letter-spacing .03rem
|
||||||
word-wrap break-word
|
word-wrap break-word
|
||||||
max-width 31rem
|
margin-left .3rem
|
||||||
|
|
||||||
.ship
|
.mess
|
||||||
font-weight 600
|
#writing
|
||||||
|
.iden > div:hover
|
||||||
|
.audi > div:hover
|
||||||
|
max-width 30rem
|
||||||
|
|
||||||
.ship.talk:before
|
//
|
||||||
content "..."
|
// writing
|
||||||
margin-left -1.3rem
|
//
|
||||||
margin-right .3rem
|
|
||||||
width 1rem
|
|
||||||
margin-top -.4rem
|
|
||||||
vertical-align middle
|
|
||||||
display inline-block
|
|
||||||
line-height .2rem
|
|
||||||
letter-spacing -.1rem
|
|
||||||
|
|
||||||
#writing-container
|
#writing
|
||||||
bottom 4rem
|
font-size .9rem
|
||||||
margin-bottom 1rem
|
min-height 1.6rem
|
||||||
float left
|
min-width 1.3rem
|
||||||
|
outline none
|
||||||
|
background-color #eee
|
||||||
|
padding .3rem .1rem
|
||||||
|
margin-left .2rem
|
||||||
|
margin-top -.3rem
|
||||||
|
|
||||||
|
|
||||||
|
#writing:focus
|
||||||
|
background-color #fff
|
||||||
|
|
||||||
.writing
|
.writing
|
||||||
padding-top .3rem
|
padding-top .3rem
|
||||||
@ -244,60 +340,29 @@ body
|
|||||||
margin-left 1rem
|
margin-left 1rem
|
||||||
margin-top 1.2rem
|
margin-top 1.2rem
|
||||||
|
|
||||||
#writing
|
.writing .iden
|
||||||
font-size .9rem
|
display block
|
||||||
min-height 1.6rem
|
text-align right
|
||||||
line-height 1.6rem
|
width 100%
|
||||||
min-width 1.3rem
|
|
||||||
padding 0
|
.writing .iden .ship
|
||||||
outline none
|
margin-right .3rem
|
||||||
|
|
||||||
|
#audi
|
||||||
|
display inline-block
|
||||||
background-color #eee
|
background-color #eee
|
||||||
|
padding .3rem .1rem
|
||||||
#writing:focus
|
margin-top -.3rem
|
||||||
background-color #fff
|
margin-right -.2rem
|
||||||
|
|
||||||
#station h1
|
|
||||||
display inline-block
|
|
||||||
margin 0
|
|
||||||
font-weight 200
|
|
||||||
font-size 2rem
|
|
||||||
text-transform lowercase
|
|
||||||
|
|
||||||
input.join
|
|
||||||
font-size 4rem
|
|
||||||
background-color #fff
|
|
||||||
outline none
|
outline none
|
||||||
width 24rem
|
overflow hidden
|
||||||
|
|
||||||
#station input.join
|
.valid-false
|
||||||
font-family "scp"
|
color #ff2f2f
|
||||||
font-size .7rem
|
|
||||||
line-height 1rem
|
|
||||||
width 12rem
|
|
||||||
|
|
||||||
input.join::-webkit-input-placeholder
|
//
|
||||||
color #0003FF
|
// scrolling
|
||||||
|
//
|
||||||
input.join:focus::-webkit-input-placeholder
|
|
||||||
color #fff
|
|
||||||
|
|
||||||
.pending
|
|
||||||
color #ccc
|
|
||||||
|
|
||||||
a.up
|
|
||||||
height 2rem
|
|
||||||
margin-top .6rem
|
|
||||||
vertical-align middle
|
|
||||||
display inline-block
|
|
||||||
|
|
||||||
.arow-up
|
|
||||||
display inline-block
|
|
||||||
margin 0 .5rem 0 .5rem
|
|
||||||
width 0
|
|
||||||
height 0
|
|
||||||
border-left 9px solid transparent
|
|
||||||
border-right 9px solid transparent
|
|
||||||
border-bottom 9px solid #000
|
|
||||||
|
|
||||||
#scrolling
|
#scrolling
|
||||||
display none
|
display none
|
||||||
@ -314,66 +379,4 @@ a.up
|
|||||||
font-size .8rem
|
font-size .8rem
|
||||||
text-transform uppercase
|
text-transform uppercase
|
||||||
|
|
||||||
@media (max-width: 40rem)
|
@import 'mobile'
|
||||||
#c
|
|
||||||
left 0
|
|
||||||
margin-left 0
|
|
||||||
width 24rem
|
|
||||||
|
|
||||||
#messages-container
|
|
||||||
#writing-container
|
|
||||||
margin-left 1rem
|
|
||||||
|
|
||||||
#stations-container
|
|
||||||
#station-container
|
|
||||||
position relative
|
|
||||||
float left
|
|
||||||
|
|
||||||
#stations-container
|
|
||||||
width 8rem
|
|
||||||
|
|
||||||
#station-container
|
|
||||||
left auto
|
|
||||||
|
|
||||||
.station
|
|
||||||
width 5rem
|
|
||||||
|
|
||||||
.attr
|
|
||||||
display block
|
|
||||||
text-align left
|
|
||||||
width 2rem
|
|
||||||
margin-right 1rem
|
|
||||||
|
|
||||||
.message
|
|
||||||
height 1.6rem
|
|
||||||
|
|
||||||
.stations
|
|
||||||
.iden
|
|
||||||
#station
|
|
||||||
font-size .5rem
|
|
||||||
|
|
||||||
.station .remove
|
|
||||||
display inline
|
|
||||||
font-size .6rem
|
|
||||||
line-height .6rem
|
|
||||||
|
|
||||||
.ship.talk:before
|
|
||||||
margin-left -.3rem
|
|
||||||
margin-right 0
|
|
||||||
|
|
||||||
.attr
|
|
||||||
width 4rem
|
|
||||||
|
|
||||||
.iden > div
|
|
||||||
display block
|
|
||||||
|
|
||||||
.attr > .time
|
|
||||||
display none
|
|
||||||
|
|
||||||
.mess
|
|
||||||
max-width 12rem
|
|
||||||
margin-bottom 1rem
|
|
||||||
|
|
||||||
#writing
|
|
||||||
max-width 12rem
|
|
||||||
|
|
||||||
|
91
main/pub/talk/src/css/mobile.styl
Normal file
91
main/pub/talk/src/css/mobile.styl
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
/* computers --------*/
|
||||||
|
@media only screen and (min-width: 1024px)
|
||||||
|
#station-container:hover
|
||||||
|
max-height 30rem
|
||||||
|
height auto
|
||||||
|
-webkit-transition max-height .2s
|
||||||
|
|
||||||
|
#station-container:hover #where .caret
|
||||||
|
transform rotate(90deg)
|
||||||
|
transform-origin 0 50%
|
||||||
|
-webkit-transform rotate(90deg)
|
||||||
|
-webkit-transition -webkit-transform .2s
|
||||||
|
|
||||||
|
/* laptops / small screens ----------- */
|
||||||
|
@media only screen and (max-width: 1170px)
|
||||||
|
#station-container.open
|
||||||
|
max-height 30rem
|
||||||
|
height auto
|
||||||
|
-webkit-transition max-height .2s
|
||||||
|
|
||||||
|
#station-container.open #where .caret
|
||||||
|
transform rotate(90deg)
|
||||||
|
transform-origin 0 50%
|
||||||
|
-webkit-transform rotate(90deg)
|
||||||
|
-webkit-transition -webkit-transform .2s
|
||||||
|
|
||||||
|
#c
|
||||||
|
#station-container
|
||||||
|
width 96%
|
||||||
|
left 0
|
||||||
|
margin-left 2%
|
||||||
|
margin-right 2%
|
||||||
|
|
||||||
|
.mess
|
||||||
|
#writing
|
||||||
|
max-width 40%
|
||||||
|
line-height 1.2rem
|
||||||
|
|
||||||
|
.attr
|
||||||
|
#stations
|
||||||
|
#where
|
||||||
|
width 20%
|
||||||
|
min-width 20%
|
||||||
|
|
||||||
|
#audience
|
||||||
|
#who
|
||||||
|
width 60%
|
||||||
|
|
||||||
|
#writing
|
||||||
|
padding .1rem
|
||||||
|
|
||||||
|
#station-container.m-down
|
||||||
|
#station-container.m-up
|
||||||
|
position absolute
|
||||||
|
|
||||||
|
#station-container.m-down.m-fixed
|
||||||
|
position fixed
|
||||||
|
top 0
|
||||||
|
|
||||||
|
/* tablets + phones ----------- */
|
||||||
|
// @media only screen and (min-width: 320px) and (max-width: 1024px)
|
||||||
|
|
||||||
|
/* phones portrait and landscape ----------- */
|
||||||
|
@media only screen and (min-device-width: 320px) and (max-device-width: 480px)
|
||||||
|
.mess
|
||||||
|
#writing
|
||||||
|
max-width 70%
|
||||||
|
line-height 1.2rem
|
||||||
|
|
||||||
|
#stations
|
||||||
|
#audience
|
||||||
|
width 96%
|
||||||
|
|
||||||
|
#stations
|
||||||
|
#audience
|
||||||
|
.sour-ctrl input
|
||||||
|
text-align left
|
||||||
|
|
||||||
|
#station
|
||||||
|
cursor pointer
|
||||||
|
|
||||||
|
#station-container.open
|
||||||
|
max-height 30rem
|
||||||
|
height auto
|
||||||
|
-webkit-transition max-height .2s
|
||||||
|
|
||||||
|
#station-container.open #where .caret
|
||||||
|
transform rotate(90deg)
|
||||||
|
transform-origin 0 50%
|
||||||
|
-webkit-transform rotate(90deg)
|
||||||
|
-webkit-transition -webkit-transform .2s
|
@ -1,7 +1,5 @@
|
|||||||
MessageDispatcher = require '../dispatcher/Dispatcher.coffee'
|
MessageDispatcher = require '../dispatcher/Dispatcher.coffee'
|
||||||
|
|
||||||
# hm
|
|
||||||
|
|
||||||
module.exports =
|
module.exports =
|
||||||
loadMessages: (grams,get) ->
|
loadMessages: (grams,get) ->
|
||||||
MessageDispatcher.handleServerAction
|
MessageDispatcher.handleServerAction
|
||||||
@ -29,12 +27,11 @@ module.exports =
|
|||||||
type:"messages-fetch"
|
type:"messages-fetch"
|
||||||
window.chat.MessagePersistence.get station,start,end
|
window.chat.MessagePersistence.get station,start,end
|
||||||
|
|
||||||
sendMessage: (station,message,audience) ->
|
sendMessage: (message,audience) ->
|
||||||
serial = window.util.uuid32()
|
serial = window.util.uuid32()
|
||||||
|
|
||||||
if station[0] isnt "~" then station = "~"+window.urb.ship+"/"+station
|
audience.push window.util.mainStationPath window.urb.user
|
||||||
|
audience = _.uniq audience
|
||||||
if audience.length is 0 then audience.push station
|
|
||||||
|
|
||||||
_audi = {}
|
_audi = {}
|
||||||
for k,v of audience
|
for k,v of audience
|
||||||
@ -53,10 +50,17 @@ module.exports =
|
|||||||
bouquet:[]
|
bouquet:[]
|
||||||
speech:
|
speech:
|
||||||
lin:
|
lin:
|
||||||
say:false
|
say:true
|
||||||
txt:message
|
txt:message
|
||||||
date: Date.now()
|
date: Date.now()
|
||||||
|
|
||||||
|
if message[0] is "@"
|
||||||
|
_message.thought.statement.speech.lin.txt = _message.thought.statement.speech.lin.txt.slice(1).trim()
|
||||||
|
_message.thought.statement.speech.lin.say = false
|
||||||
|
|
||||||
|
if window.urb.util.isURL(message)
|
||||||
|
_message.thought.statement.speech = {url: message}
|
||||||
|
|
||||||
MessageDispatcher.handleViewAction
|
MessageDispatcher.handleViewAction
|
||||||
type:"message-send"
|
type:"message-send"
|
||||||
message:_message
|
message:_message
|
||||||
|
@ -17,6 +17,11 @@ module.exports =
|
|||||||
type:"station-set-audience"
|
type:"station-set-audience"
|
||||||
audience:audience
|
audience:audience
|
||||||
|
|
||||||
|
setValidAudience: (valid) ->
|
||||||
|
StationDispatcher.handleViewAction
|
||||||
|
type:"station-set-valid-audience"
|
||||||
|
valid:valid
|
||||||
|
|
||||||
toggleAudience: (station) ->
|
toggleAudience: (station) ->
|
||||||
StationDispatcher.handleViewAction
|
StationDispatcher.handleViewAction
|
||||||
type:"station-audience-toggle"
|
type:"station-audience-toggle"
|
||||||
@ -53,11 +58,10 @@ module.exports =
|
|||||||
type:"stations-load"
|
type:"stations-load"
|
||||||
stations:stations
|
stations:stations
|
||||||
|
|
||||||
loadMembers: (station,members) ->
|
loadMembers: (members) ->
|
||||||
StationDispatcher.handleServerAction
|
StationDispatcher.handleServerAction
|
||||||
type:"members-load"
|
type:"members-load"
|
||||||
members:members
|
members:members
|
||||||
station:station
|
|
||||||
|
|
||||||
createStation: (station) ->
|
createStation: (station) ->
|
||||||
StationDispatcher.handleViewAction
|
StationDispatcher.handleViewAction
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
moment = require 'moment-timezone'
|
moment = require 'moment-timezone'
|
||||||
|
|
||||||
recl = React.createClass
|
recl = React.createClass
|
||||||
[div,input,textarea] = [React.DOM.div,React.DOM.input,React.DOM.textarea]
|
[div,br,input,textarea,a] = [React.DOM.div,React.DOM.br,React.DOM.input,React.DOM.textarea,React.DOM.a]
|
||||||
|
|
||||||
MessageStore = require '../stores/MessageStore.coffee'
|
|
||||||
StationStore = require '../stores/StationStore.coffee'
|
|
||||||
MessageActions = require '../actions/MessageActions.coffee'
|
MessageActions = require '../actions/MessageActions.coffee'
|
||||||
|
MessageStore = require '../stores/MessageStore.coffee'
|
||||||
StationActions = require '../actions/StationActions.coffee'
|
StationActions = require '../actions/StationActions.coffee'
|
||||||
Member = require './MemberComponent.coffee'
|
StationStore = require '../stores/StationStore.coffee'
|
||||||
|
Member = require './MemberComponent.coffee'
|
||||||
|
|
||||||
Message = recl
|
Message = recl
|
||||||
lz: (n) -> if n<10 then "0#{n}" else "#{n}"
|
lz: (n) -> if n<10 then "0#{n}" else "#{n}"
|
||||||
@ -19,27 +19,40 @@ Message = recl
|
|||||||
s = @lz d.getSeconds()
|
s = @lz d.getSeconds()
|
||||||
"~#{h}.#{m}.#{s}"
|
"~#{h}.#{m}.#{s}"
|
||||||
|
|
||||||
|
_handleAudi: (e) ->
|
||||||
|
audi = _.map $(e.target).closest('.audi').find('div'), (div) -> return $(div).text()
|
||||||
|
@props._handleAudi audi
|
||||||
|
|
||||||
|
_handlePm: (e) ->
|
||||||
|
return if not @props._handlePm
|
||||||
|
user = $(e.target).closest('.iden').text().slice(1)
|
||||||
|
@props._handlePm user
|
||||||
|
|
||||||
render: ->
|
render: ->
|
||||||
# pendingClass = if @props.pending isnt "received" then "pending" else ""
|
# pendingClass = if @props.pending isnt "received" then "pending" else ""
|
||||||
delivery = _.uniq _.pluck @props.thought.audience, "delivery"
|
delivery = _.uniq _.pluck @props.thought.audience, "delivery"
|
||||||
pendingClass = if delivery.indexOf("received") isnt -1 then "received" else "pending"
|
klass = if delivery.indexOf("received") isnt -1 then " received" else " pending"
|
||||||
|
if @props.thought.statement.speech?.lin?.say is false then klass += " say"
|
||||||
if pendingClass is "pending"
|
if @props.thought.statement.speech?.url then klass += " url"
|
||||||
console.log @props.thought
|
|
||||||
console.log delivery
|
|
||||||
|
|
||||||
name = if @props.name then @props.name else ""
|
name = if @props.name then @props.name else ""
|
||||||
audi = _.remove _.keys(@props.thought.audience), (stat) =>
|
audi = _.keys @props.thought.audience
|
||||||
stat isnt "~"+window.urb.ship+"/"+@props.station
|
audi = _.without audi,window.util.mainStationPath window.urb.user
|
||||||
audi = audi.join " "
|
audi = window.util.clipAudi audi
|
||||||
|
audi = audi.map (_audi) -> (div {}, _audi)
|
||||||
|
|
||||||
div {className:"message "+pendingClass}, [
|
if @props.thought.statement.speech?.lin?.txt then txt = @props.thought.statement.speech.lin.txt
|
||||||
|
if @props.thought.statement.speech?.url
|
||||||
|
url = @props.thought.statement.speech.url.url
|
||||||
|
txt = (a {href:url,target:"_blank"}, url)
|
||||||
|
|
||||||
|
div {className:"message #{klass}"}, [
|
||||||
(div {className:"attr"}, [
|
(div {className:"attr"}, [
|
||||||
(Member {ship:@props.ship}, "")
|
div {onClick:@_handleAudi,className:"audi"}, audi
|
||||||
div {className:"audi"}, "#{audi}"
|
(div {onClick:@_handlePm}, (React.createElement Member,{ship:@props.ship}))
|
||||||
div {className:"time"}, @convTime @props.thought.statement.date
|
div {className:"time"}, @convTime @props.thought.statement.date
|
||||||
])
|
])
|
||||||
div {className:"mess"}, @props.thought.statement.speech.lin.txt
|
div {className:"mess"}, txt
|
||||||
]
|
]
|
||||||
|
|
||||||
module.exports = recl
|
module.exports = recl
|
||||||
@ -51,7 +64,7 @@ module.exports = recl
|
|||||||
last:MessageStore.getLast()
|
last:MessageStore.getLast()
|
||||||
fetching:MessageStore.getFetching()
|
fetching:MessageStore.getFetching()
|
||||||
listening:MessageStore.getListening()
|
listening:MessageStore.getListening()
|
||||||
station:StationStore.getStation()
|
station:window.util.mainStation()
|
||||||
stations:StationStore.getStations()
|
stations:StationStore.getStations()
|
||||||
configs:StationStore.getConfigs()
|
configs:StationStore.getConfigs()
|
||||||
typing:MessageStore.getTyping()
|
typing:MessageStore.getTyping()
|
||||||
@ -78,7 +91,8 @@ module.exports = recl
|
|||||||
componentDidMount: ->
|
componentDidMount: ->
|
||||||
MessageStore.addChangeListener @_onChangeStore
|
MessageStore.addChangeListener @_onChangeStore
|
||||||
StationStore.addChangeListener @_onChangeStore
|
StationStore.addChangeListener @_onChangeStore
|
||||||
if @state.station and @state.listening.indexOf(@state.station) is -1
|
if @state.station and
|
||||||
|
@state.listening.indexOf(@state.station) is -1
|
||||||
MessageActions.listenStation @state.station
|
MessageActions.listenStation @state.station
|
||||||
checkMore = @checkMore
|
checkMore = @checkMore
|
||||||
$(window).on 'scroll', checkMore
|
$(window).on 'scroll', checkMore
|
||||||
@ -87,9 +101,8 @@ module.exports = recl
|
|||||||
componentDidUpdate: ->
|
componentDidUpdate: ->
|
||||||
$window = $(window)
|
$window = $(window)
|
||||||
if @lastLength
|
if @lastLength
|
||||||
h = $('.message').height() * (@length-@lastLength)
|
st = $window.height()
|
||||||
st = $window.scrollTop()
|
$window.scrollTop st
|
||||||
$window.scrollTop st+h
|
|
||||||
@lastLength = null
|
@lastLength = null
|
||||||
else
|
else
|
||||||
if $('#writing-container').length > 0
|
if $('#writing-container').length > 0
|
||||||
@ -101,17 +114,25 @@ module.exports = recl
|
|||||||
|
|
||||||
_onChangeStore: -> @setState @stateFromStore()
|
_onChangeStore: -> @setState @stateFromStore()
|
||||||
|
|
||||||
|
_handlePm: (user) ->
|
||||||
|
audi = [
|
||||||
|
window.util.mainStationPath(user)
|
||||||
|
window.util.mainStationPath(window.urb.user)
|
||||||
|
]
|
||||||
|
if user is window.urb.user then audi.pop()
|
||||||
|
StationActions.setAudience audi
|
||||||
|
|
||||||
|
_handleAudi: (audi) -> StationActions.setAudience audi
|
||||||
|
|
||||||
render: ->
|
render: ->
|
||||||
station = @state.station
|
station = @state.station
|
||||||
_station = "~"+window.urb.ship+"/"+station
|
_station = "~"+window.urb.ship+"/"+station
|
||||||
sources = _.clone @state.configs[@state.station]?.sources ? []
|
sources = _.clone @state.configs[@state.station]?.sources ? []
|
||||||
sources.push _station
|
sources.push _station
|
||||||
_messages = _.filter @state.messages, (_message) ->
|
_messages = @state.messages
|
||||||
audience = _.keys(_message.thought.audience)
|
|
||||||
_.intersection(sources,audience).length > 0
|
|
||||||
_messages = _.sortBy _messages, (_message) ->
|
_messages = _.sortBy _messages, (_message) ->
|
||||||
_message.pending = _message.thought.audience[station]
|
_message.pending = _message.thought.audience[station]
|
||||||
_message.thought.statement.time
|
_message.thought.statement.date
|
||||||
|
|
||||||
@last = _messages[_messages.length-1]
|
@last = _messages[_messages.length-1]
|
||||||
@length = _messages.length
|
@length = _messages.length
|
||||||
@ -122,5 +143,7 @@ module.exports = recl
|
|||||||
|
|
||||||
messages = _messages.map (_message) =>
|
messages = _messages.map (_message) =>
|
||||||
_message.station = @state.station
|
_message.station = @state.station
|
||||||
Message _message, ""
|
_message._handlePm = @_handlePm
|
||||||
|
_message._handleAudi = @_handleAudi
|
||||||
|
React.createElement Message,_message
|
||||||
div {id: "messages"}, messages
|
div {id: "messages"}, messages
|
@ -1,15 +0,0 @@
|
|||||||
recl = React.createClass
|
|
||||||
[div,input,textarea] = [React.DOM.div,React.DOM.input,React.DOM.textarea]
|
|
||||||
|
|
||||||
StationComponent = require './StationComponent.coffee'
|
|
||||||
MessagesComponent = require './MessagesComponent.coffee'
|
|
||||||
WritingComponent = require './WritingComponent.coffee'
|
|
||||||
|
|
||||||
module.exports = recl
|
|
||||||
render: ->
|
|
||||||
div {id:"d"}, "asdf"
|
|
||||||
# div {id:"d"}, [
|
|
||||||
# (div {id:'station-container'}, (StationComponent {}, ""))
|
|
||||||
# (div {id:'messages-container'}, (MessagesComponent {}, ""))
|
|
||||||
# (div {id:'writing-container'}, (WritingComponent {}, ""))
|
|
||||||
# ]
|
|
@ -15,7 +15,7 @@ module.exports = recl
|
|||||||
stateFromStore: -> {
|
stateFromStore: -> {
|
||||||
audi:StationStore.getAudience()
|
audi:StationStore.getAudience()
|
||||||
members:StationStore.getMembers()
|
members:StationStore.getMembers()
|
||||||
station:StationStore.getStation()
|
station:window.util.mainStation()
|
||||||
stations:StationStore.getStations()
|
stations:StationStore.getStations()
|
||||||
configs:StationStore.getConfigs()
|
configs:StationStore.getConfigs()
|
||||||
typing:StationStore.getTyping()
|
typing:StationStore.getTyping()
|
||||||
@ -35,14 +35,15 @@ module.exports = recl
|
|||||||
componentWillUnmount: ->
|
componentWillUnmount: ->
|
||||||
StationStore.removeChangeListener @_onChangeStore
|
StationStore.removeChangeListener @_onChangeStore
|
||||||
|
|
||||||
_toggleAudi: (e) ->
|
|
||||||
$e = $(e.target).closest('.station')
|
|
||||||
station = $e.find('.path').text()
|
|
||||||
StationActions.toggleAudience station
|
|
||||||
|
|
||||||
_onChangeStore: ->
|
_onChangeStore: ->
|
||||||
@setState @stateFromStore()
|
@setState @stateFromStore()
|
||||||
|
|
||||||
|
_toggleOpen: (e) ->
|
||||||
|
if $(e.target).closest('.sour-ctrl').length > 0
|
||||||
|
return
|
||||||
|
$("#station-container").toggleClass 'open'
|
||||||
|
|
||||||
_keyUp: (e) ->
|
_keyUp: (e) ->
|
||||||
if e.keyCode is 13
|
if e.keyCode is 13
|
||||||
v = @$input.val()
|
v = @$input.val()
|
||||||
@ -51,51 +52,50 @@ module.exports = recl
|
|||||||
_sources.push v
|
_sources.push v
|
||||||
StationActions.setSources @state.station,_sources
|
StationActions.setSources @state.station,_sources
|
||||||
@$input.val('')
|
@$input.val('')
|
||||||
|
@$input.blur()
|
||||||
|
|
||||||
_remove: (e) ->
|
_remove: (e) ->
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
_station = $(e.target).attr "data-station"
|
_station = $(e.target).attr "data-station"
|
||||||
_sources = _.clone @state.configs[@state.station].sources
|
_sources = _.clone @state.configs[@state.station].sources
|
||||||
_sources.slice _sources.indexOf(_station),1
|
_sources.splice _sources.indexOf(_station),1
|
||||||
StationActions.setSources @state.station,_sources
|
StationActions.setSources @state.station,_sources
|
||||||
|
|
||||||
render: ->
|
render: ->
|
||||||
parts = []
|
parts = []
|
||||||
members = []
|
members = []
|
||||||
|
|
||||||
if @state.station and @state.members[@state.station]
|
if @state.station and @state.members
|
||||||
members = _.map @state.members[@state.station], (state,member) ->
|
members = _.map @state.members, (stations,member) ->
|
||||||
Member {ship:member,presence:state.presence}
|
audi = _.map stations,(presence,station) -> (div {className:"audi"}, station)
|
||||||
|
(div {}, [audi,(React.createElement Member, {ship:member})])
|
||||||
else
|
else
|
||||||
members = ""
|
members = ""
|
||||||
|
|
||||||
sourceInput = [(input {className:"join",onKeyUp:@_keyUp,placeholder:"+"}, "")]
|
sourceInput = [(input {className:"join",onKeyUp:@_keyUp,placeholder:"+"}, "")]
|
||||||
sourceCtrl = div {className:"sour-ctrl"}, sourceInput
|
sourceCtrl = div {className:"sour-ctrl"},sourceInput
|
||||||
|
|
||||||
sources = []
|
sources = []
|
||||||
if @state.station and @state.configs[@state.station]
|
if @state.station and @state.configs[@state.station]
|
||||||
_remove = @_remove
|
_remove = @_remove
|
||||||
_sources = _.clone @state.configs[@state.station].sources
|
_sources = _.clone @state.configs[@state.station].sources
|
||||||
_sources.push "twitter/hoontap"
|
|
||||||
sources = _.map _sources,(source) =>
|
sources = _.map _sources,(source) =>
|
||||||
toggleClass = "toggle "
|
(div {className:"station"}, [
|
||||||
if @state.audi.indexOf(source) isnt -1 then toggleClass += "active"
|
(div {className:"remove",onClick:_remove,"data-station":source},"×"),
|
||||||
(div {className:"station",onClick:@_toggleAudi}, [
|
(div {className:"path"}, source)
|
||||||
(div {className:toggleClass})
|
|
||||||
(div {className:"path"}, source),
|
|
||||||
(div {className:"remove",onClick:_remove,"data-station":source},"×")
|
|
||||||
])
|
])
|
||||||
|
|
||||||
else
|
else
|
||||||
sources = ""
|
sources = ""
|
||||||
|
|
||||||
station = []
|
head = (div {id:"head"},
|
||||||
station.push (a {className:"up",href:"\#/"}, [(div {className:"arow-up"}, "")])
|
[(div {id:"where"},["/talk",(div {className:"caret"},"")]),
|
||||||
station.push (h1 {},@state.station)
|
(div {id:"who"},[(div {className:"circle"},""),"~#{window.urb.user}"])
|
||||||
station.push (div {id:"members"},members)
|
]
|
||||||
|
)
|
||||||
|
|
||||||
parts.push (div {id:"station-container"}, (div {id:"station-meta"},station))
|
parts.push head
|
||||||
parts.push (div {id:"sources-container"}, [(div {class:"sources-list"},sources),sourceCtrl])
|
parts.push (div {id:"stations"}, [(h1 {}, "Listening to"),(div {},sources),sourceCtrl])
|
||||||
|
parts.push (div {id:"audience"}, (div {},[(h1 {}, "Talking to"),(div {id:"members"},members)]))
|
||||||
|
|
||||||
div {id:"station"},parts
|
div {id:"station",onClick:@_toggleOpen},parts
|
||||||
|
@ -7,15 +7,15 @@ StationActions = require '../actions/StationActions.coffee'
|
|||||||
module.exports = recl
|
module.exports = recl
|
||||||
stateFromStore: -> {
|
stateFromStore: -> {
|
||||||
stations: StationStore.getStations()
|
stations: StationStore.getStations()
|
||||||
station: StationStore.getStation()
|
station: "~zod/court"
|
||||||
}
|
}
|
||||||
|
|
||||||
getInitialState: -> @stateFromStore()
|
getInitialState: -> @stateFromStore()
|
||||||
|
|
||||||
componentDidMount: ->
|
componentDidMount: ->
|
||||||
@$el = $(@getDOMNode())
|
@$el = $ @getDOMNode()
|
||||||
@$add = $('#stations .add')
|
@$add = $ '#stations .add'
|
||||||
@$input = @$el.find('input')
|
@$input = @$el.find 'input'
|
||||||
StationStore.addChangeListener @_onChangeStore
|
StationStore.addChangeListener @_onChangeStore
|
||||||
|
|
||||||
componentWillUnmount: ->
|
componentWillUnmount: ->
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
recl = React.createClass
|
recl = React.createClass
|
||||||
[div,input,textarea] = [React.DOM.div,React.DOM.input,React.DOM.textarea]
|
[div,br,input,textarea] = [React.DOM.div,React.DOM.br,React.DOM.input,React.DOM.textarea]
|
||||||
|
|
||||||
MessageActions = require '../actions/MessageActions.coffee'
|
MessageActions = require '../actions/MessageActions.coffee'
|
||||||
|
MessageStore = require '../stores/MessageStore.coffee'
|
||||||
StationActions = require '../actions/StationActions.coffee'
|
StationActions = require '../actions/StationActions.coffee'
|
||||||
StationStore = require '../stores/StationStore.coffee'
|
StationStore = require '../stores/StationStore.coffee'
|
||||||
Member = require './MemberComponent.coffee'
|
Member = require './MemberComponent.coffee'
|
||||||
|
|
||||||
module.exports = recl
|
module.exports = recl
|
||||||
set: ->
|
set: ->
|
||||||
@ -13,12 +14,16 @@ module.exports = recl
|
|||||||
get: ->
|
get: ->
|
||||||
if window.localStorage then window.localStorage.getItem 'writing'
|
if window.localStorage then window.localStorage.getItem 'writing'
|
||||||
|
|
||||||
stateFromStore: -> {
|
stateFromStore: ->
|
||||||
audi:StationStore.getAudience()
|
s =
|
||||||
members:StationStore.getMembers()
|
audi:StationStore.getAudience()
|
||||||
typing:StationStore.getTyping()
|
ludi:MessageStore.getLastAudience()
|
||||||
station:StationStore.getStation()
|
members:StationStore.getMembers()
|
||||||
}
|
typing:StationStore.getTyping()
|
||||||
|
valid:StationStore.getValidAudience()
|
||||||
|
s.audi = _.without s.audi, window.util.mainStationPath window.urb.user
|
||||||
|
s.ludi = _.without s.ludi, window.util.mainStationPath window.urb.user
|
||||||
|
s
|
||||||
|
|
||||||
getInitialState: -> @stateFromStore()
|
getInitialState: -> @stateFromStore()
|
||||||
|
|
||||||
@ -35,16 +40,39 @@ module.exports = recl
|
|||||||
@typing true
|
@typing true
|
||||||
|
|
||||||
sendMessage: ->
|
sendMessage: ->
|
||||||
MessageActions.sendMessage @state.station,@$writing.text(),@state.audi
|
if @_validateAudi() is false
|
||||||
|
$('#audi').focus()
|
||||||
|
return
|
||||||
|
if @state.audi.length is 0 and $('#audi').text().trim().length > 0
|
||||||
|
audi = @state.ludi
|
||||||
|
@_setAudi()
|
||||||
|
else
|
||||||
|
audi = @state.audi
|
||||||
|
audi = window.util.expandAudi audi
|
||||||
|
MessageActions.sendMessage @$writing.text().trim(),audi
|
||||||
@$length.text "0/69"
|
@$length.text "0/69"
|
||||||
@$writing.text('')
|
@$writing.text('')
|
||||||
@set()
|
@set()
|
||||||
@typing false
|
@typing false
|
||||||
|
|
||||||
_keyDown: (e) ->
|
_audiKeyDown: (e) ->
|
||||||
if e.keyCode is 13
|
if e.keyCode is 13
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
@sendMessage()
|
setTimeout () ->
|
||||||
|
$('#writing').focus()
|
||||||
|
,0
|
||||||
|
return false
|
||||||
|
|
||||||
|
_writingKeyUp: (e) ->
|
||||||
|
if not window.urb.util.isURL @$writing.text()
|
||||||
|
@$length.toggleClass('valid-false',(@$writing.text().length > 62))
|
||||||
|
|
||||||
|
_writingKeyDown: (e) ->
|
||||||
|
if e.keyCode is 13
|
||||||
|
txt = @$writing.text()
|
||||||
|
e.preventDefault()
|
||||||
|
if (txt.length > 0 and txt.length < 63) or window.urb.util.isURL @$writing.text()
|
||||||
|
@sendMessage()
|
||||||
return false
|
return false
|
||||||
@_input()
|
@_input()
|
||||||
@set()
|
@set()
|
||||||
@ -52,21 +80,50 @@ module.exports = recl
|
|||||||
_input: (e) ->
|
_input: (e) ->
|
||||||
text = @$writing.text()
|
text = @$writing.text()
|
||||||
length = text.length
|
length = text.length
|
||||||
geturl = new RegExp "(^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))", "g"
|
# geturl = new RegExp "(^|[ \t\r\n])((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))", "g"
|
||||||
urls = text.match(geturl)
|
# urls = text.match(geturl)
|
||||||
if urls isnt null and urls.length > 0
|
# if urls isnt null and urls.length > 0
|
||||||
for url in urls
|
# for url in urls
|
||||||
length -= url.length
|
# length -= url.length
|
||||||
length += 10
|
# length += 10
|
||||||
@$length.text "#{length}/69"
|
@$length.text "#{length}/62"
|
||||||
if length >= 69
|
|
||||||
@$writing.text(@$writing.text().substr(0,69))
|
|
||||||
@cursorAtEnd()
|
|
||||||
e.preventDefault() if e
|
|
||||||
return false
|
|
||||||
|
|
||||||
_setFocus: -> @$writing.focus()
|
_setFocus: -> @$writing.focus()
|
||||||
|
|
||||||
|
_validateAudiPart: (a) ->
|
||||||
|
if a[0] isnt "~"
|
||||||
|
return false
|
||||||
|
if a.indexOf("/") isnt -1
|
||||||
|
_a = a.split("/")
|
||||||
|
if _a[1].length is 0
|
||||||
|
return false
|
||||||
|
ship = _a[0]
|
||||||
|
else
|
||||||
|
ship = a
|
||||||
|
if ship.length < 3
|
||||||
|
return false
|
||||||
|
return true
|
||||||
|
|
||||||
|
_validateAudi: ->
|
||||||
|
v = $('#audi').text()
|
||||||
|
v = v.trim()
|
||||||
|
if v.length is 0
|
||||||
|
return true
|
||||||
|
v = v.split " "
|
||||||
|
for a in v
|
||||||
|
a = a.trim()
|
||||||
|
valid = @_validateAudiPart(a)
|
||||||
|
valid
|
||||||
|
|
||||||
|
_setAudi: ->
|
||||||
|
valid = @_validateAudi()
|
||||||
|
StationActions.setValidAudience valid
|
||||||
|
if valid is true
|
||||||
|
v = $('#audi').text()
|
||||||
|
v = v.split " "
|
||||||
|
v = window.util.expandAudi v
|
||||||
|
StationActions.setAudience v
|
||||||
|
|
||||||
getTime: ->
|
getTime: ->
|
||||||
d = new Date()
|
d = new Date()
|
||||||
seconds = d.getSeconds()
|
seconds = d.getSeconds()
|
||||||
@ -85,6 +142,7 @@ module.exports = recl
|
|||||||
componentDidMount: ->
|
componentDidMount: ->
|
||||||
window.util.sendMessage = @sendMessage
|
window.util.sendMessage = @sendMessage
|
||||||
StationStore.addChangeListener @_onChangeStore
|
StationStore.addChangeListener @_onChangeStore
|
||||||
|
MessageStore.addChangeListener @_onChangeStore
|
||||||
@$el = $ @getDOMNode()
|
@$el = $ @getDOMNode()
|
||||||
@$length = $('#length')
|
@$length = $('#length')
|
||||||
@$writing = $('#writing')
|
@$writing = $('#writing')
|
||||||
@ -108,12 +166,21 @@ module.exports = recl
|
|||||||
ship = if iden then iden.ship else user
|
ship = if iden then iden.ship else user
|
||||||
name = if iden then iden.name else ""
|
name = if iden then iden.name else ""
|
||||||
|
|
||||||
k = "writing"
|
audi = if @state.audi.length is 0 then @state.ludi else @state.audi
|
||||||
k+= " hidden" if not @state?.station
|
audi = window.util.clipAudi audi
|
||||||
|
|
||||||
div {className:k,onClick:@_setFocus}, [
|
k = "writing"
|
||||||
|
|
||||||
|
div {className:k}, [
|
||||||
(div {className:"attr"}, [
|
(div {className:"attr"}, [
|
||||||
(Member iden, "")
|
(div {
|
||||||
|
id:"audi"
|
||||||
|
className:"audi valid-#{@state.valid}"
|
||||||
|
contentEditable:true
|
||||||
|
onKeyDown: @_audiKeyDown
|
||||||
|
onBlur:@_setAudi
|
||||||
|
}, audi.join(" "))
|
||||||
|
(React.createElement Member, iden)
|
||||||
(div {className:"time"}, @getTime())
|
(div {className:"time"}, @getTime())
|
||||||
])
|
])
|
||||||
(div {
|
(div {
|
||||||
@ -123,8 +190,9 @@ module.exports = recl
|
|||||||
onBlur: @_blur
|
onBlur: @_blur
|
||||||
onInput: @_input
|
onInput: @_input
|
||||||
onPaste: @_input
|
onPaste: @_input
|
||||||
onKeyDown: @_keyDown
|
onKeyDown: @_writingKeyDown
|
||||||
|
onKeyUp: @_writingKeyUp
|
||||||
onFocus: @cursorAtEnd
|
onFocus: @cursorAtEnd
|
||||||
}, "")
|
}, "")
|
||||||
div {id:"length"}, "0/69"
|
div {id:"length"}, "0/62"
|
||||||
]
|
]
|
@ -1,111 +1,186 @@
|
|||||||
$(() ->
|
$(() ->
|
||||||
StationActions = require './actions/StationActions.coffee'
|
StationActions = require './actions/StationActions.coffee'
|
||||||
|
|
||||||
rend = React.render
|
rend = React.render
|
||||||
|
|
||||||
window.chat = {}
|
window.chat = {}
|
||||||
window.chat.MessagePersistence = require './persistence/MessagePersistence.coffee'
|
window.chat.MessagePersistence = require './persistence/MessagePersistence.coffee'
|
||||||
window.chat.StationPersistence = require './persistence/StationPersistence.coffee'
|
window.chat.StationPersistence = require './persistence/StationPersistence.coffee'
|
||||||
|
|
||||||
window.util =
|
window.util =
|
||||||
mainStation: ->
|
mainStations: ["court","floor","porch"]
|
||||||
switch window.urb.user.length
|
|
||||||
when 3
|
|
||||||
return "court"
|
|
||||||
when 5
|
|
||||||
return "floor"
|
|
||||||
when 13
|
|
||||||
return "porch"
|
|
||||||
|
|
||||||
create: (name) ->
|
mainStationPath: (user) -> "~#{user}/#{window.util.mainStation(user)}"
|
||||||
window.chat.StationPersistence.createStation name, (err,res) ->
|
|
||||||
|
|
||||||
subscribe: (name) ->
|
mainStation: (user) ->
|
||||||
window.chat.StationPersistence.addSource "main",window.urb.ship,["~zod/#{name}"]
|
if not user then user = window.urb.user
|
||||||
|
switch user.length
|
||||||
|
when 3
|
||||||
|
return "court"
|
||||||
|
when 6
|
||||||
|
return "floor"
|
||||||
|
when 13
|
||||||
|
return "porch"
|
||||||
|
|
||||||
uuid32: ->
|
clipAudi: (audi) ->
|
||||||
str = "0v"
|
audi = audi.join " "
|
||||||
str += Math.ceil(Math.random()*8)+"."
|
ms = window.util.mainStationPath window.urb.user
|
||||||
for i in [0..5]
|
regx = new RegExp "/#{ms}","g"
|
||||||
_str = Math.ceil(Math.random()*10000000).toString(32)
|
audi = audi.replace regx,""
|
||||||
_str = ("00000"+_str).substr(-5,5)
|
audi.split " "
|
||||||
str += _str+"."
|
|
||||||
str.slice(0,-1)
|
|
||||||
|
|
||||||
populate: (station,number) ->
|
expandAudi: (audi) ->
|
||||||
c = 0
|
audi = audi.join " "
|
||||||
send = ->
|
ms = window.util.mainStationPath window.urb.user
|
||||||
if c < number
|
if audi.indexOf(ms) is -1
|
||||||
c++
|
if audi.length > 0
|
||||||
else
|
audi += " "
|
||||||
console.log 'done'
|
audi += "#{ms}"
|
||||||
return true
|
audi.split " "
|
||||||
_audi = {}
|
|
||||||
_audi[station] = "pending"
|
|
||||||
_message =
|
|
||||||
serial:window.util.uuid32()
|
|
||||||
audience:_audi
|
|
||||||
statement:
|
|
||||||
speech:
|
|
||||||
say:"Message "+c
|
|
||||||
time: Date.now()
|
|
||||||
now: Date.now()
|
|
||||||
window.chat.MessagePersistence.sendMessage _message,send
|
|
||||||
send()
|
|
||||||
|
|
||||||
getScroll: ->
|
create: (name) ->
|
||||||
@writingPosition = $('#messaging-container').outerHeight(true)+$('#messaging-container').offset().top-$(window).height()
|
window.chat.StationPersistence.createStation name, (err,res) ->
|
||||||
#@writingPosition = $('#writing-container').position().top-$(window).height()+$('#writing-container').outerHeight(true)
|
|
||||||
|
|
||||||
setScroll: ->
|
subscribe: (name) ->
|
||||||
window.util.getScroll()
|
window.chat.StationPersistence.addSource "main",window.urb.ship,["~zod/#{name}"]
|
||||||
$(window).scrollTop(window.util.writingPosition)
|
|
||||||
|
|
||||||
checkScroll: ->
|
uuid32: ->
|
||||||
if not window.util.writingPosition
|
str = "0v"
|
||||||
window.util.getScroll()
|
str += Math.ceil(Math.random()*8)+"."
|
||||||
if $(window).scrollTop() < window.util.writingPosition
|
for i in [0..5]
|
||||||
$('body').addClass 'scrolling'
|
_str = Math.ceil(Math.random()*10000000).toString(32)
|
||||||
|
_str = ("00000"+_str).substr(-5,5)
|
||||||
|
str += _str+"."
|
||||||
|
str.slice(0,-1)
|
||||||
|
|
||||||
|
populate: (station,number) ->
|
||||||
|
c = 0
|
||||||
|
send = ->
|
||||||
|
if c < number
|
||||||
|
c++
|
||||||
else
|
else
|
||||||
$('body').removeClass 'scrolling'
|
console.log 'done'
|
||||||
|
return true
|
||||||
|
_audi = {}
|
||||||
|
_audi[station] = "pending"
|
||||||
|
_message =
|
||||||
|
serial:window.util.uuid32()
|
||||||
|
audience:_audi
|
||||||
|
statement:
|
||||||
|
speech:
|
||||||
|
say:"Message "+c
|
||||||
|
time: Date.now()
|
||||||
|
now: Date.now()
|
||||||
|
window.chat.MessagePersistence.sendMessage _message,send
|
||||||
|
send()
|
||||||
|
|
||||||
$(window).on 'scroll', window.util.checkScroll
|
getScroll: ->
|
||||||
|
@writingPosition = $('#c').outerHeight(true)+$('#c').offset().top-$(window).height()
|
||||||
|
|
||||||
window.chat.StationPersistence.listen()
|
setScroll: ->
|
||||||
|
window.util.getScroll()
|
||||||
|
$(window).scrollTop($("#c").height())
|
||||||
|
|
||||||
StationComponent = require './components/StationComponent.coffee'
|
checkScroll: ->
|
||||||
StationsComponent = require './components/StationsComponent.coffee'
|
if not window.util.writingPosition
|
||||||
MessagesComponent = require './components/MessagesComponent.coffee'
|
window.util.getScroll()
|
||||||
WritingComponent = require './components/WritingComponent.coffee'
|
if $(window).scrollTop() < window.util.writingPosition
|
||||||
|
$('body').addClass 'scrolling'
|
||||||
|
else
|
||||||
|
$('body').removeClass 'scrolling'
|
||||||
|
|
||||||
$c = $('#c')
|
# checkScroll = ->
|
||||||
|
# if $(window).scrollTop() > 20
|
||||||
|
# $('#nav').addClass 'scrolling'
|
||||||
|
# else
|
||||||
|
# $('#nav').removeClass 'scrolling'
|
||||||
|
# setInterval checkScroll, 500
|
||||||
|
|
||||||
clean = ->
|
so = {}
|
||||||
React.unmountComponentAtNode $('#stations-container')[0]
|
so.ls = $(window).scrollTop()
|
||||||
React.unmountComponentAtNode $('#station-parts-container')[0]
|
so.cs = $(window).scrollTop()
|
||||||
React.unmountComponentAtNode $('#writing-container')[0]
|
so.w = null
|
||||||
React.unmountComponentAtNode $('#messages-container')[0]
|
so.$d = $('#nav > div')
|
||||||
|
setSo = ->
|
||||||
|
so.$n = $('#station-container')
|
||||||
|
so.w = $(window).width()
|
||||||
|
so.h = $(window).height()
|
||||||
|
so.dh = $("#c").height()
|
||||||
|
so.nh = so.$n.outerHeight(true)
|
||||||
|
setSo()
|
||||||
|
setInterval setSo,200
|
||||||
|
|
||||||
routes =
|
$(window).on 'resize', (e) ->
|
||||||
'': ->
|
if so.w > 1170
|
||||||
clean()
|
so.$n.removeClass 'm-up m-down m-fixed'
|
||||||
$c.html "<div id='stations-container'></div>"
|
|
||||||
rend (StationsComponent {}, ""),$('#stations-container')[0]
|
|
||||||
'/:station': (station) ->
|
|
||||||
clean()
|
|
||||||
StationActions.switchStation station
|
|
||||||
$c.html ""
|
|
||||||
$c.append("<div id='messaging-container'></div>")
|
|
||||||
$d = $('#messaging-container')
|
|
||||||
$d.append("<div id='messages-container'></div>")
|
|
||||||
$d.append("<div id='writing-container'></div>")
|
|
||||||
$d.append("<div id='station-parts-container'></div>")
|
|
||||||
$c.append("<div id='scrolling'>BOTTOM</div>")
|
|
||||||
rend (StationComponent {}, ""),$('#station-parts-container')[0]
|
|
||||||
rend (MessagesComponent {}, ""),$('#messages-container')[0]
|
|
||||||
rend (WritingComponent {}, ""),$('#writing-container')[0]
|
|
||||||
|
|
||||||
router = Router routes
|
ldy = 0
|
||||||
if not window.location.hash then window.location.hash = "/"
|
|
||||||
router.init()
|
$(window).on 'scroll', (e) ->
|
||||||
|
so.cs = $(window).scrollTop()
|
||||||
|
|
||||||
|
if so.w > 1170
|
||||||
|
so.$n.removeClass 'm-up m-down m-fixed'
|
||||||
|
if so.w < 1170
|
||||||
|
dy = so.ls-so.cs
|
||||||
|
|
||||||
|
if so.cs <= 0
|
||||||
|
so.$n.removeClass 'm-up'
|
||||||
|
so.$n.addClass 'm-down m-fixed'
|
||||||
|
return
|
||||||
|
|
||||||
|
if so.cs+so.h > so.dh then return
|
||||||
|
|
||||||
|
if so.$n.hasClass 'm-fixed' and
|
||||||
|
so.w < 1024
|
||||||
|
so.$n.css left:-1*$(window).scrollLeft()
|
||||||
|
|
||||||
|
if dy > 0 and ldy > 0
|
||||||
|
if not so.$n.hasClass 'm-down'
|
||||||
|
so.$n.removeClass('m-up').addClass 'm-down'
|
||||||
|
top = so.cs-so.nh
|
||||||
|
if top < 0 then top = 0
|
||||||
|
so.$n.offset top:top
|
||||||
|
if so.$n.hasClass('m-down') and
|
||||||
|
not so.$n.hasClass('m-fixed') and
|
||||||
|
so.$n.offset().top >= so.cs
|
||||||
|
so.$n.addClass 'm-fixed'
|
||||||
|
so.$n.attr {style:''}
|
||||||
|
|
||||||
|
if dy < 0 and ldy < 0
|
||||||
|
if not so.$n.hasClass 'm-up'
|
||||||
|
so.$n.removeClass 'open'
|
||||||
|
so.$n.removeClass('m-down m-fixed').addClass 'm-up'
|
||||||
|
so.$n.attr {style:''}
|
||||||
|
top = so.cs
|
||||||
|
sto = so.$n.offset().top
|
||||||
|
if top < 0 then top = 0
|
||||||
|
if top > sto and top < sto+so.nh then top = sto
|
||||||
|
so.$n.offset top:top
|
||||||
|
|
||||||
|
ldy = dy
|
||||||
|
so.ls = so.cs
|
||||||
|
|
||||||
|
$(window).on 'scroll', window.util.checkScroll
|
||||||
|
|
||||||
|
window.chat.StationPersistence.listen()
|
||||||
|
|
||||||
|
StationComponent = require './components/StationComponent.coffee'
|
||||||
|
MessagesComponent = require './components/MessagesComponent.coffee'
|
||||||
|
WritingComponent = require './components/WritingComponent.coffee'
|
||||||
|
|
||||||
|
$c = $('#c')
|
||||||
|
|
||||||
|
clean = ->
|
||||||
|
React.unmountComponentAtNode $('#station-container')[0]
|
||||||
|
React.unmountComponentAtNode $('#messages-container')[0]
|
||||||
|
React.unmountComponentAtNode $('#writing-container')[0]
|
||||||
|
|
||||||
|
$c.append "<div id='station-container'></div>"
|
||||||
|
$c.append "<div id='messages-container'></div>"
|
||||||
|
$c.append "<div id='writing-container'></div>"
|
||||||
|
$c.append "<div id='scrolling'>BOTTOM</div>"
|
||||||
|
rend (React.createElement(StationComponent, {})),$('#station-container')[0]
|
||||||
|
rend (React.createElement(MessagesComponent, {})),$('#messages-container')[0]
|
||||||
|
rend (React.createElement(WritingComponent, {})),$('#writing-container')[0]
|
||||||
)
|
)
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,10 @@
|
|||||||
{
|
{
|
||||||
"name": "urbit-radio",
|
"name": "urbit-radio",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
|
"repository": {
|
||||||
|
"type":"git",
|
||||||
|
"url":"https://github.com/urbit/urbit"
|
||||||
|
},
|
||||||
"description": "urbit radio frontend",
|
"description": "urbit radio frontend",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -2,11 +2,20 @@ MessageActions = require '../actions/MessageActions.coffee'
|
|||||||
|
|
||||||
module.exports =
|
module.exports =
|
||||||
listenStation: (station,since) ->
|
listenStation: (station,since) ->
|
||||||
|
console.log 'listen station'
|
||||||
|
console.log arguments
|
||||||
|
$this = this
|
||||||
window.urb.subscribe {
|
window.urb.subscribe {
|
||||||
appl:"rodeo"
|
appl:"talk"
|
||||||
path:"/f/#{station}/#{since}"
|
path:"/f/#{station}/#{since}"
|
||||||
}, (err,res) ->
|
}, (err,res) ->
|
||||||
console.log('m subscription updates')
|
if err or not res.data
|
||||||
|
console.log '/f/ err!'
|
||||||
|
console.log err
|
||||||
|
console.log res
|
||||||
|
$this.listenStation station,since
|
||||||
|
return
|
||||||
|
console.log('/f/')
|
||||||
console.log(res.data)
|
console.log(res.data)
|
||||||
if res.data.ok is true
|
if res.data.ok is true
|
||||||
MessageActions.listeningStation station
|
MessageActions.listeningStation station
|
||||||
@ -14,16 +23,22 @@ module.exports =
|
|||||||
MessageActions.loadMessages res.data.grams
|
MessageActions.loadMessages res.data.grams
|
||||||
|
|
||||||
get: (station,start,end) ->
|
get: (station,start,end) ->
|
||||||
|
end = window.urb.util.numDot end
|
||||||
|
start = window.urb.util.numDot start
|
||||||
window.urb.subscribe {
|
window.urb.subscribe {
|
||||||
appl:"rodeo"
|
appl:"talk"
|
||||||
path:"/f/#{station}/#{end}/#{start}"
|
path:"/f/#{station}/#{end}/#{start}"
|
||||||
}, (err,res) ->
|
}, (err,res) ->
|
||||||
console.log 'get'
|
if err or not res.data
|
||||||
|
console.log '/f/ /e/s err'
|
||||||
|
console.log err
|
||||||
|
return
|
||||||
|
console.log '/f/ /e/s'
|
||||||
console.log res
|
console.log res
|
||||||
if res.data?.grams?.tele
|
if res.data?.grams?.tele
|
||||||
MessageActions.loadMessages res.data.grams,true
|
MessageActions.loadMessages res.data.grams,true
|
||||||
window.urb.unsubscribe {
|
window.urb.unsubscribe {
|
||||||
appl:"rodeo"
|
appl:"talk"
|
||||||
path:"/f/#{station}/#{end}/#{start}"
|
path:"/f/#{station}/#{end}/#{start}"
|
||||||
}, (err,res) ->
|
}, (err,res) ->
|
||||||
console.log 'done'
|
console.log 'done'
|
||||||
@ -31,8 +46,8 @@ module.exports =
|
|||||||
|
|
||||||
sendMessage: (message,cb) ->
|
sendMessage: (message,cb) ->
|
||||||
window.urb.send {
|
window.urb.send {
|
||||||
appl:"rodeo"
|
appl:"talk"
|
||||||
mark:"rodeo-command"
|
mark:"talk-command"
|
||||||
data:
|
data:
|
||||||
publish: [
|
publish: [
|
||||||
message
|
message
|
||||||
|
@ -3,8 +3,8 @@ StationActions = require '../actions/StationActions.coffee'
|
|||||||
module.exports =
|
module.exports =
|
||||||
createStation: (name,cb) ->
|
createStation: (name,cb) ->
|
||||||
window.urb.send {
|
window.urb.send {
|
||||||
appl:"rodeo"
|
appl:"talk"
|
||||||
mark:"rodeo-command"
|
mark:"talk-command"
|
||||||
data:
|
data:
|
||||||
design:
|
design:
|
||||||
party:name
|
party:name
|
||||||
@ -16,8 +16,8 @@ module.exports =
|
|||||||
|
|
||||||
removeStation: (name,cb) ->
|
removeStation: (name,cb) ->
|
||||||
window.urb.send {
|
window.urb.send {
|
||||||
appl:"rodeo"
|
appl:"talk"
|
||||||
mark:"rodeo-command"
|
mark:"talk-command"
|
||||||
data:
|
data:
|
||||||
design:
|
design:
|
||||||
party:name
|
party:name
|
||||||
@ -26,8 +26,8 @@ module.exports =
|
|||||||
|
|
||||||
setSources: (station,ship,sources) ->
|
setSources: (station,ship,sources) ->
|
||||||
send =
|
send =
|
||||||
appl:"rodeo"
|
appl:"talk"
|
||||||
mark:"rodeo-command"
|
mark:"talk-command"
|
||||||
data:
|
data:
|
||||||
design:
|
design:
|
||||||
party:station
|
party:station
|
||||||
@ -36,39 +36,52 @@ module.exports =
|
|||||||
caption:""
|
caption:""
|
||||||
cordon:{posture:"white", list:[]}
|
cordon:{posture:"white", list:[]}
|
||||||
window.urb.send send, (err,res) ->
|
window.urb.send send, (err,res) ->
|
||||||
console.log 'add source updates'
|
console.log 'talk-command'
|
||||||
console.log arguments
|
console.log arguments
|
||||||
|
|
||||||
members: ->
|
members: ->
|
||||||
window.urb.subscribe {
|
window.urb.subscribe {
|
||||||
appl:"rodeo"
|
appl:"talk"
|
||||||
path:"/a/court"
|
path:"/a/court"
|
||||||
}, (err,res) ->
|
}, (err,res) ->
|
||||||
console.log 'membership updates'
|
if err or not res
|
||||||
|
console.log '/a/ err'
|
||||||
|
console.log err
|
||||||
|
return
|
||||||
|
console.log '/a/'
|
||||||
console.log res.data
|
console.log res.data
|
||||||
if res.data?.group?.global
|
if res.data?.group?.global
|
||||||
StationActions.loadMembers res.data.group.global
|
StationActions.loadMembers res.data.group.global
|
||||||
|
|
||||||
listen: ->
|
listen: ->
|
||||||
window.urb.subscribe {
|
window.urb.subscribe {
|
||||||
appl:"rodeo"
|
appl:"talk"
|
||||||
path:"/"
|
path:"/"
|
||||||
}, (err,res) ->
|
}, (err,res) ->
|
||||||
console.log 'house updates'
|
if err or not res.data
|
||||||
|
console.log '/ err'
|
||||||
|
console.log err
|
||||||
|
return
|
||||||
|
console.log '/'
|
||||||
console.log res.data
|
console.log res.data
|
||||||
if res.data.house
|
if res.data.house
|
||||||
StationActions.loadStations res.data.house
|
StationActions.loadStations res.data.house
|
||||||
|
|
||||||
listenStation: (station) ->
|
listenStation: (station) ->
|
||||||
window.urb.subscribe {
|
window.urb.subscribe {
|
||||||
appl:"rodeo"
|
appl:"talk"
|
||||||
path:"/ax/#{station}"
|
path:"/ax/#{station}"
|
||||||
}, (err,res) ->
|
}, (err,res) ->
|
||||||
console.log('station subscription updates')
|
if err or not res
|
||||||
|
console.log '/ax/ err'
|
||||||
|
console.log err
|
||||||
|
return
|
||||||
|
console.log('/ax/')
|
||||||
console.log(res.data)
|
console.log(res.data)
|
||||||
if res.data.ok is true
|
if res.data.ok is true
|
||||||
StationActions.listeningStation station
|
StationActions.listeningStation station
|
||||||
if res.data.group?.local
|
if res.data.group
|
||||||
StationActions.loadMembers station,res.data.group.local
|
res.data.group.global[window.util.mainStationPath(window.urb.user)] = res.data.group.local
|
||||||
if res.data.config
|
StationActions.loadMembers res.data.group.global
|
||||||
StationActions.loadConfig station,res.data.config
|
if res.data.cabal?.loc
|
||||||
|
StationActions.loadConfig station,res.data.cabal.loc
|
@ -33,6 +33,11 @@ MessageStore = _.merge new EventEmitter,{
|
|||||||
|
|
||||||
getTyping: -> _typing
|
getTyping: -> _typing
|
||||||
|
|
||||||
|
getLastAudience: ->
|
||||||
|
if _.keys(_messages).length is 0 then return []
|
||||||
|
messages = _.sortBy _messages, (_message) -> _message.thought.statement.time
|
||||||
|
_.keys messages[messages.length-1].thought.audience
|
||||||
|
|
||||||
setTyping: (state) -> _typing = state
|
setTyping: (state) -> _typing = state
|
||||||
|
|
||||||
setListening: (station) ->
|
setListening: (station) ->
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
EventEmitter = require('events').EventEmitter
|
EventEmitter = require('events').EventEmitter
|
||||||
|
|
||||||
StationDispatcher = require '../dispatcher/Dispatcher.coffee'
|
StationDispatcher = require '../dispatcher/Dispatcher.coffee'
|
||||||
|
|
||||||
_audience = []
|
_audience = []
|
||||||
_members = {}
|
_members = {}
|
||||||
_stations = []
|
_stations = []
|
||||||
_listening = []
|
_listening = []
|
||||||
_station = null
|
_station = null
|
||||||
_config = {}
|
_config = {}
|
||||||
_typing = {}
|
_typing = {}
|
||||||
|
|
||||||
|
_validAudience = true
|
||||||
|
|
||||||
StationStore = _.merge new EventEmitter,{
|
StationStore = _.merge new EventEmitter,{
|
||||||
removeChangeListener: (cb) -> @removeListener "change", cb
|
removeChangeListener: (cb) -> @removeListener "change", cb
|
||||||
@ -21,6 +23,10 @@ StationStore = _.merge new EventEmitter,{
|
|||||||
|
|
||||||
setAudience: (audience) -> _audience = audience
|
setAudience: (audience) -> _audience = audience
|
||||||
|
|
||||||
|
getValidAudience: -> _validAudience
|
||||||
|
|
||||||
|
setValidAudience: (valid) -> _validAudience = valid
|
||||||
|
|
||||||
toggleAudience: (station) ->
|
toggleAudience: (station) ->
|
||||||
if _audience.indexOf(station) isnt -1
|
if _audience.indexOf(station) isnt -1
|
||||||
_audience.splice _audience.indexOf(station), 1
|
_audience.splice _audience.indexOf(station), 1
|
||||||
@ -35,14 +41,12 @@ StationStore = _.merge new EventEmitter,{
|
|||||||
|
|
||||||
getMember: (ship) -> {ship:ship}
|
getMember: (ship) -> {ship:ship}
|
||||||
|
|
||||||
changeMember: (dir,name,ship) ->
|
loadMembers: (members) ->
|
||||||
if dir is "out"
|
_members = {}
|
||||||
_members = _.filter _members, (_member) ->
|
for station,list of members
|
||||||
return (_member.ship isnt ship)
|
for member,presence of list
|
||||||
if dir is "in"
|
_members[member] = {} if not _members[member]
|
||||||
_members.push {name:name, ship:ship}
|
_members[member][station] = presence
|
||||||
|
|
||||||
loadMembers: (station,members) -> _members[station] = members
|
|
||||||
|
|
||||||
getMembers: -> _members
|
getMembers: -> _members
|
||||||
|
|
||||||
@ -94,6 +98,10 @@ StationStore.dispatchToken = StationDispatcher.register (payload) ->
|
|||||||
StationStore.setAudience action.audience
|
StationStore.setAudience action.audience
|
||||||
StationStore.emitChange()
|
StationStore.emitChange()
|
||||||
break
|
break
|
||||||
|
when 'station-set-valid-audience'
|
||||||
|
StationStore.setValidAudience action.valid
|
||||||
|
StationStore.emitChange()
|
||||||
|
break
|
||||||
when 'station-switch'
|
when 'station-switch'
|
||||||
StationStore.setAudience []
|
StationStore.setAudience []
|
||||||
StationStore.setStation action.station
|
StationStore.setStation action.station
|
||||||
@ -103,7 +111,7 @@ StationStore.dispatchToken = StationDispatcher.register (payload) ->
|
|||||||
StationStore.setListening action.station
|
StationStore.setListening action.station
|
||||||
StationStore.emitChange()
|
StationStore.emitChange()
|
||||||
break
|
break
|
||||||
when "config-load"
|
when "config-load" #[name:'loadConfig', args:['station', 'config']]
|
||||||
StationStore.loadConfig action.station,action.config
|
StationStore.loadConfig action.station,action.config
|
||||||
StationStore.emitChange()
|
StationStore.emitChange()
|
||||||
break
|
break
|
||||||
@ -111,7 +119,10 @@ StationStore.dispatchToken = StationDispatcher.register (payload) ->
|
|||||||
StationStore.loadStations action.stations
|
StationStore.loadStations action.stations
|
||||||
StationStore.emitChange()
|
StationStore.emitChange()
|
||||||
break
|
break
|
||||||
when "stations-leave"
|
when "stations-leave" # stations-leave:[{name:'loadStations' args:['stations']} ['unsetStation' 'station']]
|
||||||
|
# ...
|
||||||
|
# for command in actionVtable[action.type]
|
||||||
|
# StationStore[command[0]].apply(command[1..].map(argname -> action[argname]))
|
||||||
StationStore.loadStations action.stations
|
StationStore.loadStations action.stations
|
||||||
StationStore.unsetStation action.station
|
StationStore.unsetStation action.station
|
||||||
StationStore.emitChange()
|
StationStore.emitChange()
|
||||||
@ -121,7 +132,7 @@ StationStore.dispatchToken = StationDispatcher.register (payload) ->
|
|||||||
StationStore.emitChange()
|
StationStore.emitChange()
|
||||||
break
|
break
|
||||||
when "members-load"
|
when "members-load"
|
||||||
StationStore.loadMembers action.station,action.members
|
StationStore.loadMembers action.members
|
||||||
StationStore.emitChange()
|
StationStore.emitChange()
|
||||||
break
|
break
|
||||||
when "typing-set"
|
when "typing-set"
|
||||||
|
@ -35,7 +35,7 @@ module.exports = recl
|
|||||||
dt = @ts - Number Date.now()
|
dt = @ts - Number Date.now()
|
||||||
|
|
||||||
setPath: (href,hist) ->
|
setPath: (href,hist) ->
|
||||||
if hist isnt false then history.pushState {}, "", "/gen/docs/tree"+href
|
if hist isnt false then history.pushState {}, "", window.tree.basepath href
|
||||||
TreeActions.setCurr href
|
TreeActions.setCurr href
|
||||||
|
|
||||||
goTo: (path) ->
|
goTo: (path) ->
|
||||||
@ -47,7 +47,7 @@ module.exports = recl
|
|||||||
|
|
||||||
checkURL: ->
|
checkURL: ->
|
||||||
if @state.url isnt window.location.pathname
|
if @state.url isnt window.location.pathname
|
||||||
@setPath window.location.pathname.replace("/gen/docs/tree",""),false
|
@setPath (window.tree.fragpath window.location.pathname),false
|
||||||
|
|
||||||
setTitle: ->
|
setTitle: ->
|
||||||
title = $('#cont h1').first().text()
|
title = $('#cont h1').first().text()
|
||||||
@ -86,7 +86,7 @@ module.exports = recl
|
|||||||
@goTo @state.next
|
@goTo @state.next
|
||||||
|
|
||||||
$('body').on 'click', 'a', (e) =>
|
$('body').on 'click', 'a', (e) =>
|
||||||
href = $(e.target).closest('a').attr 'href'
|
href = $(e.target).closest('a').attr('href')
|
||||||
if href[0] is "/"
|
if href[0] is "/"
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
@ -103,14 +103,15 @@ module.exports = recl
|
|||||||
render: ->
|
render: ->
|
||||||
parts = []
|
parts = []
|
||||||
if @state.pare
|
if @state.pare
|
||||||
parts.push (div {id:"up"},(a {key:"arow-up",href:@state.pare,className:"arow-up"},""))
|
href = window.tree.basepath @state.pare
|
||||||
|
parts.push (div {id:"up"},(a {key:"arow-up",href:href,className:"arow-up"},""))
|
||||||
if @state.prev or @state.next
|
if @state.prev or @state.next
|
||||||
_parts = []
|
_parts = []
|
||||||
if @state.prev
|
if @state.prev
|
||||||
href = window.tree.basepath @state.prev
|
href = window.tree.basepath window.tree.basepath @state.prev
|
||||||
_parts.push (a {key:"arow-prev",href:href,className:"arow-prev"},"")
|
_parts.push (a {key:"arow-prev",href:href,className:"arow-prev"},"")
|
||||||
if @state.next
|
if @state.next
|
||||||
href = window.tree.basepath @state.next
|
href = window.tree.basepath window.tree.basepath @state.next
|
||||||
_parts.push (a {key:"arow-next",href:href,className:"arow-next"},"")
|
_parts.push (a {key:"arow-next",href:href,className:"arow-next"},"")
|
||||||
parts.push (div {id:"sides"}, _parts)
|
parts.push (div {id:"sides"}, _parts)
|
||||||
|
|
||||||
@ -128,7 +129,8 @@ module.exports = recl
|
|||||||
c = "active"
|
c = "active"
|
||||||
ci = k
|
ci = k
|
||||||
k++
|
k++
|
||||||
(div {className:c}, (a {key:i+"-a",href:up+"/"+i,onClick:@_click}, i))
|
href = window.tree.basepath up+"/"+i
|
||||||
|
(div {className:c}, (a {key:i+"-a",href:href,onClick:@_click}, i))
|
||||||
offset = 0
|
offset = 0
|
||||||
if ci > 0 then offset = 0
|
if ci > 0 then offset = 0
|
||||||
s = {marginTop:((ci*-24)-offset)+"px"}
|
s = {marginTop:((ci*-24)-offset)+"px"}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/actions/TreeActions.coffee":[function(require,module,exports){
|
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
||||||
var TreeDispatcher, TreePersistence;
|
var TreeDispatcher, TreePersistence;
|
||||||
|
|
||||||
TreeDispatcher = require('../dispatcher/Dispatcher.coffee');
|
TreeDispatcher = require('../dispatcher/Dispatcher.coffee');
|
||||||
@ -72,7 +72,7 @@ module.exports = {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/dispatcher/Dispatcher.coffee","../persistence/TreePersistence.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/persistence/TreePersistence.coffee"}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/components/AnchorComponent.coffee":[function(require,module,exports){
|
},{"../dispatcher/Dispatcher.coffee":7,"../persistence/TreePersistence.coffee":12}],2:[function(require,module,exports){
|
||||||
var TreeActions, TreeStore, a, div, recl, ref;
|
var TreeActions, TreeStore, a, div, recl, ref;
|
||||||
|
|
||||||
TreeStore = require('../stores/TreeStore.coffee');
|
TreeStore = require('../stores/TreeStore.coffee');
|
||||||
@ -122,7 +122,7 @@ module.exports = recl({
|
|||||||
},
|
},
|
||||||
setPath: function(href, hist) {
|
setPath: function(href, hist) {
|
||||||
if (hist !== false) {
|
if (hist !== false) {
|
||||||
history.pushState({}, "", "/gen/docs/tree" + href);
|
history.pushState({}, "", window.tree.basepath(href));
|
||||||
}
|
}
|
||||||
return TreeActions.setCurr(href);
|
return TreeActions.setCurr(href);
|
||||||
},
|
},
|
||||||
@ -138,7 +138,7 @@ module.exports = recl({
|
|||||||
},
|
},
|
||||||
checkURL: function() {
|
checkURL: function() {
|
||||||
if (this.state.url !== window.location.pathname) {
|
if (this.state.url !== window.location.pathname) {
|
||||||
return this.setPath(window.location.pathname.replace("/gen/docs/tree", ""), false);
|
return this.setPath(window.tree.fragpath(window.location.pathname), false);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setTitle: function() {
|
setTitle: function() {
|
||||||
@ -206,17 +206,18 @@ module.exports = recl({
|
|||||||
var _parts, ci, curr, href, k, obj, offset, p, parts, s, sibs, up;
|
var _parts, ci, curr, href, k, obj, offset, p, parts, s, sibs, up;
|
||||||
parts = [];
|
parts = [];
|
||||||
if (this.state.pare) {
|
if (this.state.pare) {
|
||||||
|
href = window.tree.basepath(this.state.pare);
|
||||||
parts.push(div({
|
parts.push(div({
|
||||||
id: "up"
|
id: "up"
|
||||||
}, a({
|
}, a({
|
||||||
key: "arow-up",
|
key: "arow-up",
|
||||||
href: this.state.pare,
|
href: href,
|
||||||
className: "arow-up"
|
className: "arow-up"
|
||||||
}, "")));
|
}, "")));
|
||||||
if (this.state.prev || this.state.next) {
|
if (this.state.prev || this.state.next) {
|
||||||
_parts = [];
|
_parts = [];
|
||||||
if (this.state.prev) {
|
if (this.state.prev) {
|
||||||
href = window.tree.basepath(this.state.prev);
|
href = window.tree.basepath(window.tree.basepath(this.state.prev));
|
||||||
_parts.push(a({
|
_parts.push(a({
|
||||||
key: "arow-prev",
|
key: "arow-prev",
|
||||||
href: href,
|
href: href,
|
||||||
@ -224,7 +225,7 @@ module.exports = recl({
|
|||||||
}, ""));
|
}, ""));
|
||||||
}
|
}
|
||||||
if (this.state.next) {
|
if (this.state.next) {
|
||||||
href = window.tree.basepath(this.state.next);
|
href = window.tree.basepath(window.tree.basepath(this.state.next));
|
||||||
_parts.push(a({
|
_parts.push(a({
|
||||||
key: "arow-next",
|
key: "arow-next",
|
||||||
href: href,
|
href: href,
|
||||||
@ -252,11 +253,12 @@ module.exports = recl({
|
|||||||
ci = k;
|
ci = k;
|
||||||
}
|
}
|
||||||
k++;
|
k++;
|
||||||
|
href = window.tree.basepath(up + "/" + i);
|
||||||
return div({
|
return div({
|
||||||
className: c
|
className: c
|
||||||
}, a({
|
}, a({
|
||||||
key: i + "-a",
|
key: i + "-a",
|
||||||
href: up + "/" + i,
|
href: href,
|
||||||
onClick: _this._click
|
onClick: _this._click
|
||||||
}, i));
|
}, i));
|
||||||
};
|
};
|
||||||
@ -291,7 +293,7 @@ module.exports = recl({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
},{"../actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/actions/TreeActions.coffee","../stores/TreeStore.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/stores/TreeStore.coffee"}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/components/BodyComponent.coffee":[function(require,module,exports){
|
},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":13}],3:[function(require,module,exports){
|
||||||
var TreeActions, TreeStore, div, input, load, recl, ref, textarea;
|
var TreeActions, TreeStore, div, input, load, recl, ref, textarea;
|
||||||
|
|
||||||
TreeStore = require('../stores/TreeStore.coffee');
|
TreeStore = require('../stores/TreeStore.coffee');
|
||||||
@ -356,7 +358,7 @@ module.exports = recl({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
},{"../actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/actions/TreeActions.coffee","../stores/TreeStore.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/stores/TreeStore.coffee","./LoadComponent.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/components/LoadComponent.coffee"}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/components/KidsComponent.coffee":[function(require,module,exports){
|
},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":13,"./LoadComponent.coffee":6}],4:[function(require,module,exports){
|
||||||
var TreeActions, TreeStore, a, div, hr, li, recl, ref, ul;
|
var TreeActions, TreeStore, a, div, hr, li, recl, ref, ul;
|
||||||
|
|
||||||
TreeStore = require('../stores/TreeStore.coffee');
|
TreeStore = require('../stores/TreeStore.coffee');
|
||||||
@ -423,7 +425,7 @@ module.exports = recl({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
},{"../actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/actions/TreeActions.coffee","../stores/TreeStore.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/stores/TreeStore.coffee"}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/components/ListComponent.coffee":[function(require,module,exports){
|
},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":13}],5:[function(require,module,exports){
|
||||||
var TreeActions, TreeStore, a, div, h1, li, load, recl, ref, ul;
|
var TreeActions, TreeStore, a, div, h1, li, load, recl, ref, ul;
|
||||||
|
|
||||||
TreeStore = require('../stores/TreeStore.coffee');
|
TreeStore = require('../stores/TreeStore.coffee');
|
||||||
@ -514,7 +516,7 @@ module.exports = recl({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
},{"../actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/actions/TreeActions.coffee","../stores/TreeStore.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/stores/TreeStore.coffee","./LoadComponent.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/components/LoadComponent.coffee"}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/components/LoadComponent.coffee":[function(require,module,exports){
|
},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":13,"./LoadComponent.coffee":6}],6:[function(require,module,exports){
|
||||||
var div, input, recl, ref, textarea;
|
var div, input, recl, ref, textarea;
|
||||||
|
|
||||||
recl = React.createClass;
|
recl = React.createClass;
|
||||||
@ -552,7 +554,7 @@ module.exports = recl({
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
},{}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/dispatcher/Dispatcher.coffee":[function(require,module,exports){
|
},{}],7:[function(require,module,exports){
|
||||||
var Dispatcher;
|
var Dispatcher;
|
||||||
|
|
||||||
Dispatcher = require('flux').Dispatcher;
|
Dispatcher = require('flux').Dispatcher;
|
||||||
@ -574,7 +576,7 @@ module.exports = _.extend(new Dispatcher(), {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
},{"flux":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/node_modules/flux/index.js"}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/main.coffee":[function(require,module,exports){
|
},{"flux":9}],8:[function(require,module,exports){
|
||||||
var rend;
|
var rend;
|
||||||
|
|
||||||
rend = React.render;
|
rend = React.render;
|
||||||
@ -732,7 +734,7 @@ $(function() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
},{"./actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/actions/TreeActions.coffee","./components/AnchorComponent.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/components/AnchorComponent.coffee","./components/BodyComponent.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/components/BodyComponent.coffee","./components/KidsComponent.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/components/KidsComponent.coffee","./components/ListComponent.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/components/ListComponent.coffee","./persistence/TreePersistence.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/persistence/TreePersistence.coffee"}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/node_modules/flux/index.js":[function(require,module,exports){
|
},{"./actions/TreeActions.coffee":1,"./components/AnchorComponent.coffee":2,"./components/BodyComponent.coffee":3,"./components/KidsComponent.coffee":4,"./components/ListComponent.coffee":5,"./persistence/TreePersistence.coffee":12}],9:[function(require,module,exports){
|
||||||
/**
|
/**
|
||||||
* Copyright (c) 2014, Facebook, Inc.
|
* Copyright (c) 2014, Facebook, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@ -744,7 +746,7 @@ $(function() {
|
|||||||
|
|
||||||
module.exports.Dispatcher = require('./lib/Dispatcher')
|
module.exports.Dispatcher = require('./lib/Dispatcher')
|
||||||
|
|
||||||
},{"./lib/Dispatcher":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/node_modules/flux/lib/Dispatcher.js"}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/node_modules/flux/lib/Dispatcher.js":[function(require,module,exports){
|
},{"./lib/Dispatcher":10}],10:[function(require,module,exports){
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014, Facebook, Inc.
|
* Copyright (c) 2014, Facebook, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@ -996,7 +998,7 @@ var _prefix = 'ID_';
|
|||||||
|
|
||||||
module.exports = Dispatcher;
|
module.exports = Dispatcher;
|
||||||
|
|
||||||
},{"./invariant":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/node_modules/flux/lib/invariant.js"}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/node_modules/flux/lib/invariant.js":[function(require,module,exports){
|
},{"./invariant":11}],11:[function(require,module,exports){
|
||||||
/**
|
/**
|
||||||
* Copyright (c) 2014, Facebook, Inc.
|
* Copyright (c) 2014, Facebook, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@ -1051,7 +1053,7 @@ var invariant = function(condition, format, a, b, c, d, e, f) {
|
|||||||
|
|
||||||
module.exports = invariant;
|
module.exports = invariant;
|
||||||
|
|
||||||
},{}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/persistence/TreePersistence.coffee":[function(require,module,exports){
|
},{}],12:[function(require,module,exports){
|
||||||
var TreeActions;
|
var TreeActions;
|
||||||
|
|
||||||
TreeActions = require('../actions/TreeActions.coffee');
|
TreeActions = require('../actions/TreeActions.coffee');
|
||||||
@ -1073,7 +1075,7 @@ module.exports = {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
},{"../actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/actions/TreeActions.coffee"}],"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/stores/TreeStore.coffee":[function(require,module,exports){
|
},{"../actions/TreeActions.coffee":1}],13:[function(require,module,exports){
|
||||||
var EventEmitter, MessageDispatcher, TreeStore, _cont, _curr, _load, _snip, _tree;
|
var EventEmitter, MessageDispatcher, TreeStore, _cont, _curr, _load, _snip, _tree;
|
||||||
|
|
||||||
EventEmitter = require('events').EventEmitter;
|
EventEmitter = require('events').EventEmitter;
|
||||||
@ -1284,7 +1286,7 @@ module.exports = TreeStore;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/dispatcher/Dispatcher.coffee","events":"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js"}],"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js":[function(require,module,exports){
|
},{"../dispatcher/Dispatcher.coffee":7,"events":14}],14:[function(require,module,exports){
|
||||||
// Copyright Joyent, Inc. and other Node contributors.
|
// Copyright Joyent, Inc. and other Node contributors.
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
@ -1344,10 +1346,8 @@ EventEmitter.prototype.emit = function(type) {
|
|||||||
er = arguments[1];
|
er = arguments[1];
|
||||||
if (er instanceof Error) {
|
if (er instanceof Error) {
|
||||||
throw er; // Unhandled 'error' event
|
throw er; // Unhandled 'error' event
|
||||||
} else {
|
|
||||||
throw TypeError('Uncaught, unspecified "error" event.');
|
|
||||||
}
|
}
|
||||||
return false;
|
throw TypeError('Uncaught, unspecified "error" event.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1589,4 +1589,4 @@ function isUndefined(arg) {
|
|||||||
return arg === void 0;
|
return arg === void 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
},{}]},{},["/Users/galen/Documents/src/urbit-dev/urb/zod/docs/pub/tree/src/js/main.coffee"]);
|
},{}]},{},[8]);
|
||||||
|
12
main/pub/tree/src/readme.md
Normal file
12
main/pub/tree/src/readme.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# installing
|
||||||
|
|
||||||
|
`npm install`
|
||||||
|
|
||||||
|
# building
|
||||||
|
|
||||||
|
in `src/js/`:
|
||||||
|
`watchify -v -t coffeeify -o main.js main.coffee`
|
||||||
|
|
||||||
|
in `src/css/`:
|
||||||
|
`stylus -w main.styl`
|
||||||
|
|
@ -1,45 +0,0 @@
|
|||||||
::
|
|
||||||
:::: /hook/core/radio/sur
|
|
||||||
::
|
|
||||||
|%
|
|
||||||
++ audience (map station delivery) :: destination/state
|
|
||||||
++ atlas (map ship status) :: presence map
|
|
||||||
++ command :: effect on party
|
|
||||||
$% [%design (pair span (unit config))] :: configure/destroy
|
|
||||||
[%publish (list thought)] :: originate
|
|
||||||
[%review (list thought)] :: deliver
|
|
||||||
[%ping (map station presence)] :: declare status
|
|
||||||
== ::
|
|
||||||
++ config :: party configuration
|
|
||||||
$: sources=(set station) :: pulls from
|
|
||||||
cordon=(each (set ship) (set ship)) :: white/blacklist
|
|
||||||
== ::
|
|
||||||
++ cousin (pair ship span) :: domestic flow
|
|
||||||
++ delivery ?(%pending %received %rejected %released) :: delivery state
|
|
||||||
++ human :: human identifier
|
|
||||||
$: true=(unit (trel ,@t (unit ,@t) ,@t)) :: true name
|
|
||||||
hand=(unit ,@t) :: handle
|
|
||||||
== ::
|
|
||||||
++ partner :: foreign flow
|
|
||||||
$% [%twitter p=@t] :: twitter
|
|
||||||
== ::
|
|
||||||
++ presence ?(%hear %talk) :: status type
|
|
||||||
++ report :: unified rush/rust
|
|
||||||
$% [%house (set span)] :: meta-changes
|
|
||||||
[%grams (pair ,@ud (list telegram))] :: thoughts
|
|
||||||
[%group (pair atlas (map station atlas))] :: presence
|
|
||||||
[%config config] :: reconfigure
|
|
||||||
== ::
|
|
||||||
++ serial ,@uvH :: unique identity
|
|
||||||
++ station (each cousin partner) :: interlocutor
|
|
||||||
++ status (pair presence human) :: participant
|
|
||||||
++ speech :: party action
|
|
||||||
$% [%own p=@t] :: @ or /me
|
|
||||||
[%exp p=@t q=(unit tank)] :: program output
|
|
||||||
[%say p=@t] :: normal line
|
|
||||||
[%inv p=ship q=span] :: invite to
|
|
||||||
== ::
|
|
||||||
++ statement (pair ,@da speech) :: when this
|
|
||||||
++ telegram (pair ship thought) :: who which whom what
|
|
||||||
++ thought (trel serial audience statement) :: which whom what
|
|
||||||
--
|
|
116
main/sur/sole/core.hook
Normal file
116
main/sur/sole/core.hook
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
::
|
||||||
|
:::: /hook/core/sole/sur
|
||||||
|
!:
|
||||||
|
|%
|
||||||
|
++ sole-action :: sole to app
|
||||||
|
$% :: [%abo ~] :: reset interaction
|
||||||
|
[%det sole-change] :: command line edit
|
||||||
|
[%ret ~] :: submit and clear
|
||||||
|
== ::
|
||||||
|
++ sole-buffer (list ,@c) :: command state
|
||||||
|
++ sole-change :: network change
|
||||||
|
$: ler=sole-clock :: destination clock
|
||||||
|
haw=@uvH :: source hash
|
||||||
|
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-edit :: shared state change
|
||||||
|
$% [%del p=@ud] :: delete one at
|
||||||
|
[%ins p=@ud q=@c] :: insert at
|
||||||
|
[%mor p=(list sole-edit)] :: combination
|
||||||
|
[%nop ~] :: no-op
|
||||||
|
[%set p=sole-buffer] :: discontinuity
|
||||||
|
== ::
|
||||||
|
++ sole-effect :: app to sole
|
||||||
|
$% [%bel ~] :: beep
|
||||||
|
[%blk p=@ud q=@c] :: blink/match char at
|
||||||
|
[%clr ~] :: clear screen
|
||||||
|
[%det sole-change] :: edit command
|
||||||
|
[%err p=@ud] :: error point
|
||||||
|
[%mor p=(list sole-effect)] :: multiple effects
|
||||||
|
[%nex ~] :: save, clear command
|
||||||
|
[%pro sole-prompt] :: set prompt
|
||||||
|
[%sag p=path q=*] :: save to jamfile
|
||||||
|
[%sav p=path q=@] :: save to file
|
||||||
|
[%tan p=(list tank)] :: classic tank
|
||||||
|
:: [%taq p=tanq] :: modern tank
|
||||||
|
[%txt p=tape] :: text line
|
||||||
|
== ::
|
||||||
|
++ sole-command :: command state
|
||||||
|
$: pos=@ud :: cursor position
|
||||||
|
say=sole-share :: cursor
|
||||||
|
== ::
|
||||||
|
++ sole-prompt :: prompt definition
|
||||||
|
$: vis=? :: command visible
|
||||||
|
tag=term :: history mode
|
||||||
|
cad=tape :: caption
|
||||||
|
== ::
|
||||||
|
++ sole-input tape :: prompt input
|
||||||
|
++ sole-share :: symmetric state
|
||||||
|
$: ven=sole-clock :: our vector clock
|
||||||
|
leg=(list sole-edit) :: unmerged edits
|
||||||
|
buf=sole-buffer :: sole state
|
||||||
|
== ::
|
||||||
|
++ dill-belt :: sole input
|
||||||
|
$% [%aro p=?(%d %l %r %u)] :: arrow key
|
||||||
|
[%bac ~] :: true backspace
|
||||||
|
[%cru p=@tas q=(list tank)] :: echo error
|
||||||
|
[%ctl p=@] :: control-key
|
||||||
|
[%del ~] :: true delete
|
||||||
|
[%met p=@] :: meta-key
|
||||||
|
[%ret ~] :: return
|
||||||
|
[%rez p=@ud q=@ud] :: resize, cols, rows
|
||||||
|
[%txt p=(list ,@c)] :: utf32 text
|
||||||
|
[%yow p=gill] :: connect to app
|
||||||
|
== ::
|
||||||
|
++ dill-blit :: sole output
|
||||||
|
$% [%bel ~] :: make a noise
|
||||||
|
[%clr ~] :: clear the screen
|
||||||
|
[%hop p=@ud] :: set cursor position
|
||||||
|
[%mor p=(list dill-blit)] :: multiple blits
|
||||||
|
[%pro p=(list ,@c)] :: show as cursor/line
|
||||||
|
[%qit ~] :: close console
|
||||||
|
[%out p=(list ,@c)] :: send output line
|
||||||
|
[%sag p=path q=*] :: save to jamfile
|
||||||
|
[%sav p=path q=@] :: save to file
|
||||||
|
== ::
|
||||||
|
++ gill (pair ship term) :: general contact
|
||||||
|
--
|
@ -1 +0,0 @@
|
|||||||
,[~]
|
|
@ -1,8 +1,7 @@
|
|||||||
::
|
::
|
||||||
:::: /hook/core/rodeo/sur
|
:::: /hook/core/talk/sur
|
||||||
!:
|
!:
|
||||||
|%
|
|%
|
||||||
++ ache |*([a=$+(* *) b=$+(* *)] $%([| p=b] [& p=a])) :: PM 314
|
|
||||||
++ audience (map partner (pair envelope delivery)) :: destination/state
|
++ audience (map partner (pair envelope delivery)) :: destination/state
|
||||||
++ atlas (map ship status) :: presence map
|
++ atlas (map ship status) :: presence map
|
||||||
++ bouquet (set flavor) :: complete aroma
|
++ bouquet (set flavor) :: complete aroma
|
||||||
@ -11,6 +10,10 @@
|
|||||||
[%publish (list thought)] :: originate
|
[%publish (list thought)] :: originate
|
||||||
[%review (list thought)] :: deliver
|
[%review (list thought)] :: deliver
|
||||||
== ::
|
== ::
|
||||||
|
++ cabal :: metaconfiguration
|
||||||
|
$: loc=config :: local config
|
||||||
|
ham=(map station config) :: neighborhood configs
|
||||||
|
==
|
||||||
++ config :: party configuration
|
++ config :: party configuration
|
||||||
$: sources=(set partner) :: pulls from
|
$: sources=(set partner) :: pulls from
|
||||||
caption=cord :: about
|
caption=cord :: about
|
||||||
@ -34,32 +37,32 @@
|
|||||||
$% [%twitter p=@t] :: twitter
|
$% [%twitter p=@t] :: twitter
|
||||||
== ::
|
== ::
|
||||||
++ posture :: security posture
|
++ posture :: security posture
|
||||||
$? %black :: public
|
$? %black :: channel
|
||||||
%white :: private
|
%white :: village
|
||||||
%green :: readonly
|
%green :: journal
|
||||||
%brown :: writeonly
|
%brown :: mailbox
|
||||||
== ::
|
== ::
|
||||||
++ presence ?(%gone %hear %talk) :: status type
|
++ presence ?(%gone %hear %talk) :: status type
|
||||||
++ register (pair atlas (map partner atlas)) :: ping me, ping srcs
|
++ register (pair atlas (map partner atlas)) :: ping me, ping srcs
|
||||||
++ report :: radio update
|
++ shelf (map span (pair posture cord)) :: ship shape
|
||||||
$% [%config config] :: reconfigure
|
++ report :: talk update
|
||||||
|
$% [%cabal cabal] :: config neighborhood
|
||||||
:: [%folder (list report)] :: multiple
|
:: [%folder (list report)] :: multiple
|
||||||
[%grams (pair ,@ud (list telegram))] :: beginning, thoughts
|
[%grams (pair ,@ud (list telegram))] :: beginning, thoughts
|
||||||
[%group register] :: presence
|
[%group register] :: presence
|
||||||
[%house (map span (pair posture cord))] :: station set
|
[%house shelf] :: station set
|
||||||
== ::
|
== ::
|
||||||
++ speech :: narrative action
|
++ speech :: narrative action
|
||||||
:: XX unify %own and %say to %lin
|
|
||||||
::
|
|
||||||
$% [%lan p=span q=@t] :: local announce
|
$% [%lan p=span q=@t] :: local announce
|
||||||
[%exp p=@t] :: hoon line
|
[%exp p=@t] :: hoon line
|
||||||
[%non ~] :: no content (yo)
|
[%non ~] :: no content (yo)
|
||||||
[%ext p=@tas q=*] :: extended action
|
[%ext p=@tas q=*] :: extended action
|
||||||
[%fat p=torso q=speech] :: attachment
|
[%fat p=torso q=speech] :: attachment
|
||||||
:: [%inv p=station] :: invite to station
|
:: [%inv p=station] :: invite to station
|
||||||
|
[%url p=purl] :: parsed url
|
||||||
[%ire p=serial q=speech] :: in-reply-to
|
[%ire p=serial q=speech] :: in-reply-to
|
||||||
[%lin p=? q=@t] :: no=@, text line
|
[%lin p=? q=@t] :: no=@, text line
|
||||||
[%mor p=(list speech)] :: XX deleteme
|
[%mor p=(list speech)] :: multiplex
|
||||||
== ::
|
== ::
|
||||||
++ serial ,@uvH :: unique identity
|
++ serial ,@uvH :: unique identity
|
||||||
++ partner (each station passport) :: interlocutor
|
++ partner (each station passport) :: interlocutor
|
@ -17,11 +17,11 @@
|
|||||||
;head
|
;head
|
||||||
;title: urbit Tree
|
;title: urbit Tree
|
||||||
;meta(name "viewport", content "width=device-width, initial-scale=1");
|
;meta(name "viewport", content "width=device-width, initial-scale=1");
|
||||||
;link(type "text/css", rel "stylesheet", href "/gen/docs/pub/tree/src/css/main.css");
|
;link(type "text/css", rel "stylesheet", href "/docs/pub/tree/src/css/main.css");
|
||||||
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js");
|
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js");
|
||||||
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js");
|
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js");
|
||||||
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js");
|
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/react/0.12.2/react.js");
|
||||||
;script(type "text/javascript", src "/gen/docs/pub/tree/src/js/main.js");
|
;script(type "text/javascript", src "/docs/pub/tree/src/js/main.js");
|
||||||
==
|
==
|
||||||
;body
|
;body
|
||||||
;script(type "text/javascript"):"""
|
;script(type "text/javascript"):"""
|
||||||
|
Loading…
Reference in New Issue
Block a user