# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. # """ HTML pretty-printing for Python source code. """ __version__ = "$Revision: 1.8 $"[11:-2] import os import sys from twisted import copyright from twisted.python import htmlizer, usage header = """ %(title)s %(alternate)s %(stylesheet)s """ footer = """""" styleLink = '' alternateLink = '' class Options(usage.Options): synopsis = """{} [options] source.py """.format( os.path.basename(sys.argv[0]), ) optParameters = [ ("stylesheet", "s", None, "URL of stylesheet to link to."), ] compData = usage.Completions( extraActions=[usage.CompleteFiles("*.py", descr="source python file")] ) def parseArgs(self, filename): self["filename"] = filename def run(): options = Options() try: options.parseOptions() except usage.UsageError as e: print(str(e)) sys.exit(1) filename = options["filename"] if options.get("stylesheet") is not None: stylesheet = styleLink % (options["stylesheet"],) else: stylesheet = "" with open(filename + ".html", "wb") as output: outHeader = header % { "title": filename, "generator": f"htmlizer/{copyright.longversion}", "alternate": alternateLink % {"source": filename}, "stylesheet": stylesheet, } output.write(outHeader.encode("utf-8")) with open(filename, "rb") as f: htmlizer.filter(f, output, htmlizer.SmallerHTMLWriter) output.write(footer.encode("utf-8"))