1 USING: xmode.tokens xmode.marker xmode.catalog kernel io io.files
2 sequences words io.encodings.utf8 namespaces xml.entities accessors
3 xml.syntax locals xml.writer ;
6 : htmlize-tokens ( tokens -- xml )
8 [ str>> ] [ id>> ] bi [
10 [XML <span class=<->><-></span> XML]
14 : htmlize-line ( line-context line rules -- line-context' xml )
15 tokenize-line htmlize-tokens ;
17 : htmlize-lines ( lines mode -- xml )
18 [ f ] 2dip load-mode [ htmlize-line ] curry map nip
21 : default-stylesheet ( -- xml )
22 "resource:basis/xmode/code2html/stylesheet.css"
24 [XML <style><-></style> XML] ;
26 :: htmlize-stream ( path stream -- xml )
28 [ "" ] [ path over first find-mode htmlize-lines ]
30 default-stylesheet :> stylesheet
34 <title><-path-></title>
41 : htmlize-file ( path -- )
43 dup ".html" append utf8 [
44 input-stream get htmlize-stream write-xml