| 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() |
|---|