blob: c575c6b144345eecd1d3f48df5988f6dc8c02ad8 [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"),
Greg Ward3abb1042000-04-28 17:05:41 +000037 ("inst", "Installing Python Modules"),
38 ("dist", "Distributing Python Modules"),
Fred Drake46ab6df1999-08-03 17:54:39 +000039 ]:
40 self.add_document(prefix, title)
41 print self.PREFIX
42 self.dump()
43 print self.SUFFIX
44
45 PREFIX = """\
Fred Drake47f69061998-08-28 21:16:28 +000046This is the PostScript version of the standard Python documentation.
47If you plan to print this, be aware that some of the documents are
Fred Drakeba828782000-04-03 04:19:14 +000048long. It is formatted for printing on two-sided paper; if you do plan
49to print this, *please* print two-sided if you have a printer capable
50of it! To locate published copies of the larger manuals, or other
51Python reference material, consult the PSA Online Bookstore at:
52
53 http://www.python.org/psa/bookstore/
54
55The following manuals are included:
Fred Drake46ab6df1999-08-03 17:54:39 +000056"""
57 SUFFIX = """\
Fred Drakedfb4e241999-02-05 20:50:59 +000058
59
60If you have any questions, comments, or suggestions regarding these
61documents, please send them via email to python-docs@python.org.
Fred Drakeba828782000-04-03 04:19:14 +000062
63If you would like to support the development and maintenance of
64documentation for Python, please consider joining the Python Software
65Activity (PSA; see http://www.python.org/psa/), or urging your
66organization to join the PSA or the Python Consortium (see
67http://www.python.org/consortium/).
Fred Drake46ab6df1999-08-03 17:54:39 +000068"""
Fred Drakedfb4e241999-02-05 20:50:59 +000069
Fred Drake46ab6df1999-08-03 17:54:39 +000070def count_pages(filename):
71 fp = open(filename)
72 count = 0
73 while 1:
74 lines = fp.readlines(1024*40)
75 if not lines:
76 break
77 for line in lines:
78 if line[:7] == "%%Page:":
79 count = count + 1
80 fp.close()
81 return count
82
83
84def main():
85 PageCounter().run()
86
87if __name__ == "__main__":
88 main()