| 1 |
|
|---|
| 2 |
|
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 |
"""HTML pretty-printing for Python source code.""" |
|---|
| 7 |
|
|---|
| 8 |
__version__ = '$Revision: 1.8 $'[11:-2] |
|---|
| 9 |
|
|---|
| 10 |
from twisted.python import htmlizer, usage |
|---|
| 11 |
from twisted import copyright |
|---|
| 12 |
|
|---|
| 13 |
import os, sys |
|---|
| 14 |
|
|---|
| 15 |
header = '''<html><head> |
|---|
| 16 |
<title>%(title)s</title> |
|---|
| 17 |
<meta name=\"Generator\" content="%(generator)s" /> |
|---|
| 18 |
%(alternate)s |
|---|
| 19 |
%(stylesheet)s |
|---|
| 20 |
</head> |
|---|
| 21 |
<body> |
|---|
| 22 |
''' |
|---|
| 23 |
footer = """</body>""" |
|---|
| 24 |
|
|---|
| 25 |
styleLink = '<link rel="stylesheet" href="%s" type="text/css" />' |
|---|
| 26 |
alternateLink = '<link rel="alternate" href="%(source)s" type="text/x-python" />' |
|---|
| 27 |
|
|---|
| 28 |
class Options(usage.Options): |
|---|
| 29 |
synopsis = """%s [options] source.py |
|---|
| 30 |
""" % ( |
|---|
| 31 |
os.path.basename(sys.argv[0]),) |
|---|
| 32 |
|
|---|
| 33 |
optParameters = [ |
|---|
| 34 |
('stylesheet', 's', None, "URL of stylesheet to link to."), |
|---|
| 35 |
] |
|---|
| 36 |
zsh_extras = ["1:source python file:_files -g '*.py'"] |
|---|
| 37 |
|
|---|
| 38 |
def parseArgs(self, filename): |
|---|
| 39 |
self['filename'] = filename |
|---|
| 40 |
|
|---|
| 41 |
def run(): |
|---|
| 42 |
options = Options() |
|---|
| 43 |
try: |
|---|
| 44 |
options.parseOptions() |
|---|
| 45 |
except usage.UsageError, e: |
|---|
| 46 |
print str(e) |
|---|
| 47 |
sys.exit(1) |
|---|
| 48 |
filename = options['filename'] |
|---|
| 49 |
if options.get('stylesheet') is not None: |
|---|
| 50 |
stylesheet = styleLink % (options['stylesheet'],) |
|---|
| 51 |
else: |
|---|
| 52 |
stylesheet = '' |
|---|
| 53 |
|
|---|
| 54 |
output = open(filename + '.html', 'w') |
|---|
| 55 |
try: |
|---|
| 56 |
output.write(header % { |
|---|
| 57 |
'title': filename, |
|---|
| 58 |
'generator': 'htmlizer/%s' % (copyright.longversion,), |
|---|
| 59 |
'alternate': alternateLink % {'source': filename}, |
|---|
| 60 |
'stylesheet': stylesheet |
|---|
| 61 |
}) |
|---|
| 62 |
htmlizer.filter(open(filename), output, |
|---|
| 63 |
htmlizer.SmallerHTMLWriter) |
|---|
| 64 |
output.write(footer) |
|---|
| 65 |
finally: |
|---|
| 66 |
output.close() |
|---|