~ubuntu-branches/ubuntu/saucy/emscripten/saucy-proposed

« back to all changes in this revision

Viewing changes to tests/freetype/src/tools/docmaker/formatter.py

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#  Formatter (c) 2002, 2004, 2007, 2008 David Turner <david@freetype.org>
 
2
#
 
3
 
 
4
from sources import *
 
5
from content import *
 
6
from utils   import *
 
7
 
 
8
# This is the base Formatter class.  Its purpose is to convert
 
9
# a content processor's data into specific documents (i.e., table of
 
10
# contents, global index, and individual API reference indices).
 
11
#
 
12
# You need to sub-class it to output anything sensible.  For example,
 
13
# the file tohtml.py contains the definition of the HtmlFormatter sub-class
 
14
# used to output -- you guessed it -- HTML.
 
15
#
 
16
 
 
17
class  Formatter:
 
18
 
 
19
    def  __init__( self, processor ):
 
20
        self.processor   = processor
 
21
        self.identifiers = {}
 
22
        self.chapters    = processor.chapters
 
23
        self.sections    = processor.sections.values()
 
24
        self.block_index = []
 
25
 
 
26
        # store all blocks in a dictionary
 
27
        self.blocks = []
 
28
        for section in self.sections:
 
29
            for block in section.blocks.values():
 
30
                self.add_identifier( block.name, block )
 
31
 
 
32
                # add enumeration values to the index, since this is useful
 
33
                for markup in block.markups:
 
34
                    if markup.tag == 'values':
 
35
                        for field in markup.fields:
 
36
                            self.add_identifier( field.name, block )
 
37
 
 
38
        self.block_index = self.identifiers.keys()
 
39
        self.block_index.sort( index_sort )
 
40
 
 
41
    def  add_identifier( self, name, block ):
 
42
        if self.identifiers.has_key( name ):
 
43
            # duplicate name!
 
44
            sys.stderr.write(                                           \
 
45
               "WARNING: duplicate definition for '" + name + "' in " + \
 
46
               block.location() + ", previous definition in " +         \
 
47
               self.identifiers[name].location() + "\n" )
 
48
        else:
 
49
            self.identifiers[name] = block
 
50
 
 
51
    #
 
52
    #  Formatting the table of contents
 
53
    #
 
54
    def  toc_enter( self ):
 
55
        pass
 
56
 
 
57
    def  toc_chapter_enter( self, chapter ):
 
58
        pass
 
59
 
 
60
    def  toc_section_enter( self, section ):
 
61
        pass
 
62
 
 
63
    def  toc_section_exit( self, section ):
 
64
        pass
 
65
 
 
66
    def  toc_chapter_exit( self, chapter ):
 
67
        pass
 
68
 
 
69
    def  toc_index( self, index_filename ):
 
70
        pass
 
71
 
 
72
    def  toc_exit( self ):
 
73
        pass
 
74
 
 
75
    def  toc_dump( self, toc_filename = None, index_filename = None ):
 
76
        output = None
 
77
        if toc_filename:
 
78
            output = open_output( toc_filename )
 
79
 
 
80
        self.toc_enter()
 
81
 
 
82
        for chap in self.processor.chapters:
 
83
 
 
84
            self.toc_chapter_enter( chap )
 
85
 
 
86
            for section in chap.sections:
 
87
                self.toc_section_enter( section )
 
88
                self.toc_section_exit( section )
 
89
 
 
90
            self.toc_chapter_exit( chap )
 
91
 
 
92
        self.toc_index( index_filename )
 
93
 
 
94
        self.toc_exit()
 
95
 
 
96
        if output:
 
97
            close_output( output )
 
98
 
 
99
    #
 
100
    #  Formatting the index
 
101
    #
 
102
    def  index_enter( self ):
 
103
        pass
 
104
 
 
105
    def  index_name_enter( self, name ):
 
106
        pass
 
107
 
 
108
    def  index_name_exit( self, name ):
 
109
        pass
 
110
 
 
111
    def  index_exit( self ):
 
112
        pass
 
113
 
 
114
    def  index_dump( self, index_filename = None ):
 
115
        output = None
 
116
        if index_filename:
 
117
            output = open_output( index_filename )
 
118
 
 
119
        self.index_enter()
 
120
 
 
121
        for name in self.block_index:
 
122
            self.index_name_enter( name )
 
123
            self.index_name_exit( name )
 
124
 
 
125
        self.index_exit()
 
126
 
 
127
        if output:
 
128
            close_output( output )
 
129
 
 
130
    #
 
131
    #  Formatting a section
 
132
    #
 
133
    def  section_enter( self, section ):
 
134
        pass
 
135
 
 
136
    def  block_enter( self, block ):
 
137
        pass
 
138
 
 
139
    def  markup_enter( self, markup, block = None ):
 
140
        pass
 
141
 
 
142
    def  field_enter( self, field, markup = None, block = None ):
 
143
        pass
 
144
 
 
145
    def  field_exit( self, field, markup = None, block = None ):
 
146
        pass
 
147
 
 
148
    def  markup_exit( self, markup, block = None ):
 
149
        pass
 
150
 
 
151
    def  block_exit( self, block ):
 
152
        pass
 
153
 
 
154
    def  section_exit( self, section ):
 
155
        pass
 
156
 
 
157
    def  section_dump( self, section, section_filename = None ):
 
158
        output = None
 
159
        if section_filename:
 
160
            output = open_output( section_filename )
 
161
 
 
162
        self.section_enter( section )
 
163
 
 
164
        for name in section.block_names:
 
165
            block = self.identifiers[name]
 
166
            self.block_enter( block )
 
167
 
 
168
            for markup in block.markups[1:]:   # always ignore first markup!
 
169
                self.markup_enter( markup, block )
 
170
 
 
171
                for field in markup.fields:
 
172
                    self.field_enter( field, markup, block )
 
173
                    self.field_exit( field, markup, block )
 
174
 
 
175
                self.markup_exit( markup, block )
 
176
 
 
177
            self.block_exit( block )
 
178
 
 
179
        self.section_exit( section )
 
180
 
 
181
        if output:
 
182
            close_output( output )
 
183
 
 
184
    def  section_dump_all( self ):
 
185
        for section in self.sections:
 
186
            self.section_dump( section )
 
187
 
 
188
# eof