urbit/lib/tree.hoon
Raymond Pasco 309805f5e7 Merge in Hoon 151
Complicated merge of Hoon 151. This commit is a major sequence point.
2016-02-10 14:03:28 -05:00

42 lines
1.3 KiB
Plaintext

::
:::: /hoon/tree/lib
::
/- tree-include
!:
|%
++ getall :: search in manx
|= tag/(list mane)
|= ele/manx ^- marl
?: (lien tag |=(a/mane =(a n.g.ele)))
~[ele]
(zing (turn c.ele ..$))
::
++ map-to-json :: hoon data to json
|* {a/$-(* cord) b/$-(* json)}
|* c/(map) ^- json :: XX c=(map _+<.a _+<.b)
~! c
(jobe (turn (~(tap by c)) |*(* [(a +<-) (b +<+)])))
::
:: a.b_c.d => [[%a %b] [%c %d]]
:: a.b_c, a_b__c => [[%a %b] %c]
:: a_b_c, a__b_c => [%a [%b %c]]
++ read-schem :: decode gapped noun
=< (cook to-noun (cook build-grove apex))
|%
++ noun $@(term {noun noun}) :: shadow
:: improper list of possible entry points
++ grove $@(term {gap/@ sealed/noun pending/grove})
++ apex ;~(plug sym (star ;~(plug delim sym)))
++ delim ;~(pose (cold 0 dot) (cook lent (plus cab)))
++ to-noun |=(a/grove ?@(a a [sealed.a $(a pending.a)]))
++ build-grove
|= {a/grove b/(list {p/@u q/term})} ^- grove
%+ roll b =< .(acc a)
|= {{gap/@u v/term} acc/grove} ^- grove
?@ acc [gap acc v]
?: (gth gap gap.acc) [gap (to-noun acc) v]
acc(pending $(acc pending.acc))
--
--