mirror of
https://github.com/urbit/shrub.git
synced 2024-12-05 10:26:02 +03:00
48 lines
1.1 KiB
Plaintext
48 lines
1.1 KiB
Plaintext
:: Kiln: Merge local desk from (optionally-)foreign one
|
|
::
|
|
:::: /hoon/merge/hood/gen
|
|
::
|
|
/? 310
|
|
/+ old-zuse
|
|
=, old-zuse
|
|
::
|
|
|%
|
|
++ beaky {knot knot knot ~}
|
|
++ sorc ?({bek/beaky ~} {her/@p sud/@tas ~})
|
|
--
|
|
::
|
|
::::
|
|
::
|
|
:- %say
|
|
|= $: {now/@da eny/@uvJ bek/beak}
|
|
{arg/{?(sorc {syd/$@(desk beaky) sorc})} cas/case gem/?(germ $auto)}
|
|
==
|
|
=* our p.bek
|
|
|^ :- %kiln-merge
|
|
^- {syd/desk her/ship sud/desk cas/case gem/?(germ $auto)}
|
|
?- arg
|
|
{@ @ ~}
|
|
=+(arg [sud ?.(=(our her) her (sein her)) sud (opt-case da+now) gem])
|
|
::
|
|
{^ ~}
|
|
=+ (pars bek.arg)
|
|
[dez ?.(=(our who) who (sein who)) dez (opt-case caz) gem]
|
|
::
|
|
{* @ @ ~}
|
|
:- (pars-src syd.arg)
|
|
=+(arg [her sud (opt-case da+now) gem])
|
|
::
|
|
{* ^ ~}
|
|
:- (pars-src syd.arg)
|
|
=+((pars bek.arg) [who dez (opt-case caz) gem])
|
|
==
|
|
++ opt-case |=(a/case ?:(=(*case cas) a cas)) :: override
|
|
++ pars |=(a/beaky `{{who/ship dez/desk caz/case} *}`(need (tome a)))
|
|
++ pars-src
|
|
|= syd/$@(desk beaky)
|
|
?@ syd syd
|
|
=+ (pars syd)
|
|
~| [%into-foreign who `path`syd]
|
|
?>(=(our who) dez)
|
|
--
|