urbit/mar/sole/effect.hoon
Anton Dyudin 4e12caea2d move ->lens-json conversion to mar/sole-effect,
lens ack logic inside ++ix
2016-03-31 14:23:23 -07:00

77 lines
2.0 KiB
Plaintext

::
:::: /hoon/effect/sole/mar
::
/? 310
/- sole
!:
::::
::
[sole .]
|%
++ mar-sole-change :: XX dependency
|_ cha/sole-change
++ grow
|% ++ json
^- ^json
=+ cha
=< (jobe ted+(. ted) ler+a+~[(jone own.ler) (jone his.ler)] ~)
|= det/sole-edit
?- -.det
$nop [%s 'nop']
$mor [%a (turn p.det ..$)]
$del (joba %del (jone p.det))
$set (joba %set (jape (tufa p.det)))
$ins (joba %ins (jobe at+(jone p.det) cha+s+(tuft q.det) ~))
==
--
--
++ wush
|= {wid/@u tan/tang}
^- tape
=+ rolt=|=(a/wall `tape`?~(a ~ ?~(t.a i.a :(weld i.a "\0a" $(a t.a)))))
(rolt (turn (flop tan) |=(a/tank (rolt (wash 0^wid a)))))
::
--
!:
|_ sef/sole-effect
::
++ grab :: convert from
|%
++ noun sole-effect :: clam from %noun
--
++ grow
|%
++ lens-json :: json for cli client
^- ?($~ ^json) :: null = ignore
?+ -.sef ~
$tan s+(role (turn (flop p.sef) |=(a/tank (crip ~(ram re a)))))
$txt s+(crip p.sef)
$sav
(jobe file+s+(crip <`path`p.sef>) data+s+(crip (sifo q.sef)) ~)
::
$mor
=+ all=(turn p.sef |=(a/sole-effect lens-json(sef a)))
=. all (skip all |=(a/^json ?=($~ a)))
?~ all ~
?~ t.all i.all
~|(multiple-effects+`(list ^json)`all !!)
==
::
++ 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 (joba %det json:~(grow mar-sole-change +.sef))
$pro
(joba %pro (jobe vis+b+vis.sef tag+s+tag.sef cad+(jape cad.sef) ~))
::
?($bel $clr $nex)
(joba %act %s -.sef)
==
--
--