urbit/lib/write.hoon
2016-01-31 22:16:26 -08:00

60 lines
1.4 KiB
Plaintext

:: File writer module
::
:::: /hoon/write/lib
::
|%
++ part {$write $0 pith} :: no state
++ pith $~
--
::
::::
::
|%
++ data $%({$json json} {$mime mime})
++ card $% {$exec wire @p $~ {beak silk}}
{$info wire @p toro}
==
--
::
::::
::
|= [bowl part]
=* par +<+
|_ moz/(list {bone card})
++ abet [(flop moz) `part`par]
++ emit |=(a/card %_(+> moz :_(moz [ost a])))
++ beak-now byk(r [%da now])
:: ++ poke-json
:: |= jon=json
:: =- (poke-data (need (- jon.+)))
:: => jo
:: %- ot :~
:: pax/(cu deft (su fel:stab))
:: dat/(of json/some mime/(pe / (cu taco so)) ~) :: XX mite
:: ==
::
++ poke-paste
|= {typ/?($hoon $md $txt) txt/@t} ^+ abet
(poke-data [`typ /web/paste/(scot %da now)] %mime / (taco txt))
::
++ poke-data
|= {{ext/(unit @t) pax/path} dat/data} ^+ abet
?~ ext $(ext [~ -.dat])
=+ cay=?-(-.dat $json [-.dat !>(+.dat)], $mime [-.dat !>(+.dat)])
?: =(u.ext -.dat)
(made pax ~ `cay)
=< abet
%^ emit %exec write+pax :: XX defer %nice
[our ~ beak-now %cast u.ext `cay]
::
++ made
|= {pax/wire @ res/gage} ^+ abet
?. =(our src)
~|(foreign-write+[our=our src=src] !!)
?+ -.res ~|(gage+-.res !!)
$| (mean p.res)
$& =- abet:(emit %info write+~ our -)
(foal :(welp (tope beak-now ~) pax /[-.p.res]) p.res)
==
--