mirror of
https://github.com/urbit/shrub.git
synced 2024-12-01 22:55:03 +03:00
116 lines
7.4 KiB
Plaintext
116 lines
7.4 KiB
Plaintext
::
|
|
:::: /hoon#sole#sur
|
|
!:
|
|
|%
|
|
++ sole-action :: sole to app
|
|
$% :: {$abo ~} :: reset interaction
|
|
{$det sole-change} :: command line edit
|
|
{$ret $~} :: submit and clear
|
|
{$clr $~} :: exit context
|
|
== ::
|
|
++ 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-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
|
|
{$url p+@t} :: activate url
|
|
== ::
|
|
++ 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-share :: symmetric state
|
|
$: ven+sole-clock :: our vector clock
|
|
leg+(list sole-edit) :: unmerged edits
|
|
buf+sole-buffer :: sole state
|
|
== ::
|
|
:: ::
|
|
:: ::
|
|
++ sole-dialog :: standard dialog
|
|
|* out+$+(* *) :: output structure
|
|
$+(sole-input (sole-result out)) :: output function
|
|
:: ::
|
|
++ sole-input tape :: prompt input
|
|
++ sole-result :: conditional result
|
|
|* out+$+(* *) :: output structure
|
|
$@(@ud (sole-product out)) :: error position
|
|
:: ::
|
|
++ sole-product :: success result
|
|
|* out+$+(* *) ::
|
|
%+ pair (list tank) ::
|
|
%+ each (unit out) :: ~ is abort
|
|
(pair sole-prompt (sole-dialog out)) :: ask and continue
|
|
:: ::
|
|
++ sole-request :: scraper result
|
|
|* out+$+(* *) :: output structure
|
|
%+ pair (list tank) ::
|
|
%+ each (unit out) :: ~ is abort
|
|
(pair hiss $+(httr (sole-request out))) :: fetch and continue
|
|
:: ::
|
|
++ sole-gen :: XX virtual type
|
|
$% {$say $+((sole-args) (cask))} :: direct noun
|
|
{$ask $+((sole-args) (sole-product (cask)))} :: dialog
|
|
{$get $+((sole-args) (sole-request (cask)))} :: scraper
|
|
== ::
|
|
++ sole-args :: generator arguments
|
|
|* _[* *] ::
|
|
{{now+@da eny+@uvI bek+beak} {+<- +<+}} ::
|
|
:: ::
|
|
:: ::
|
|
++ sole-so :: construct result
|
|
|* pro+* ::
|
|
[p=*(list tank) q=[%& p=[~ u=pro]]] ::
|
|
:: ::
|
|
++ sole-yo :: add output tank
|
|
|* {tan+tank res+(sole-result)} ::
|
|
?@ res res ::
|
|
[p=[i=tan t=p.res] q=q.res] ::
|
|
:: ::
|
|
++ sole-lo :: construct prompt
|
|
|* {pom+sole-prompt mor+(sole-dialog)} ::
|
|
[p=*(list tank) q=[%| p=pom q=mor]] ::
|
|
:: ::
|
|
++ sole-at :: fetch url
|
|
|* {pul+_purl fun+$+(httr *)} ::
|
|
[p=*(list tank) q=[%| p=[pul %get ~ ~] q=fun]] ::
|
|
:: ::
|
|
++ sole-no :: empty result
|
|
[p=*(list tank) q=[%& ~]] ::
|
|
:: ::
|
|
++ sole-go :: parse by rule
|
|
|* {sef+rule fun+$+(* *)} ::
|
|
|= txt+sole-input ::
|
|
=+ vex=(sef [0 0] txt) ::
|
|
?: |(!=((lent txt) q.p.vex) ?=($~ q.vex)) ::
|
|
q.p.vex ::
|
|
(fun p.u.q.vex) ::
|
|
--
|