|%
++  static                                              :: freeze .mdh hoon subset
  |=  gen/hoon  ^-  {inf/(map term dime) elm/manx}
  ?+    -.gen
      =/  gen  ~(open ap gen)
      ?:  =(gen ^gen)  ~|([%cram-dynamic -.gen] !!)
      $(gen gen)
  ::
    $xray  [~ (single (shut gen))]
    ^     [(malt (frontmatter p.gen)) (single (shut q.gen))]
  ==
::
++  single                                              :: unwrap one-elem marl
  |=  xml/marl  ^-  manx
  ?:  ?=({* $~} xml)  i.xml
  ~|(%many-elems !!)
::
++  shut-mart                                           :: xml attrs
  |=({n/mane v/(list beer:hoon)} [n (turn v |=(a/beer:hoon ?^(a !! a)))])
::
++  shut                                                :: as xml constant
  |=  gen/hoon  ^-  marl
  ?+    -.gen  ~|([%bad-xml -.gen] !!)
      $dbug  $(gen q.gen)
  ::
      $xray
    [[n.g.p.gen (turn a.g.p.gen shut-mart)] $(gen [%smts c.p.gen])]~
  ::
      $smts
    ?~  p.gen  ~
    =-  (weld - $(p.gen t.p.gen))
    ?^  -.i.p.gen  $(gen [%xray i.p.gen])
    ~|  [%shut-tuna -.i.p.gen]
    ?+  -.i.p.gen  !!
      $manx  ?>(?=($xray -.p.i.p.gen) $(gen p.i.p.gen))
      $marl  ?>(?=($smts -.p.i.p.gen) $(gen p.i.p.gen))
    ==
  ==
::
::
++  frontmatter                                         :: parse ~[[%foo 1] [%bar ~s2]]
  |=  gen/hoon  ^-  (list {term dime})
  ?:  ?=({$bust $null} gen)  ~
  ?:  ?=($dbug -.gen)  $(gen q.gen)
  ?.  ?=($clsg -.gen)  ~|([%bad-frontmatter -.gen] !!)
  %+  turn  p.gen
  |=  gen/hoon
  ?.  ?=(^ -.gen)
    =/  gen  ~(open ap gen)
    ?:  =(gen ^gen)  ~|([%bad-frontmatter-elem -.gen] !!)
    $(gen gen)
  =/  hed  (as-dime p.gen)
  ?.  =(%tas p.hed)  ~|([%bad-frontmatter-key-type p.hed] !!)
  [q.hed (as-dime q.gen)]
::
++  as-dime                                            :: %foo ~.foo 0vbar etc
  |=  gen/hoon  ^-  dime
  ?:  ?=($dbug -.gen)  $(gen q.gen)
  ?.  ?=({?($rock $sand) @ @} gen)  ~|([%bad-literal gen] !!)
  +.gen
--