Fred Drake | 46ab6df | 1999-08-03 17:54:39 +0000 | [diff] [blame^] | 1 | #! /usr/bin/env python |
| 2 | # -*- Python -*- |
Fred Drake | 47f6906 | 1998-08-28 21:16:28 +0000 | [diff] [blame] | 3 | |
Fred Drake | 46ab6df | 1999-08-03 17:54:39 +0000 | [diff] [blame^] | 4 | """Generate a page count report of the PostScript version of the manuals.""" |
Fred Drake | 47f6906 | 1998-08-28 21:16:28 +0000 | [diff] [blame] | 5 | |
Fred Drake | 46ab6df | 1999-08-03 17:54:39 +0000 | [diff] [blame^] | 6 | __version__ = '$Revision$' |
Fred Drake | 47f6906 | 1998-08-28 21:16:28 +0000 | [diff] [blame] | 7 | |
Fred Drake | 46ab6df | 1999-08-03 17:54:39 +0000 | [diff] [blame^] | 8 | |
| 9 | class PageCounter: |
| 10 | def __init__(self): |
| 11 | self.doclist = [] |
| 12 | self.total = 0 |
| 13 | self.title_width = 0 |
| 14 | |
| 15 | def add_document(self, prefix, title): |
| 16 | count = count_pages(prefix + ".ps") |
| 17 | self.doclist.append((title, prefix, count)) |
| 18 | self.title_width = max(self.title_width, len(title)) |
| 19 | self.total = self.total + count |
| 20 | |
| 21 | def dump(self): |
| 22 | fmt = "%%-%ds (%%s.ps, %%d pages)" % self.title_width |
| 23 | for item in self.doclist: |
| 24 | print fmt % item |
| 25 | print |
| 26 | print " Total page count: %d" % self.total |
| 27 | |
| 28 | def run(self): |
| 29 | for prefix, title in [ |
| 30 | ("api", "Python/C API"), |
| 31 | ("ext", "Extending and Embedding the Python Interpreter"), |
| 32 | ("lib", "Python Library Reference"), |
| 33 | ("mac", "Macintosh Module Reference"), |
| 34 | ("ref", "Python Reference Manual"), |
| 35 | ("tut", "Python Tutorial"), |
| 36 | ("doc", "Documenting Python"), |
| 37 | ]: |
| 38 | self.add_document(prefix, title) |
| 39 | print self.PREFIX |
| 40 | self.dump() |
| 41 | print self.SUFFIX |
| 42 | |
| 43 | PREFIX = """\ |
Fred Drake | 47f6906 | 1998-08-28 21:16:28 +0000 | [diff] [blame] | 44 | This is the PostScript version of the standard Python documentation. |
| 45 | If you plan to print this, be aware that some of the documents are |
Fred Drake | dfb4e24 | 1999-02-05 20:50:59 +0000 | [diff] [blame] | 46 | long. The following manuals are included: |
Fred Drake | 46ab6df | 1999-08-03 17:54:39 +0000 | [diff] [blame^] | 47 | """ |
| 48 | SUFFIX = """\ |
Fred Drake | dfb4e24 | 1999-02-05 20:50:59 +0000 | [diff] [blame] | 49 | |
| 50 | |
| 51 | If you have any questions, comments, or suggestions regarding these |
| 52 | documents, please send them via email to python-docs@python.org. |
Fred Drake | 46ab6df | 1999-08-03 17:54:39 +0000 | [diff] [blame^] | 53 | """ |
Fred Drake | dfb4e24 | 1999-02-05 20:50:59 +0000 | [diff] [blame] | 54 | |
Fred Drake | 46ab6df | 1999-08-03 17:54:39 +0000 | [diff] [blame^] | 55 | def count_pages(filename): |
| 56 | fp = open(filename) |
| 57 | count = 0 |
| 58 | while 1: |
| 59 | lines = fp.readlines(1024*40) |
| 60 | if not lines: |
| 61 | break |
| 62 | for line in lines: |
| 63 | if line[:7] == "%%Page:": |
| 64 | count = count + 1 |
| 65 | fp.close() |
| 66 | return count |
| 67 | |
| 68 | |
| 69 | def main(): |
| 70 | PageCounter().run() |
| 71 | |
| 72 | if __name__ == "__main__": |
| 73 | main() |