:: ++down rendering arms :: :::: /hoon/rend/down-jet/lib :: /? 310 /- *markdown :: =, format =, html :: |% ++ into-inner |= {a/marl b/manx} ?~ c.b b(c a) $(b i.c.b) :: ++ flat |= a/marl ^- tape ?~ a ~ %+ weld ^- tape ?~ n.g.i.a ?>(?=(_;/(**) i.a) v.i.a.g.i.a) ?+ n.g.i.a $(a c.i.a) $img %- zing ^- wall %+ murn a.g.i.a |= {a/mane b/tape} ^- (unit tape) ?+ a ~ $alt [~ b] == == $(a t.a) :: ++ sanitize |= a/marl ^- tape =- (zing `wall`(scan (flat a) fel)) =< fel=;~(sfix (star ;~(plug (cold '-' -) (plus +))) (star next)) [(star ;~(less aln prn)) ;~(pose nud low (cook |=(a/@ (add a ' ')) hig))] :: ++ sang :: tight item children |= a/(list elem) ^- marl ?~ a ~ %+ weld ?. ?=($para -.i.a) (sing i.a ~) (sung p.i.a) $(a t.a) :: ++ sing :: elem to manx =, html => |% ++ first-word |= a/tape =. a (trip (crip a)) :: XX valid tapes ^- (unit tape) =. a q.q:(need q:((star ace) [1 1] a)) =+ vex=((plus ;~(less ace prn)) [1 1] a) ?~ q.vex ~ (some (wonk vex)) -- =+ [tig=| had=*(unit mane)] |= lum/(list elem) |^ ^- marl =+ a=apex ?~ q.a p.a (weld p.a $(lum q.a)) :: ++ apex ^- {p/marl q/_lum} ?~ lum ?~ had [~ ~] (lose "unclosed {}") => [ele=i.lum .(lum t.lum)] ?. ?=($html -.ele) (push (reso ele) ~) :: begin reparsing of html that the spec jankily lets through :: =+ tex=(trip (of-wain p.ele)) =^ mar lum (chomp tex (sear |=(a/marl ?~(a ~ (some a))) many:de-xml)) ?^ mar (push u.mar) =^ hed lum (chomp tex head:de-xml) ?^ hed =+ max=`marx`u.hed (push(lum q) [max p] ~):[apex(had `n.max) .] =^ tal lum (chomp tex tail:de-xml) ?~ tal =^ cha lum (chomp tex prn) ?^ cha (push ;/([u.cha]~) ~) (push ;lost:"{tex}" ~) ?: =(had tal) [~ lum] ?^ had =. lum [ele lum] (lose "unclosed {}") (lose "close {}") :: end reparsing of html that the spec jankily lets through :: :: ++ lose |=(a/tape [[;lost:"{a}"]~ lum]) ++ chomp |* {tap/tape fel/rule} ^- {(unit _(wonk *fel)) _lum} =+ vex=(fel 1^1 tap) ?~ q.vex [~ lum] :- [~ (wonk vex)] ?~(q.q.u.q.vex lum [[%html (to-wain (crip q.q.u.q.vex))] lum]) :: ++ push |= a/marl ^+ apex ?~ a apex [[b p] q]:[b=i.a (push t.a)] :: ++ reso |= a/elem ?^ -.a =. tig ?.(?=($list -.p.a) tig p.p.a) ?: &(tig ?=($item -.p.a)) [/li (sang q.a)] %+ into-inner ^$(lum q.a) ?- -.p.a $bloq ;blockquote; $item ;li; $list ?@ q.p.a ;ul; ?: =(1 p.q.p.a) ;ol; =+ num=(en-json (numb:enjs p.q.p.a)) ;ol(start num); == ?- -.a :: ;/("unimplemented {}") $html !! :: handled earlier XX do type stuff $para [/p (sung p.a)] $head =+ [hed=(add %h0 (lsh 3 1 p.a)) kid=(sung q.a)] [[hed id+(sanitize kid) ~] kid] :: $hrul ;hr; $meta ?: =(~ p.a) ;/(~) =+ jon=`json`o+(~(run by p.a) |=(cord s++<)) ;meta(value "{(en-json jon)}", name "frontmatter", urb_front ""); :: %html ::=+ tex=(of-wain (turn p.a crip)) ::=+ (de-xml tex) ::?^ - u.- ::=+ (rush tex (star ;~(pose gah comt:de-xml))) ::?^ - ;/(~) ::;lost: {} :: ;/([(of-wain (turn p.a crip))]~) :: XX haaaaaaack $defn ;/(~) $code =+ lan=?~(p.a ~ (first-word r.u.p.a)) =+ tex=(trip (of-wain q.a)) ?~ lan ;pre:code:"{tex}" ;pre:code(class "language-{u.lan}"):"{tex}" == -- :: ++ sung |= lim/kids =+ had=*(unit mane) |^ ^- marl =+ a=apex ?~ q.a p.a (weld p.a $(lim q.a)) :: ++ apex ^- {p/marl q/_lim} ?~ lim ?~ had [~ ~] (lose "unclosed {}") => [ele=i.lim .(lim t.lim)] ?. ?=($htmt -.ele) ?: &(?=($$ -.ele) ?=({{$$ *} *} lim)) apex(p.i.lim (weld p.ele p.i.lim)) (push (reso ele) ~) =+ tex=(trip p.ele) =^ emo lim (chomp tex empt:de-xml) ?^ emo =+ man=`manx`u.emo (push man ~) =^ hed lim (chomp tex head:de-xml) ?^ hed =+ max=`marx`u.hed (push(lim q) [max p] ~):[apex(had `n.max) .] =^ tal lim (chomp tex tail:de-xml) ?~ tal (push ;lost:"{tex}" ~) ?: =(had tal) [~ lim] ?^ had =. lim [ele lim] (lose "unclosed {}") (lose "unopened {}") :: ++ lose |=(a/tape [[;lost:"{a}"]~ lim]) ++ chomp |* {tap/tape fel/rule} ^- {(unit _(wonk *fel)) _lim} =+ vex=(fel 1^1 tap) ?~ q.vex [~ lim] :- [~ (wonk vex)] ?~(q.q.u.q.vex lim [[%htmt (crip q.q.u.q.vex)] lim]) :: ++ push |= a/marl ^+ apex ?~ a apex [[b p] q]:[b=i.a (push t.a)] :: ++ urly |= a/tape ^- tape ?~ a ~ ?: ?| [?=(^ q)]:(alp 1^1 a) (~(has in (silt "#!*'();:@&=+$,/?/%.~_")) i.a) :: XX reparse == [i.a $(a t.a)] (weld (en-urlt:html (trip i.a)) $(a t.a)) :: ++ reso |= b/inline ^- manx ?@ -.b ?- -.b $$ ;/(p.b) $line ;br; $code ;code:"{p.b}" $htmt !! ::p.b :: handled earlier :: XX do type stuff == ?: ?=($blot -.p.b) =+ res=`manx`;img(src (urly p.p.b), alt (flat (turn q.b ..$))); :: ;img@"{p.p.b}"; ?~ q.p.b res res(a.g (welp a.g.res title+u.q.p.b ~)) =+ kid=(sung q.b) %+ into-inner kid ?- p.b {$emph ?} ?.(p.p.b ;em; ;strong;) {$delt ~} ;del; {$link ^} =+ url=(urly p.p.b) =. url ?^(url url "#{(sanitize kid)}") ?~ q.p.b ;a/"{url}"; ;a/"{url}"(title u.q.p.b); == -- --