Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. #!/usr/bin/env python
  2. #
  3. #  DocMaker (c) 2002, 2004, 2008 David Turner <david@freetype.org>
  4. #
  5. # This program is a re-write of the original DocMaker took used
  6. # to generate the API Reference of the FreeType font engine
  7. # by converting in-source comments into structured HTML.
  8. #
  9. # This new version is capable of outputting XML data, as well
  10. # as accepts more liberal formatting options.
  11. #
  12. # It also uses regular expression matching and substitution
  13. # to speed things significantly.
  14. #
  15.  
  16. from sources   import *
  17. from content   import *
  18. from utils     import *
  19. from formatter import *
  20. from tohtml    import *
  21.  
  22. import utils
  23.  
  24. import sys, os, time, string, glob, getopt
  25.  
  26.  
  27. def  usage():
  28.     print "\nDocMaker Usage information\n"
  29.     print "  docmaker [options] file1 [file2 ...]\n"
  30.     print "using the following options:\n"
  31.     print "  -h : print this page"
  32.     print "  -t : set project title, as in '-t \"My Project\"'"
  33.     print "  -o : set output directory, as in '-o mydir'"
  34.     print "  -p : set documentation prefix, as in '-p ft2'"
  35.     print ""
  36.     print "  --title  : same as -t, as in '--title=\"My Project\"'"
  37.     print "  --output : same as -o, as in '--output=mydir'"
  38.     print "  --prefix : same as -p, as in '--prefix=ft2'"
  39.  
  40.  
  41. def  main( argv ):
  42.     """main program loop"""
  43.  
  44.     global output_dir
  45.  
  46.     try:
  47.         opts, args = getopt.getopt( sys.argv[1:], \
  48.                                     "ht:o:p:",    \
  49.                                     ["help", "title=", "output=", "prefix="] )
  50.     except getopt.GetoptError:
  51.         usage()
  52.         sys.exit( 2 )
  53.  
  54.     if args == []:
  55.         usage()
  56.         sys.exit( 1 )
  57.  
  58.     # process options
  59.     #
  60.     project_title  = "Project"
  61.     project_prefix = None
  62.     output_dir     = None
  63.  
  64.     for opt in opts:
  65.         if opt[0] in ( "-h", "--help" ):
  66.             usage()
  67.             sys.exit( 0 )
  68.  
  69.         if opt[0] in ( "-t", "--title" ):
  70.             project_title = opt[1]
  71.  
  72.         if opt[0] in ( "-o", "--output" ):
  73.             utils.output_dir = opt[1]
  74.  
  75.         if opt[0] in ( "-p", "--prefix" ):
  76.             project_prefix = opt[1]
  77.  
  78.     check_output()
  79.  
  80.     # create context and processor
  81.     source_processor  = SourceProcessor()
  82.     content_processor = ContentProcessor()
  83.  
  84.     # retrieve the list of files to process
  85.     file_list = make_file_list( args )
  86.     for filename in file_list:
  87.         source_processor.parse_file( filename )
  88.         content_processor.parse_sources( source_processor )
  89.  
  90.     # process sections
  91.     content_processor.finish()
  92.  
  93.     formatter = HtmlFormatter( content_processor, project_title, project_prefix )
  94.  
  95.     formatter.toc_dump()
  96.     formatter.index_dump()
  97.     formatter.section_dump_all()
  98.  
  99.  
  100. # if called from the command line
  101. #
  102. if __name__ == '__main__':
  103.     main( sys.argv )
  104.  
  105.  
  106. # eof
  107.