diff options
author | Fred Drake <fdrake@acm.org> | 1998-01-02 03:00:27 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 1998-01-02 03:00:27 (GMT) |
commit | c1ce320a4f6603b7e2b4994fef2f5db90654dc5a (patch) | |
tree | 11c5356642823818fd7c947affef6ce8af0be796 /Doc/modindex.py | |
parent | 0b1337d6742a3d83526e843c08c24ba62342615e (diff) | |
download | cpython-c1ce320a4f6603b7e2b4994fef2f5db90654dc5a.zip cpython-c1ce320a4f6603b7e2b4994fef2f5db90654dc5a.tar.gz cpython-c1ce320a4f6603b7e2b4994fef2f5db90654dc5a.tar.bz2 |
Script to convert module index data to module index.
Diffstat (limited to 'Doc/modindex.py')
-rwxr-xr-x | Doc/modindex.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Doc/modindex.py b/Doc/modindex.py new file mode 100755 index 0000000..f85b909 --- /dev/null +++ b/Doc/modindex.py @@ -0,0 +1,62 @@ +#! /usr/bin/env python + +"""Script to convert raw module index data to module index.""" + +import os +import string +import sys + + +def parse_line(input): + lineno = string.split(input)[-1] + module = input[:len(input)-(len(lineno)+1)] + return module, lineno + return + + +def cmp_items((s1, line1), (s2, line2)): + rc = cmp(string.lower(s1), string.lower(s2)) + if rc == 0: + # Make the lower-case version come first since the upper-case + # version is usually a helper module for constants and such. + rc = cmp(s2, s1) + return rc + + +def main(): + if sys.argv[1:]: + infile = sys.argv[1] + else: + infile = "-" + if infile == "-": + ifp = sys.stdin + ofp = sys.stdout + sys.stdout = sys.stderr + else: + ifp = open(infile) + base, ext = os.path.splitext(infile) + outfile = base + ".ind" + ofp = open(outfile, "w") + ofp.write("\\begin{theindex}\n\n") + lines = ifp.readlines() + for i in range(len(lines)): + if lines[i][0] == '\\': + lines[i] = '\1' + lines[i] + lines = map(parse_line, lines) + lines.sort(cmp_items) + prev_letter = lines[0][0][0] + if prev_letter == '\1': + prev_letter = lines[0][0][1] + prev_letter = string.lower(prev_letter) + for module, lineno in lines: + if module[0] == '\1': + module = module[1:] + if string.lower(module[0]) != prev_letter: + ofp.write("\n \\indexspace\n\n") + prev_letter = string.lower(module[0]) + ofp.write(" \\item {\\tt %s} %s\n" % (module, lineno)) + ofp.write("\n\\end{theindex}\n") + + +if __name__ == "__main__": + main() |