| #! /usr/bin/env python |
| |
| """Generate a page count report of the PostScript version of the manuals.""" |
| |
| __version__ = '$Revision$' |
| |
| import getopt |
| import sys |
| |
| |
| class PageCounter: |
| def __init__(self): |
| self.doclist = [] |
| self.total = 0 |
| self.title_width = 0 |
| self.version = "" |
| |
| 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 parse_options(self): |
| opts, args = getopt.getopt(sys.argv[1:], "r:", ["release="]) |
| assert not args |
| for opt, arg in opts: |
| if opt in ("-r", "--release"): |
| self.version = arg |
| |
| def run(self): |
| self.parse_options() |
| if self.version: |
| version = self.version[:3] |
| self.add_document("whatsnew" + version.replace(".", ""), |
| "What's New in Python " + version) |
| 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 Python Bookstore at: |
| |
| http://www.amk.ca/bookstore/ |
| |
| The following manuals are included in this package: |
| """ |
| SUFFIX = """\ |
| |
| |
| If you have any questions, comments, or suggestions regarding these |
| documents, please send them via email to python-docs@python.org. |
| """ |
| |
| 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() |