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__":