Added 'description' class attribute to every command class (to help the
[python/dscho.git] / Doc / tools / getpagecounts
blobef14053a69f04bda89502c50e9e5685d0ddb75b4
1 #! /usr/bin/env python
2 # -*- Python -*-
4 """Generate a page count report of the PostScript version of the manuals."""
6 __version__ = '$Revision$'
9 class PageCounter:
10 def __init__(self):
11 self.doclist = []
12 self.total = 0
13 self.title_width = 0
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
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
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"),
38 self.add_document(prefix, title)
39 print self.PREFIX
40 self.dump()
41 print self.SUFFIX
43 PREFIX = """\
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
46 long. The following manuals are included:
47 """
48 SUFFIX = """\
51 If you have any questions, comments, or suggestions regarding these
52 documents, please send them via email to python-docs@python.org.
53 """
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
69 def main():
70 PageCounter().run()
72 if __name__ == "__main__":
73 main()