Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
#!/usr/bin/env python
2
#
3
#  DocMaker (c) 2002, 2004, 2008 David Turner 
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