cinap_lenrekadd hg and python4bb9e2215 years agoHistory
97 lines · 2.8 KB · Text
RawDownload
#! /usr/bin/env python """Generate a page count report of the PostScript version of the manuals.""" __version__ = '$Revision: 39598 $' import getoptimport 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 arelong.  It is formatted for printing on two-sided paper; if you do planto print this, *please* print two-sided if you have a printer capableof it!  To locate published copies of the larger manuals, or otherPython reference material, consult the Python Bookstore at:     http://wiki.python.org/moin/PythonBooks The following manuals are included in this package:"""    SUFFIX = """\  If you have any questions, comments, or suggestions regarding thesedocuments, please send them via email to 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()