diff options
Diffstat (limited to 'Doc/tools/indfix.py')
-rwxr-xr-x | Doc/tools/indfix.py | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/Doc/tools/indfix.py b/Doc/tools/indfix.py deleted file mode 100755 index 23f9e1754f..0000000000 --- a/Doc/tools/indfix.py +++ /dev/null @@ -1,100 +0,0 @@ -#! /usr/bin/env python - -"""Combine similar index entries into an entry and subentries. - -For example: - - \item {foobar} (in module flotz), 23 - \item {foobar} (in module whackit), 4323 - -becomes - - \item {foobar} - \subitem in module flotz, 23 - \subitem in module whackit, 4323 - -Note that an item which matches the format of a collapsable item but which -isn't part of a group of similar items is not modified. -""" -__version__ = '$Revision$' - -import re -import io -import sys - - -def cmp_entries(e1, e2): - return cmp(e1[1].lower(), e2[1].lower()) or cmp(e1, e2) - - -def dump_entries(write, entries): - if len(entries) == 1: - write(" \\item %s (%s)%s\n" % entries[0]) - return - write(" \item %s\n" % entries[0][0]) - # now sort these in a case insensitive manner: - if len(entries) > 0: - entries.sort(cmp_entries) - for xxx, subitem, pages in entries: - write(" \subitem %s%s\n" % (subitem, pages)) - - -breakable_re = re.compile( - r" \\item (.*) [(](.*)[)]((?:(?:, \d+)|(?:, \\[a-z]*\{\d+\}))+)") - - -def process(ifn, ofn=None): - if ifn == "-": - ifp = sys.stdin - else: - ifp = open(ifn) - if ofn is None: - ofn = ifn - ofp = io.StringIO() - entries = [] - match = breakable_re.match - write = ofp.write - while 1: - line = ifp.readline() - if not line: - break - m = match(line) - if m: - entry = m.group(1, 2, 3) - if entries and entries[-1][0] != entry[0]: - dump_entries(write, entries) - entries = [] - entries.append(entry) - elif entries: - dump_entries(write, entries) - entries = [] - write(line) - else: - write(line) - del write - del match - ifp.close() - data = ofp.getvalue() - ofp.close() - if ofn == "-": - ofp = sys.stdout - else: - ofp = open(ofn, "w") - ofp.write(data) - ofp.close() - - -def main(): - import getopt - outfile = None - opts, args = getopt.getopt(sys.argv[1:], "o:") - for opt, val in opts: - if opt in ("-o", "--output"): - outfile = val - filename = args[0] - outfile = outfile or filename - process(filename, outfile) - - -if __name__ == "__main__": - main() |