2008-05-27 02:18:38 -04:00
|
|
|
USING: xmode.tokens xmode.marker xmode.catalog kernel
|
2008-03-11 04:39:09 -04:00
|
|
|
html.elements io io.files sequences words io.encodings.utf8
|
2008-06-01 18:22:39 -04:00
|
|
|
namespaces xml.entities accessors ;
|
2007-11-28 23:34:11 -05:00
|
|
|
IN: xmode.code2html
|
|
|
|
|
|
|
|
: htmlize-tokens ( tokens -- )
|
|
|
|
[
|
2008-06-01 18:22:39 -04:00
|
|
|
[ str>> ] [ id>> ] bi [
|
2008-06-28 03:36:20 -04:00
|
|
|
<span name>> =class span> escape-string write </span>
|
2007-11-28 23:34:11 -05:00
|
|
|
] [
|
2008-06-01 18:22:39 -04:00
|
|
|
escape-string write
|
2007-11-28 23:34:11 -05:00
|
|
|
] if*
|
|
|
|
] each ;
|
|
|
|
|
|
|
|
: htmlize-line ( line-context line rules -- line-context' )
|
|
|
|
tokenize-line htmlize-tokens ;
|
|
|
|
|
2007-12-06 00:23:18 -05:00
|
|
|
: htmlize-lines ( lines mode -- )
|
2007-12-06 01:03:27 -05:00
|
|
|
f swap load-mode [ htmlize-line nl ] curry reduce drop ;
|
2007-11-28 23:34:11 -05:00
|
|
|
|
|
|
|
: default-stylesheet ( -- )
|
|
|
|
<style>
|
2008-05-06 13:37:11 -04:00
|
|
|
"resource:extra/xmode/code2html/stylesheet.css"
|
2008-05-23 18:45:14 -04:00
|
|
|
utf8 file-contents escape-string write
|
2007-11-28 23:34:11 -05:00
|
|
|
</style> ;
|
|
|
|
|
2007-12-06 00:23:18 -05:00
|
|
|
: htmlize-stream ( path stream -- )
|
|
|
|
lines swap
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
default-stylesheet
|
2008-05-23 18:45:14 -04:00
|
|
|
<title> dup escape-string write </title>
|
2007-12-06 00:23:18 -05:00
|
|
|
</head>
|
|
|
|
<body>
|
2007-12-06 01:03:27 -05:00
|
|
|
<pre>
|
|
|
|
over empty?
|
|
|
|
[ 2drop ]
|
|
|
|
[ over first find-mode htmlize-lines ] if
|
|
|
|
</pre>
|
2007-12-06 00:23:18 -05:00
|
|
|
</body>
|
|
|
|
</html> ;
|
|
|
|
|
2007-11-28 23:34:11 -05:00
|
|
|
: htmlize-file ( path -- )
|
2008-03-11 04:39:09 -04:00
|
|
|
dup utf8 [
|
2008-05-05 03:19:25 -04:00
|
|
|
dup ".html" append utf8 [
|
|
|
|
input-stream get htmlize-stream
|
2008-03-11 04:39:09 -04:00
|
|
|
] with-file-writer
|
|
|
|
] with-file-reader ;
|