mirror of
https://github.com/urbit/shrub.git
synced 2024-12-20 17:32:11 +03:00
62d7281156
Hoon files may want to import nouns from all files in a given directory. /~ lets you do so, importing as a (map @ta *) (but with typed values). Note the description as "directories" here, instead of "path prefix". The behavior, as implemented, will not include /path/hoon for /~ /path, instead only including /path/more/hoon and more deeply nested files. This seems to be, generally, the behavior you want, for example when importing from /app/myapp/* for /app/myapp/hoon. Actually using the resulting map requires some manual casting, which is not ideal. Some code style improvement work remains to be done as well.
73 lines
1.3 KiB
Plaintext
73 lines
1.3 KiB
Plaintext
:: lifted directly from ford, should probably be in zuse
|
|
=, clay
|
|
=< pile-rule
|
|
|%
|
|
++ pile-rule
|
|
|= pax=path
|
|
%- full
|
|
%+ ifix
|
|
:_ gay
|
|
:: parse optional /? and ignore
|
|
::
|
|
;~(plug gay (punt ;~(plug fas wut gap dem gap)))
|
|
|^
|
|
;~ plug
|
|
%+ cook (bake zing (list (list taut)))
|
|
%+ rune hep
|
|
(most ;~(plug com gaw) taut-rule)
|
|
::
|
|
%+ cook (bake zing (list (list taut)))
|
|
%+ rune lus
|
|
(most ;~(plug com gaw) taut-rule)
|
|
::
|
|
%+ rune tis
|
|
;~(plug sym ;~(pfix gap stap))
|
|
::
|
|
%+ rune sig
|
|
;~(plug sym ;~(pfix gap stap))
|
|
::
|
|
%+ rune cen
|
|
;~(plug sym ;~(pfix gap ;~(pfix cen sym)))
|
|
::
|
|
%+ rune buc
|
|
;~ (glue gap)
|
|
sym
|
|
;~(pfix cen sym)
|
|
;~(pfix cen sym)
|
|
==
|
|
::
|
|
%+ rune tar
|
|
;~ (glue gap)
|
|
sym
|
|
;~(pfix cen sym)
|
|
stap
|
|
==
|
|
::
|
|
%+ stag %tssg
|
|
(most gap tall:(vang & pax))
|
|
==
|
|
::
|
|
++ pant
|
|
|* fel=^rule
|
|
;~(pose fel (easy ~))
|
|
::
|
|
++ mast
|
|
|* [bus=^rule fel=^rule]
|
|
;~(sfix (more bus fel) bus)
|
|
::
|
|
++ rune
|
|
|* [bus=^rule fel=^rule]
|
|
%- pant
|
|
%+ mast gap
|
|
;~(pfix fas bus gap fel)
|
|
--
|
|
::
|
|
++ taut-rule
|
|
%+ cook |=(taut +<)
|
|
;~ pose
|
|
(stag ~ ;~(pfix tar sym))
|
|
;~(plug (stag ~ sym) ;~(pfix tis sym))
|
|
(cook |=(a=term [`a a]) sym)
|
|
==
|
|
--
|