:: :::: /hoon/frontmatter/lib :: /? 314 !: |% ++ atr-lines |= atr=(map cord cord) %+ turn (sort (~(tap by atr)) |=([[a=@ @] [b=@ @]] (aor a b))) |= [k=cord v=cord] (rap 3 k ': ' v ~) :: ++ atr-key ;~(sfix (star ;~(less col prn)) col ace) ++ print |= [atr=(map cord cord) src=wain] ?~ atr src ['---' (welp (atr-lines atr) '---' src)] ++ parse =| atr=(map cord cord) |= wan=wain ^+ [atr mud=''] ?~ wan [~ ''] ?^ (rush i.wan (star ace)) $(wan t.wan) ?. =('---' i.wan) [~ (role wan)] |- ^+ [atr mud=''] ?~ t.wan ~|(%unclosed-metadata !!) ?: =('---' i.t.wan) [atr (role t.t.wan)] ?^ (rush i.t.wan (star ace)) $(wan t.wan) =- $(wan t.wan, atr (~(put by atr) (crip key) (crip val))) ~| malformed-attribute/i.t.wan ^- [key=tape ^ val=tape] +>:(atr-key 1^1 (trip i.t.wan)) --