#!/usr/bin/python """ Converts source code (first parameter, can be - for stdin) to HTML (stdout), using pygments if installed, otherwise simple text manipulation without syntax highlighting. In both cases the output will have "True-" as anchors for each line. """ import sys filename = sys.argv[1] if filename == '-': code = sys.stdin.read() else: code = open(filename).read() out = sys.stdout try: import pygments import pygments.lexers from pygments.formatters import HtmlFormatter if filename == '-': lexer = pygments.lexers.guess_lexer(code) else: lexer = pygments.lexers.guess_lexer_for_filename(filename, code) formatter = HtmlFormatter(full=True, linenos=True, lineanchors=True) pygments.highlight(code, lexer, formatter, out) except: import cgi print >>sys.stderr, "source2html.py failed with pygments:", sys.exc_info() print >>sys.stderr, "falling back to internal code" out.write('''
''')
    lines = code.split('\n')
    for line in range(1, len(lines)):
        out.write('%4d\n' % line)
    out.write('%4d' % len(lines))
    out.write('
')
    for lineno, line in enumerate(lines):
        out.write('%s\n' % (lineno + 1, cgi.escape(line)))
    out.write('''
''')