|
1 #!/usr/bin/env python |
|
2 # |
|
3 # DocBeauty (c) 2003, 2004, 2008 David Turner <david@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 |