mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #! /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://wiki.python.org/moin/PythonBooks
 | |
| 
 | |
| 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 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()
 | 
