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