blob: ef14053a69f04bda89502c50e9e5685d0ddb75b4 [file] [log] [blame]
Fred Drake46ab6df1999-08-03 17:54:39 +00001#! /usr/bin/env python
2# -*- Python -*-
Fred Drake47f69061998-08-28 21:16:28 +00003
Fred Drake46ab6df1999-08-03 17:54:39 +00004"""Generate a page count report of the PostScript version of the manuals."""
Fred Drake47f69061998-08-28 21:16:28 +00005
Fred Drake46ab6df1999-08-03 17:54:39 +00006__version__ = '$Revision$'
Fred Drake47f69061998-08-28 21:16:28 +00007
Fred Drake46ab6df1999-08-03 17:54:39 +00008
9class 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 Drake47f69061998-08-28 21:16:28 +000044This is the PostScript version of the standard Python documentation.
45If you plan to print this, be aware that some of the documents are
Fred Drakedfb4e241999-02-05 20:50:59 +000046long. The following manuals are included:
Fred Drake46ab6df1999-08-03 17:54:39 +000047"""
48 SUFFIX = """\
Fred Drakedfb4e241999-02-05 20:50:59 +000049
50
51If you have any questions, comments, or suggestions regarding these
52documents, please send them via email to python-docs@python.org.
Fred Drake46ab6df1999-08-03 17:54:39 +000053"""
Fred Drakedfb4e241999-02-05 20:50:59 +000054
Fred Drake46ab6df1999-08-03 17:54:39 +000055def 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
69def main():
70 PageCounter().run()
71
72if __name__ == "__main__":
73 main()