misc/libfreetype/src/tools/docmaker/docmaker.py
changeset 9372 915436ff64ab
parent 9371 f3840de881bd
child 9373 b769a8e38cbd
equal deleted inserted replaced
9371:f3840de881bd 9372:915436ff64ab
     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