1 USING: accessors io io.encodings.utf8 io.files kernel namespaces
2 sequences xml.syntax xml.writer xmode.catalog xmode.marker ;
5 : htmlize-tokens ( tokens -- xml )
7 [ str>> ] [ id>> ] bi [
9 [XML <span class=<->><-></span> XML]
13 : htmlize-line ( line-context line rules -- line-context' xml )
14 tokenize-line htmlize-tokens ;
16 : htmlize-lines ( lines mode -- xml )
17 [ f ] 2dip load-mode [ htmlize-line ] curry map nip
20 : default-stylesheet ( -- xml )
21 "resource:basis/xmode/code2html/stylesheet.css"
23 [XML <style><-></style> XML] ;
25 :: htmlize-stream ( path stream -- xml )
27 [ "" ] [ path over first find-mode htmlize-lines ]
29 default-stylesheet :> stylesheet
30 <XML <!DOCTYPE html> <html>
33 <title><-path-></title>
40 : htmlize-file ( path -- )
42 dup ".html" append utf8 [
43 input-stream get htmlize-stream write-xml