urbit/pkg/arvo/lib/generators.hoon
2023-02-11 14:20:32 -05:00

39 lines
2.0 KiB
Plaintext

/- sole
=, sole
|%
++ produce :: construct result
|* pro=* ::
[p=*(list tank) q=[%& p=[~ u=pro]]] ::
::
++ prints :: add output tanks
|* [tan=(list tank) res=(sole-result)] ::
?@ res res ::
[p=`(list tank)`(welp tan p.res) q=q.res] ::
:: ::
++ print :: add output tank
|* [tan=tank res=(sole-result)] ::
?@ res res ::
[p=[i=tan t=p.res] q=q.res] ::
:: ::
++ prompt :: construct prompt
|* [pom=sole-prompt mor=(sole-dialog)] ::
[p=*(list tank) q=[%| p=pom q=mor]] ::
:: ::
++ curl :: fetch url
=| usr=knot ::
|* [pul=_purl:eyre fun=$-(httr:eyre *)] ::
:- p=*(list tank) ::
q=[%| p=`usr q=[pul %get ~ ~] r=fun] ::
:: ::
++ no-product :: empty result
[p=*(list tank) q=[%& ~]] ::
:: ::
++ parse :: 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) ::
--