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 |
|