| #! /usr/bin/env python |
| # -*- Python -*- |
| |
| import buildindex |
| import getopt |
| import os |
| import re |
| import string |
| import sys |
| |
| |
| _rx = re.compile( |
| '<dt><a href="(module-.*\.html)">' |
| '([a-zA-Z_][a-zA-Z0-9_.]*(\s*<em>\(.*\)</em>)?)</a>') |
| |
| def main(): |
| outputfile = "-" |
| columns = 1 |
| letters = 0 |
| opts, args = getopt.getopt(sys.argv[1:], "c:lo:", |
| ["columns=", "letters", "output="]) |
| for opt, val in opts: |
| if opt in ("-o", "--output"): |
| outputfile = val |
| elif opt in ("-c", "--columns"): |
| columns = string.atoi(val) |
| elif opt in ("-l", "--letters"): |
| letters = 1 |
| if not args: |
| args = ["-"] |
| # |
| # Collect the input data: |
| # |
| nodes = [] |
| seqno = 0 |
| has_plat_flag = 0 |
| for ifn in args: |
| if ifn == "-": |
| ifp = sys.stdin |
| dirname = '' |
| else: |
| ifp = open(ifn) |
| dirname = os.path.dirname(ifn) |
| while 1: |
| line = ifp.readline() |
| if not line: |
| break |
| m = _rx.match(line) |
| if m: |
| # This line specifies a module! |
| basename, modname = m.group(1, 2) |
| has_plat_flag = has_plat_flag or m.group(3) |
| linkfile = os.path.join(dirname, basename) |
| nodes.append(buildindex.Node( |
| '<a href="%s">' % linkfile, |
| "<tt class=module>%s</tt>" % modname, |
| seqno)) |
| seqno = seqno + 1 |
| ifp.close() |
| # |
| # Generate all output: |
| # |
| num_nodes = len(nodes) |
| # Here's the HTML generation: |
| parts = [HEAD, buildindex.process_nodes(nodes, columns, letters), TAIL] |
| if has_plat_flag: |
| parts.insert(1, PLAT_DISCUSS) |
| html = string.join(parts, '') |
| program = os.path.basename(sys.argv[0]) |
| if outputfile == "-": |
| sys.stdout.write(html) |
| sys.stderr.write("%s: %d index nodes\n" % (program, num_nodes)) |
| else: |
| open(outputfile, "w").write(html) |
| print |
| print "%s: %d index nodes" % (program, num_nodes) |
| |
| |
| HEAD = """\ |
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| <html> |
| <head> |
| <title>Global Module Index</title> |
| <META NAME="description" CONTENT="Global Module Index"> |
| <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> |
| <LINK REL="STYLESHEET" HREF="lib/lib.css"> |
| <LINK REL="up" HREF="./"> |
| </head> |
| <body bgcolor="#ffffff"> |
| <div class=navigation> |
| <table width="100%" cellpadding=0 cellspacing=2> |
| <tr> |
| <td><img width=32 height=32 align=bottom border=0 alt="blank" |
| src="icons/blank.gif"></td> |
| <td><a href="./"><img width=32 height=32 align=bottom border=0 alt="up" |
| src="icons/up.gif"></A></td> |
| <td><img width=32 height=32 align=bottom border=0 alt="blank" |
| src="icons/blank.gif"></td> |
| <td align=center bgcolor="#99CCFF" width="100%"> |
| <b class=title>Global Module Index</b></td> |
| <td><img width=32 height=32 align=bottom border=0 alt="blank" |
| src="icons/blank.gif"></td> |
| <td><img width=32 height=32 align=bottom border=0 alt="blank" |
| src="icons/blank.gif"></td> |
| <td><img width=32 height=32 align=bottom border=0 alt="blank" |
| src="icons/blank.gif"></td> |
| </tr></table> |
| <b class=navlabel>Up:</b> <span class=sectref><A |
| HREF="./">Python Documentation Index</A></span> |
| <br><hr></div> |
| |
| <h2>Global Module Index</h2> |
| |
| """ |
| |
| PLAT_DISCUSS = """ |
| <p> Some module names are followed by an annotation indicating what |
| platform they are available on.</p> |
| |
| """ |
| |
| TAIL = """ |
| <div class=navigation> |
| <hr> |
| <table width="100%" cellpadding=0 cellspacing=2> |
| <tr> |
| <td><img width=32 height=32 align=bottom border=0 alt="blank" |
| src="icons/blank.gif"></td> |
| <td><a href="./"><img width=32 height=32 align=bottom border=0 alt="up" |
| src="icons/up.gif"></A></td> |
| <td><img width=32 height=32 align=bottom border=0 alt="" |
| src="icons/blank.gif"></A></td> |
| <td align=center bgcolor="#99CCFF" width="100%"> |
| <b class=title>Global Module Index</b></td> |
| <td><img width=32 height=32 align=bottom border=0 alt="" |
| src="icons/blank.gif"></td> |
| <td><img width=32 height=32 align=bottom border=0 alt="" |
| src="icons/blank.gif"></td> |
| <td><img width=32 height=32 align=bottom border=0 alt="" |
| src="icons/blank.gif"></td> |
| </tr></table> |
| <b class=navlabel>Up:</b> <span class=sectref><A |
| HREF="./">Python Documentation Index</A></span> |
| </div> |
| <!--End of Navigation Panel--> |
| <ADDRESS> |
| <hr>Send comments to |
| <a href="mailto:python-docs@python.org">python-docs@python.org</a>. |
| </ADDRESS> |
| </BODY> |
| </HTML> |
| """ |
| |
| |
| if __name__ == "__main__": |
| main() |