Home | History | Annotate | Download | only in docmaker
      1 #!/usr/bin/env python
      2 #
      3 #  DocBeauty (c) 2003, 2004, 2008 David Turner <david (at] freetype.org>
      4 #
      5 # This program is used to beautify the documentation comments used
      6 # in the FreeType 2 public headers.
      7 #
      8 
      9 from sources import *
     10 from content import *
     11 from utils   import *
     12 
     13 import utils
     14 
     15 import sys, os, time, string, getopt
     16 
     17 
     18 content_processor = ContentProcessor()
     19 
     20 
     21 def  beautify_block( block ):
     22     if block.content:
     23         content_processor.reset()
     24 
     25         markups = content_processor.process_content( block.content )
     26         text    = []
     27         first   = 1
     28 
     29         for markup in markups:
     30             text.extend( markup.beautify( first ) )
     31             first = 0
     32 
     33         # now beautify the documentation "borders" themselves
     34         lines = [" /*************************************************************************"]
     35         for l in text:
     36             lines.append( "  *" + l )
     37         lines.append( "  */" )
     38 
     39         block.lines = lines
     40 
     41 
     42 def  usage():
     43     print "\nDocBeauty 0.1 Usage information\n"
     44     print "  docbeauty [options] file1 [file2 ...]\n"
     45     print "using the following options:\n"
     46     print "  -h : print this page"
     47     print "  -b : backup original files with the 'orig' extension"
     48     print ""
     49     print "  --backup : same as -b"
     50 
     51 
     52 def  main( argv ):
     53     """main program loop"""
     54 
     55     global output_dir
     56 
     57     try:
     58         opts, args = getopt.getopt( sys.argv[1:], \
     59                                     "hb",         \
     60                                     ["help", "backup"] )
     61     except getopt.GetoptError:
     62         usage()
     63         sys.exit( 2 )
     64 
     65     if args == []:
     66         usage()
     67         sys.exit( 1 )
     68 
     69     # process options
     70     #
     71     output_dir = None
     72     do_backup  = None
     73 
     74     for opt in opts:
     75         if opt[0] in ( "-h", "--help" ):
     76             usage()
     77             sys.exit( 0 )
     78 
     79         if opt[0] in ( "-b", "--backup" ):
     80             do_backup = 1
     81 
     82     # create context and processor
     83     source_processor = SourceProcessor()
     84 
     85     # retrieve the list of files to process
     86     file_list = make_file_list( args )
     87     for filename in file_list:
     88         source_processor.parse_file( filename )
     89 
     90         for block in source_processor.blocks:
     91             beautify_block( block )
     92 
     93         new_name = filename + ".new"
     94         ok       = None
     95 
     96         try:
     97             file = open( new_name, "wt" )
     98             for block in source_processor.blocks:
     99                 for line in block.lines:
    100                     file.write( line )
    101                     file.write( "\n" )
    102             file.close()
    103         except:
    104             ok = 0
    105 
    106 
    107 # if called from the command line
    108 #
    109 if __name__ == '__main__':
    110     main( sys.argv )
    111 
    112 
    113 # eof
    114