USING: xmode.tokens xmode.marker xmode.catalog kernel io io.files
sequences words io.encodings.utf8 namespaces xml.entities accessors
xml.syntax locals xml.writer ;
IN: xmode.code2html
: htmlize-tokens ( tokens -- xml )
[
[ str>> ] [ id>> ] bi [
name>> swap
[XML ><-> XML]
] when*
] map ;
: htmlize-line ( line-context line rules -- line-context' xml )
tokenize-line htmlize-tokens ;
: htmlize-lines ( lines mode -- xml )
[ f ] 2dip load-mode [ htmlize-line ] curry map nip
{ "\n" } join ;
: default-stylesheet ( -- xml )
"resource:basis/xmode/code2html/stylesheet.css"
utf8 file-contents
[XML XML] ;
:: htmlize-stream ( path stream -- xml )
stream stream-lines
[ "" ] [ path over first find-mode htmlize-lines ]
if-empty :> input
default-stylesheet :> stylesheet
<-stylesheet->
<-path->
<-input->