summaryrefslogtreecommitdiffstats
path: root/src/tools/docmaker/docbeauty.py
blob: 55c43297f1feabec823c73d18fc6a560b20f8eb1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/usr/bin/env python
#
#  DocBeauty (c) 2003, 2004 David Turner <david@freetype.org>
#
# This program is used to beautify the documentation comments used
# in the FreeType 2 public headers.
#

from sources   import *
from content   import *
from utils     import *

import utils

import sys, os, time, string, getopt

content_processor = ContentProcessor()


def beautify_block( block ):
    if block.content:
        content_processor.reset()

        markups = content_processor.process_content( block.content )
        text    = []
        first   = 1

        for markup in markups:
            text.extend( markup.beautify( first ) )
            first = 0

        # now beautify the documentation "borders" themselves
        lines = [ " /*************************************************************************" ]
        for l in text:
            lines.append( "  *" + l )
        lines.append( "  */" )

        block.lines = lines


def usage():
    print "\nDocBeauty 0.1 Usage information\n"
    print "  docbeauty [options] file1 [ file2 ... ]\n"
    print "using the following options:\n"
    print "  -h : print this page"
    print "  -b : backup original files with the 'orig' extension"
    print ""
    print "  --backup : same as -b"


def main( argv ):
    """main program loop"""

    global output_dir

    try:
        opts, args = getopt.getopt( sys.argv[1:],
                                    "hb",
                                    [ "help", "backup" ] )

    except getopt.GetoptError:
        usage()
        sys.exit( 2 )

    if args == []:
        usage()
        sys.exit( 1 )

    # process options
    #
    output_dir = None
    do_backup  = None

    for opt in opts:
        if opt[0] in ( "-h", "--help" ):
            usage()
            sys.exit( 0 )

        if opt[0] in ( "-b", "--backup" ):
            do_backup = 1

    # create context and processor
    source_processor  = SourceProcessor()

    # retrieve the list of files to process
    file_list = make_file_list( args )
    for filename in file_list:
        source_processor.parse_file( filename )
        for block in source_processor.blocks:
            beautify_block( block )
        new_name = filename + ".new"
        ok       = None
        try:
            file = open( new_name, "wt" )
            for block in source_processor.blocks:
                for line in block.lines:
                    file.write( line )
                    file.write( "\n" )
            file.close()
        except:
            ok = 0

# if called from the command line
#
if __name__ == '__main__':
    main( sys.argv )


# eof