4 """usage: %(program)s [options] file...
9 -a addr Set the address text to include at the end of the generated
10 HTML; this should be used for contact information.
12 -c cols Set the number of columns each index section should be
13 displayed in. The default is 1.
15 -h Display this help message.
17 -l Split the output into sections by letter.
19 -o file Write output to 'file' instead of standard out.
20 --iconserver is Use 'is' as the directory containing icons for the
21 navigation bar. The default is 'icons'.
22 --title str Set the page title to 'str'. The default is 'Global
24 --uplink url Set the upward link URL. The default is './'.
25 --uptitle str Set the upward link title. The default is 'Python
36 class IndexOptions(support.Options):
38 support.Options.__init__(self)
39 self.add_args("l", ["letters"])
42 def handle_option(self, opt, val):
43 if opt in ("-l", "--letters"):
47 program = os.path.basename(sys.argv[0])
48 print __doc__ % {"program": program}
51 class Node(buildindex.Node):
54 def __init__(self, link, str, seqno):
55 parts = string.split(str, None, 1)
56 if parts[0][-5:] == "</tt>":
57 self.modname = parts[0][:-5]
59 self.modname = parts[0]
61 self.annotation = parts[1]
62 buildindex.Node.__init__(self, link, self.modname, seqno)
65 return '<tt class="module">%s</tt> %s' \
66 % (self.modname, self.annotation)
69 "<dt><a href='(module-.*\.html)#l2h-\d+'><tt class='module'>"
70 "([a-zA-Z_][a-zA-Z0-9_.]*</tt>(\s*<em>"
71 "\(<span class='platform'>.*</span>\)</em>)?)</a>")
74 options = IndexOptions()
75 options.variables["title"] = "Global Module Index"
76 options.parse(sys.argv[1:])
81 # Collect the input data:
92 dirname = os.path.dirname(ifn)
99 # This line specifies a module!
100 basename, modname = m.group(1, 2)
101 has_plat_flag = has_plat_flag or m.group(3)
102 linkfile = os.path.join(dirname, basename)
103 nodes.append(Node('<a href="%s">' % linkfile, modname, seqno))
107 # Generate all output:
109 num_nodes = len(nodes)
110 # Here's the HTML generation:
111 parts = [options.get_header(),
112 buildindex.process_nodes(nodes, options.columns, options.letters),
113 options.get_footer(),
116 parts.insert(1, PLAT_DISCUSS)
117 html = string.join(parts, '')
118 program = os.path.basename(sys.argv[0])
119 fp = options.get_output_file()
120 fp.write(string.rstrip(html) + "\n")
121 if options.outputfile == "-":
122 sys.stderr.write("%s: %d index nodes\n" % (program, num_nodes))
125 print "%s: %d index nodes" % (program, num_nodes)
129 <p> Some module names are followed by an annotation indicating what
130 platform they are available on.</p>
135 if __name__ == "__main__":