aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-04-19 04:37:36 +0000
committerDavid Robillard <d@drobilla.net>2009-04-19 04:37:36 +0000
commit724a55ba4de8ba8e26d660a7c60eb0bf89ec9354 (patch)
tree78e6509003a84fd4a84552a7ac3c77c5bf16fc69
parent7025242227bc03b2e3fd70280ba2686a307252f9 (diff)
downloadresp-724a55ba4de8ba8e26d660a7c60eb0bf89ec9354.tar.gz
resp-724a55ba4de8ba8e26d660a7c60eb0bf89ec9354.tar.bz2
resp-724a55ba4de8ba8e26d660a7c60eb0bf89ec9354.zip
Prettier LaTeX output.
git-svn-id: http://svn.drobilla.net/resp/tuplr@116 ad02d1e2-f140-0410-9f75-f8b11f17cedd
-rwxr-xr-xhighlight.py94
1 files changed, 63 insertions, 31 deletions
diff --git a/highlight.py b/highlight.py
index 8ed2376..a26d239 100755
--- a/highlight.py
+++ b/highlight.py
@@ -5,7 +5,7 @@ import pygments
import re
from pygments import highlight
from pygments.lexers import SchemeLexer
-from pygments.formatters import HtmlFormatter
+from pygments.formatters import HtmlFormatter, LatexFormatter
from pygments.lexer import RegexLexer, bygroups
from pygments.token import *
from pygments.style import Style
@@ -22,12 +22,12 @@ class TuplrLexer(RegexLexer):
keywords = [ 'fn', 'def', 'if', 'match', 'ns', 'type' ]
builtins = [ 'cons', 'car', 'cdr' ]
- valid_name = r'[a-zA-Z0-9!$%&*+,/:<=>?@^_~|-]+'
+ valid_name = r'[.a-zA-Z0-9!$%&*+,/:<=>?@^_~|-]+'
tokens = {
'root' : [
- # types
- (r':?[A-Z][a-zA-Z.]*|:\([A-Z][a-zA-Z.\ ]*\)', Keyword.Type),
+ # types
+ (r':?[A-Z][a-zA-Z.]*|:\([A-Z][a-zA-Z.\ ]*\)', Keyword.Type),
# line comments
(r';.*$', Comment.Single),
@@ -62,7 +62,7 @@ class TuplrLexer(RegexLexer):
# remaining functions
(r'(?<=\()' + valid_name, Name.Function),
- # remaining variables
+ # remaining variables
(valid_name, Name.Variable),
# parenthesis
@@ -70,7 +70,7 @@ class TuplrLexer(RegexLexer):
],
}
-class TuplrStyle(Style):
+class TuplrStyleDark(Style):
default_style = "#FFF"
background_color = "#222"
styles = {
@@ -78,38 +78,70 @@ class TuplrStyle(Style):
Keyword: '#EE5',
Name: '#DDD',
Text: '#DDD',
-# Name.Function: '#0F0',
-# Name.Class: '#E55',
String: '#F88',
- Keyword.Type: '#5E5',
- Punctuation: '#AAA',
- Number: '#F88'
+ Keyword.Type: '#5E5',
+ Punctuation: '#AAA',
+ Number: '#F88'
+ }
+
+class TuplrStyleLight(Style):
+ default_style = "#FFF"
+ background_color = "#EEE"
+ styles = {
+ Comment: '#57C',
+ Keyword: '#AA0',
+ Name: '#777',
+ Text: '#777',
+ String: '#D66',
+ Keyword.Type: '#3C3',
+ Punctuation: '#888',
+ Number: '#D66'
}
if len(sys.argv) != 3:
- print 'USAGE: %s IN OUT' % sys.argv[0]
- sys.exit(1)
+ print 'USAGE: %s IN OUT' % sys.argv[0]
+ sys.exit(1)
infile = open(sys.argv[1], 'r')
text = infile.read()
infile.close()
-outfile = open(sys.argv[2], 'w')
-print >>outfile, '''<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>%s</title>
- <style type="text/css">''' % sys.argv[1]
-print >>outfile, HtmlFormatter(style=TuplrStyle).get_style_defs('.highlight')
-print >>outfile, ''' </style>
-</head>
-<body>
-'''
-print >>outfile, highlight(text, TuplrLexer(), HtmlFormatter())
-print >>outfile, '''</body>
-</html>
-'''
-outfile.close()
+if re.match('.*\.html$', sys.argv[2]):
+ outfile = open(sys.argv[2], 'w')
+ print >>outfile, '''<?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>%s</title>
+ <style type="text/css">''' % sys.argv[1]
+ print >>outfile, HtmlFormatter(style=TuplrStyleDark).get_style_defs('.highlight')
+ print >>outfile, ''' </style>
+ </head>
+ <body>
+ '''
+ print >>outfile, highlight(text, TuplrLexer(), HtmlFormatter(style=TuplrStyleDark))
+ print >>outfile, '''</body>
+ </html>
+ '''
+ outfile.close()
+
+if re.match('.*\.tex$', sys.argv[2]):
+ outfile = open(sys.argv[2], 'w')
+ print >>outfile, '''\\documentclass[10pt]{article}
+\\usepackage{fancyvrb}
+\\usepackage{color}'''
+ print >>outfile, LatexFormatter(style=TuplrStyleLight).get_style_defs()
+ print >>outfile, '\\newcommand\\PYlambda{$\\lambda$}'
+ print >>outfile, '\\newcommand\\PYbiglambda{$\\Lambda$}'
+ print >>outfile, '\\begin{document}'
+ out = highlight(text, TuplrLexer(), LatexFormatter(style=TuplrStyleLight))
+ print out
+ print "******************************************************************************"
+ out = out.replace('[fn', '[@PYlambda')
+ out = out.replace('[Fn', '[@PYbiglambda')
+ print out
+ print >>outfile, out
+ print >>outfile, '\\end{document}'
+ outfile.close()