#! /usr/bin/env python # -*- Python -*- """Generate a page count report of the PostScript version of the manuals.""" __version__ = '$Revision$' class PageCounter: def __init__(self): self.doclist = [] self.total = 0 self.title_width = 0 def add_document(self, prefix, title): count = count_pages(prefix + ".ps") self.doclist.append((title, prefix, count)) self.title_width = max(self.title_width, len(title)) self.total = self.total + count def dump(self): fmt = "%%-%ds (%%s.ps, %%d pages)" % self.title_width for item in self.doclist: print fmt % item print print " Total page count: %d" % self.total def run(self): for prefix, title in [ ("api", "Python/C API"), ("ext", "Extending and Embedding the Python Interpreter"), ("lib", "Python Library Reference"), ("mac", "Macintosh Module Reference"), ("ref", "Python Reference Manual"), ("tut", "Python Tutorial"), ("doc", "Documenting Python"), ("inst", "Installing Python Modules"), ("dist", "Distributing Python Modules"), ]: self.add_document(prefix, title) print self.PREFIX self.dump() print self.SUFFIX PREFIX = """\ This is the PostScript version of the standard Python documentation. If you plan to print this, be aware that some of the documents are long. It is formatted for printing on two-sided paper; if you do plan to print this, *please* print two-sided if you have a printer capable of it! To locate published copies of the larger manuals, or other Python reference material, consult the PSA Online Bookstore at: http://www.python.org/psa/bookstore/ The following manuals are included: """ SUFFIX = """\ If you have any questions, comments, or suggestions regarding these documents, please send them via email to python-docs@python.org. If you would like to support the development and maintenance of documentation for Python, please consider joining the Python Software Activity (PSA; see http://www.python.org/psa/), or urging your organization to join the PSA or the Python Consortium (see http://www.python.org/consortium/). """ def count_pages(filename): fp = open(filename) count = 0 while 1: lines = fp.readlines(1024*40) if not lines: break for line in lines: if line[:7] == "%%Page:": count = count + 1 fp.close() return count def main(): PageCounter().run() if __name__ == "__main__": main()