126 lines
3.3 KiB
Plaintext
126 lines
3.3 KiB
Plaintext
/- tp=post
|
|
/+ sr=sortug
|
|
|%
|
|
++ content
|
|
|= c=content-list:tp ^- marl
|
|
(turn c block)
|
|
++ block
|
|
|= b=block:tp ^- manx
|
|
?+ -.b ;p;
|
|
%paragraph (pg +.b)
|
|
%blockquote (bq +.b)
|
|
%heading (heading +.b)
|
|
%list (htmlist +.b)
|
|
%media (media +.b)
|
|
%codeblock (codeblock +.b)
|
|
%eval (eval +.b)
|
|
==
|
|
++ eval
|
|
|= txt=@t ^- manx
|
|
:: Ream can crash if the cord is wrong
|
|
:: soften instead
|
|
=/ uhoon (rush txt vest)
|
|
?~ uhoon ;p:"The hoon you tried to run ({(trip txt)}) is invalid."
|
|
=/ run %- mule |.
|
|
%+ slap !>(..zuse) u.uhoon
|
|
?: ?=(%.n -.run) :: if virtualization fails get a (list tank)
|
|
;p
|
|
;span:"Evaluation of {(trip txt)} failed:"
|
|
;br;
|
|
;* %+ turn p.run |= t=tank ;span:"{~(ram re t)}"
|
|
==
|
|
;p:"{(text p.run)}"
|
|
++ pg
|
|
|= l=(list inline:tp) ^- manx
|
|
;p
|
|
;* %+ turn l inline
|
|
==
|
|
++ bq
|
|
|= l=(list inline:tp) ^- manx
|
|
;blockquote
|
|
;* %+ turn l inline
|
|
==
|
|
++ htmlist
|
|
|= [l=(list content-list:tp) ordered=?]
|
|
?: ordered
|
|
;ol
|
|
;* %+ turn l li
|
|
==
|
|
;ul
|
|
;* %+ turn l li
|
|
==
|
|
++ li
|
|
|= l=content-list:tp ^- manx
|
|
;li
|
|
;* (turn l block)
|
|
==
|
|
++ media
|
|
|= m=media:tp ^- manx
|
|
?- -.m
|
|
%video ;video@"{(trip p.m)}";
|
|
%audio ;audio@"{(trip p.m)}";
|
|
%images ;div.images
|
|
;* %+ turn p.m
|
|
|= [url=@t caption=@t] ;img@"{(trip url)}"(alt (trip caption));
|
|
==
|
|
==
|
|
++ codeblock
|
|
|= [code=@t lang=@t] :: TODO lang suff
|
|
;pre
|
|
;code:"{(trip code)}"
|
|
==
|
|
++ heading
|
|
|= [pp=@t q=@] ^- manx
|
|
=/ p (trip pp)
|
|
?: .=(1 q) ;h1:"{p}"
|
|
?: .=(2 q) ;h2:"{p}"
|
|
?: .=(3 q) ;h3:"{p}"
|
|
?: .=(4 q) ;h4:"{p}"
|
|
?: .=(5 q) ;h5:"{p}"
|
|
?: .=(6 q) ;h6:"{p}"
|
|
;p:""
|
|
++ inline
|
|
|= l=inline:tp ^- manx
|
|
?+ -.l ;span;
|
|
%text (parse-text p.l)
|
|
%italic ;i:"{(trip p.l)}"
|
|
%bold ;strong:"{(trip p.l)}"
|
|
:: %strike ;del:"{(trip p.l)}"
|
|
%ship ;span.ship:"{(trip (scot %p p.l))}"
|
|
%codespan ;code:"{(trip p.l)}"
|
|
%break ;br;
|
|
%img ;a/"{(trip src.l)}"
|
|
;img@"{(trip src.l)}"(alt (trip alt.l));
|
|
==
|
|
%link ?. (is-image:parsing:sr href.l)
|
|
;a/"{(trip href.l)}"(target "_blank"):"{(trip show.l)}"
|
|
;a/"{(trip href.l)}"
|
|
=target "_blank"
|
|
;img@"{(trip href.l)}"(alt (trip show.l));
|
|
==
|
|
==
|
|
++ parse-text
|
|
|= txt=@t ^- manx
|
|
=/ tpe (trip txt)
|
|
=/ youtube (rush txt youtube:parsing:sr)
|
|
?^ youtube
|
|
:: ;a/"{tpe}"
|
|
:: ;img@"https://i.ytimg.com/vi/{u.youtube}/hqdefault.jpg";
|
|
:: ==
|
|
;iframe.youtube-frame@"https://www.youtube.com/embed/{u.youtube}";
|
|
=/ twatter-status (rush txt twatter:parsing:sr)
|
|
?^ twatter-status
|
|
;div :: goddamn twatter embeds insert themselves as last child
|
|
;a.parsed-twatter(status u.twatter-status):"{tpe}"
|
|
==
|
|
=/ trimmed (rush txt trim:parsing:sr)
|
|
?~ trimmed ~& parsing-error=txt ;span.parsing-error;
|
|
=/ link=(unit purl:eyre) (rust u.trimmed link:parsing:sr)
|
|
?^ link
|
|
?^ p.q.u.link
|
|
?: (is-img:parsing:sr u.p.q.u.link) ;img@"{u.trimmed}";
|
|
;a.parsed-link/"{tpe}"(target "_blank"):"{tpe}" :: normal link
|
|
;a.parsed-link/"{tpe}"(target "_blank"):"{tpe}" :: normal link
|
|
;span:"{tpe}"
|
|
--
|