Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Side by Side Diff: experimental/PdfViewer/spec2def.py

Issue 16844017: most pdf dictionary types suported, need enabling now (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « experimental/PdfViewer/generate_code.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/local/bin/python 1 #!/usr/local/bin/python
2 # coding: utf-8 2 # coding: utf-8
3 3
4 import sys 4 import sys
5 import re 5 import re
6 6
7 # TODO(edisonn): put processed part of file in a new file 7 # TODO(edisonn): put processed part of file in a new file
8 # put unprocessed part, in a new file, so we see what we miss 8 # put unprocessed part, in a new file, so we see what we miss
9 # keep blank lines, and generate a version without the blank lines 9 # keep blank lines, and generate a version without the blank lines
10 10
11 #TODO (edisonn): deal manually with 11 #TODO (edisonn): deal manually with
12 # TABLE 7.11 Restrictions on the entries in a soft-mask image dictionary 12 # TABLE 7.11 Restrictions on the entries in a soft-mask image dictionary
13 #KEY RESTRICTION 13 #KEY RESTRICTION
14 14
15 15
16 16
17 lines = 0 17 lines = 0
18 table = '' 18 table = ''
19 tableHeaderFound = False 19 tableHeaderFound = False
20 tableLine = 0 20 tableLine = 0
21 tableRow = 0 21 tableRow = 0
22 columnWidth = [] 22 columnWidth = []
23 columnValues = ['', '', ''] 23 columnValues = None
24 mustFollowTableHeader = False 24 mustFollowTableHeader = False
25 emitedDitionaryName = ''
25 26
26 knownTypes = { 27 knownTypes = {
27 '(any)', 28 '(any)',
28 unicode('undefined', 'utf8'), 29 unicode('undefined', 'utf8'),
29 '(undefined)', 30 '(undefined)',
30 '(various)', 31 '(various)',
31 'array', 32 'array',
32 'or', 33 'or',
33 'boolean', 34 'boolean',
34 'date', 35 'date',
35 'dictionary', 36 'dictionary',
36 'function', 37 'function',
37 'integer', 38 'integer',
38 unicode('file', 'utf8'), 39 unicode('file', 'utf8'),
39 'file', 40 'file',
40 unicode('specification', 'utf8'), 41 unicode('specification', 'utf8'),
41 'specification', 42 'specification',
42 'name', 43 'name',
43 'tree', 44 'tree',
44 'number', 45 'number',
45 'rectangle', 46 'rectangle',
46 'stream', 47 'stream',
47 'string', 48 'string',
48 'text', 49 'text',
49 ',', 50 ',',
50 ' ' 51 ' '
51 } 52 }
52 53
54 tableToClassName = {
55 'TABLE 3.4': ['StreamDictionariesCommon', 'Entries common to all stream dictiona ries'],
56 'TABLE 3.7': ['LzwdecodeAndFlatedecodeFiltersOptionalParameters', 'Optional para meters for LZWDecode and FlateDecode filters'],
57 'TABLE 3.9': ['CcittfaxdecodeFilterOptionalParameters', 'Optional parameters for the CCITTFaxDecode filter'],
58 'TABLE 3.10': ['Jbig2DecodeFilterOptionalParameters', 'Optional parameter for th e JBIG2Decode filter'],
59 'TABLE 3.11': ['DctdecodeFilterOptionalParameters', 'Optional parameter for the DCTDecode filter'],
60 'TABLE 3.12': ['FileTrailerDictionary', 'Entries in the file trailer dictionary' ],
61 'TABLE 3.13': ['EncryptionDictionariesCommon', 'Entries common to all encryption dictionaries'],
62 'TABLE 3.14': ['DictionaryEntriesForTheStandardSecurityHandler', 'Additional enc ryption dictionary entries for the standard security handler'],
63 'TABLE 3.16': ['CatalogDictionary', 'Entries in the catalog dictionary'],
64 'TABLE 3.17': ['PageTreeNodeDictionary', 'Required entries in a page tree node'] ,
65 'TABLE 3.18': ['PageObjectDictionary', 'Entries in a page object'],
66 'TABLE 3.19': ['NameDictionary', 'Entries in the name dictionary'],
67 'TABLE 3.21': ['ResourceDictionary', 'Entries in a resource dictionary'],
68 'TABLE 3.23': ['NameTreeNodeDictionary', 'Entries in a name tree node dictionary '],
69 'TABLE 3.25': ['NumberTreeNodeDictionary', 'Entries in a number tree node dictio nary'],
70 'TABLE 3.26': ['FunctionDictionariesCommon', 'Entries common to all function dic tionaries'],
71 'TABLE 3.27': ['SpecificToAType0FunctionDictionary', 'Additional entries specifi c to a type 0 function dictionary'],
72 'TABLE 3.28': ['SpecificToAType2FunctionDictionary', 'Additional entries specifi c to a type 2 function dictionary'],
73 'TABLE 3.29': ['SpecificToAType3FunctionDictionary', 'Additional entries specifi c to a type 3 function dictionary'],
74 'TABLE 3.32': ['FileSpecificationDictionary', 'Entries in a file specification d ictionary'],
75 'TABLE 3.33': ['EmbeddedFileStreamDictionary', 'Additional entries in an embedde d file stream dictionary'],
76 'TABLE 3.35': ['MacOsFileInformationDictionary', 'Entries in a Mac OS file infor mation dictionary'],
77 'TABLE 4.13': ['CalgrayColorSpaceDictionary', 'Entries in a CalGray color space dictionary'],
78 'TABLE 4.14': ['CalrgbColorSpaceDictionary', 'Entries in a CalRGB color space di ctionary'],
79 'TABLE 4.15': ['LabColorSpaceDictionary', 'Entries in a Lab color space dictiona ry'],
80 'TABLE 4.16': ['SpecificToAnIccProfileStreamDictionary', 'Additional entries spe cific to an ICC profile stream dictionary'],
81 'TABLE 4.20': ['DevicenColorSpaceAttributesDictionary', 'Entry in a DeviceN colo r space attributes dictionary'],
82 'TABLE 4.22': ['SpecificToAType1PatternDictionary', 'Additional entries specific to a type 1 pattern dictionary'],
83 'TABLE 4.23': ['Type2PatternDictionary', 'Entries in a type 2 pattern dictionary '],
84 'TABLE 4.25': ['ShadingDictionariesCommon', 'Entries common to all shading dicti onaries'],
85 'TABLE 4.26': ['SpecificToAType1ShadingDictionary', 'Additional entries specific to a type 1 shading dictionary'],
86 'TABLE 4.27': ['SpecificToAType2ShadingDictionary', 'Additional entries specific to a type 2 shading dictionary'],
87 'TABLE 4.28': ['SpecificToAType3ShadingDictionary', 'Additional entries specific to a type 3 shading dictionary'],
88 'TABLE 4.29': ['SpecificToAType4ShadingDictionary', 'Additional entries specific to a type 4 shading dictionary'],
89 'TABLE 4.30': ['SpecificToAType5ShadingDictionary', 'Additional entries specific to a type 5 shading dictionary'],
90 'TABLE 4.31': ['SpecificToAType6ShadingDictionary', 'Additional entries specific to a type 6 shading dictionary'],
91 'TABLE 4.35': ['SpecificToAnImageDictionary', 'Additional entries specific to an image dictionary'],
92 'TABLE 4.37': ['AlternateImageDictionary', 'Entries in an alternate image dictio nary'],
93 'TABLE 4.41': ['SpecificToAType1FormDictionary', 'Additional entries specific to a type 1 form dictionary'],
94 'TABLE 4.42': ['GroupAttributesDictionariesCommon', 'Entries common to all group attributes dictionaries'],
95 'TABLE 4.43': ['ReferenceDictionary', 'Entries in a reference dictionary'],
96 'TABLE 4.44': ['SpecificToAPostscriptXobjectDictionary', 'Additional entries spe cific to a PostScript XObject dictionary'],
97 'TABLE 5.8': ['Type1FontDictionary', 'Entries in a Type 1 font dictionary'],
98 'TABLE 5.9': ['Type3FontDictionary', 'Entries in a Type 3 font dictionary'],
99 'TABLE 5.11': ['EncodingDictionary', 'Entries in an encoding dictionary'],
100 'TABLE 5.12': ['CidsysteminfoDictionary', 'Entries in a CIDSystemInfo dictionary '],
101 'TABLE 5.13': ['CidfontDictionary', 'Entries in a CIDFont dictionary'],
102 'TABLE 5.16': ['CmapDictionary', 'Additional entries in a CMap dictionary'],
103 'TABLE 5.17': ['Type0FontDictionary', 'Entries in a Type 0 font dictionary'],
104 'TABLE 5.18': ['FontDescriptorsCommon', 'Entries common to all font descriptors' ],
105 'TABLE 5.20': ['DescriptorEntriesForCidfonts', 'Additional font descriptor entri es for CIDFonts'],
106 'TABLE 5.23': ['EmbeddedFontStreamDictionary', 'Additional entries in an embedde d font stream dictionary'],
107 'TABLE 6.3': ['Type1HalftoneDictionary', 'Entries in a type 1 halftone dictionar y'],
108 'TABLE 6.4': ['SpecificToAType6HalftoneDictionary', 'Additional entries specific to a type 6 halftone dictionary'],
109 'TABLE 6.5': ['SpecificToAType10HalftoneDictionary', 'Additional entries specifi c to a type 10 halftone dictionary'],
110 'TABLE 6.6': ['SpecificToAType16HalftoneDictionary', 'Additional entries specifi c to a type 16 halftone dictionary'],
111 'TABLE 6.7': ['Type5HalftoneDictionary', 'Entries in a type 5 halftone dictionar y'],
112 'TABLE 7.10': ['Soft-MaskDictionary', 'Entries in a soft-mask dictionary'],
113 'TABLE 7.12': ['Soft-MaskImageDictionary', 'Additional entry in a soft-mask imag e dictionary'],
114 'TABLE 7.13': ['SpecificToATransparencyGroupAttributesDictionary', 'Additional e ntries specific to a transparency group attributes dictionary'],
115 'TABLE 8.1': ['ViewerPreferencesDictionary', 'Entries in a viewer preferences di ctionary'],
116 'TABLE 8.3': ['OutlineDictionary', 'Entries in the outline dictionary'],
117 'TABLE 8.6': ['PageLabelDictionary', 'Entries in a page label dictionary'],
118 'TABLE 8.7': ['ThreadDictionary', 'Entries in a thread dictionary'],
119 'TABLE 8.9': ['TransitionDictionary', 'Entries in a transition dictionary'],
120 'TABLE 8.10': ['AnnotationDictionariesCommon', 'Entries common to all annotation dictionaries'],
121 'TABLE 8.12': ['BorderStyleDictionary', 'Entries in a border style dictionary'],
122 'TABLE 8.13': ['AppearanceDictionary', 'Entries in an appearance dictionary'],
123 'TABLE 8.15': ['SpecificToATextAnnotation', 'Additional entries specific to a te xt annotation'],
124 'TABLE 8.16': ['SpecificToALinkAnnotation', 'Additional entries specific to a li nk annotation'],
125 'TABLE 8.17': ['SpecificToAFreeTextAnnotation', 'Additional entries specific to a free text annotation'],
126 'TABLE 8.18': ['SpecificToALineAnnotation', 'Additional entries specific to a li ne annotation'],
127 'TABLE 8.20': ['SpecificToASquareOrCircleAnnotation', 'Additional entries specif ic to a square or circle annotation'],
128 'TABLE 8.21': ['SpecificToMarkupAnnotations', 'Additional entries specific to ma rkup annotations'],
129 'TABLE 8.22': ['SpecificToARubberStampAnnotation', 'Additional entries specific to a rubber stamp annotation'],
130 'TABLE 8.23': ['SpecificToAnInkAnnotation', 'Additional entries specific to an i nk annotation'],
131 'TABLE 8.24': ['SpecificToAPop-UpAnnotation', 'Additional entries specific to a pop-up annotation'],
132 'TABLE 8.26': ['SpecificToASoundAnnotation', 'Additional entries specific to a s ound annotation'],
133 'TABLE 8.27': ['SpecificToAMovieAnnotation', 'Additional entries specific to a m ovie annotation'],
134 'TABLE 8.28': ['SpecificToAWidgetAnnotation', 'Additional entries specific to a widget annotation'],
135 'TABLE 8.29': ['ActionDictionariesCommon', 'Entries common to all action diction aries'],
136 'TABLE 8.30': ['Annotation’SAdditional-ActionsDictionary', 'Entries in an annota tion’s additional-actions dictionary'],
137 'TABLE 8.35': ['SpecificToAGo-ToAction', 'Additional entries specific to a go-to action'],
138 'TABLE 8.36': ['SpecificToARemoteGo-ToAction', 'Additional entries specific to a remote go-to action'],
139 'TABLE 8.37': ['SpecificToALaunchAction', 'Additional entries specific to a laun ch action'],
140 'TABLE 8.39': ['SpecificToAThreadAction', 'Additional entries specific to a thre ad action'],
141 'TABLE 8.40': ['SpecificToAUriAction', 'Additional entries specific to a URI act ion'],
142 'TABLE 8.41': ['UriDictionary', 'Entry in a URI dictionary'],
143 'TABLE 8.42': ['SpecificToASoundAction', 'Additional entries specific to a sound action'],
144 'TABLE 8.43': ['SpecificToAMovieAction', 'Additional entries specific to a movie action'],
145 'TABLE 8.44': ['SpecificToAHideAction', 'Additional entries specific to a hide a ction'],
146 'TABLE 8.46': ['SpecificToNamedActions', 'Additional entries specific to named a ctions'],
147 'TABLE 8.47': ['InteractiveFormDictionary', 'Entries in the interactive form dic tionary'],
148 'TABLE 8.49': ['FieldDictionariesCommon', 'Entries common to all field dictionar ies'],
149 'TABLE 8.51': ['CommonToAllFieldsContainingVariableText', 'Additional entries co mmon to all fields containing variable text'],
150 'TABLE 8.52': ['AppearanceCharacteristicsDictionary', 'Entries in an appearance characteristics dictionary'],
151 'TABLE 8.54': ['SpecificToACheckboxField', 'Additional entry specific to a check box field'],
152 'TABLE 8.55': ['SpecificToARadioButtonField', 'Additional entry specific to a ra dio button field'],
153 'TABLE 8.57': ['SpecificToATextField', 'Additional entry specific to a text fiel d'],
154 'TABLE 8.59': ['SpecificToAChoiceField', 'Additional entries specific to a choic e field'],
155 'TABLE 8.60': ['SignatureDictionary', 'Entries in a signature dictionary'],
156 'TABLE 8.61': ['SpecificToASubmit-FormAction', 'Additional entries specific to a submit-form action'],
157 'TABLE 8.63': ['SpecificToAReset-FormAction', 'Additional entries specific to a reset-form action'],
158 'TABLE 8.65': ['SpecificToAnImport-DataAction', 'Additional entries specific to an import-data action'],
159 'TABLE 8.66': ['SpecificToAJavascriptAction', 'Additional entries specific to a JavaScript action'],
160 'TABLE 8.67': ['FdfTrailerDictionary', 'Entry in the FDF trailer dictionary'],
161 'TABLE 8.68': ['FdfCatalogDictionary', 'Entries in the FDF catalog dictionary'],
162 'TABLE 8.70': ['EmbeddedFileStreamDictionary', 'Additional entry in an embedded file stream dictionary for an encrypted FDF file'],
163 'TABLE 8.71': ['JavascriptDictionary', 'Entries in the JavaScript dictionary'],
164 'TABLE 8.72': ['FdfFieldDictionary', 'Entries in an FDF field dictionary'],
165 'TABLE 8.73': ['IconFitDictionary', 'Entries in an icon fit dictionary'],
166 'TABLE 8.74': ['FdfPageDictionary', 'Entries in an FDF page dictionary'],
167 'TABLE 8.75': ['FdfTemplateDictionary', 'Entries in an FDF template dictionary'] ,
168 'TABLE 8.76': ['FdfNamedPageReferenceDictionary', 'Entries in an FDF named page reference dictionary'],
169 'TABLE 8.77': ['ForAnnotationDictionariesInAnFdfFile', 'Additional entry for ann otation dictionaries in an FDF file'],
170 'TABLE 8.78': ['SpecificToASoundObject', 'Additional entries specific to a sound object'],
171 'TABLE 8.79': ['MovieDictionary', 'Entries in a movie dictionary'],
172 'TABLE 9.2': ['DocumentInformationDictionary', 'Entries in the document informat ion dictionary'],
173 'TABLE 9.3': ['MetadataStreamDictionary', 'Additional entries in a metadata stre am dictionary'],
174 'TABLE 9.4': ['ForComponentsHavingMetadata', 'Additional entry for components ha ving metadata'],
175 'TABLE 9.6': ['Page-PieceDictionary', 'Entries in a page-piece dictionary'],
176 'TABLE 9.7': ['ApplicationDataDictionary', 'Entries in an application data dicti onary'],
177 'TABLE 9.9': ['StructureTreeRootDictionary', 'Entries in the structure tree root '],
178 'TABLE 9.11': ['Marked-ContentReferenceDictionary', 'Entries in a marked-content reference dictionary'],
179 'TABLE 9.12': ['ObjectReferenceDictionary', 'Entries in an object reference dict ionary'],
180 'TABLE 9.13': ['EntriesForStructureElementAccess', 'Additional dictionary entrie s for structure element access'],
181 'TABLE 9.14': ['AttributeObjectsCommon', 'Entry common to all attribute objects' ],
182 'TABLE 9.15': ['MarkInformationDictionary', 'Entry in the mark information dicti onary'],
183 'TABLE 9.16': ['ArtifactsDictionary', 'Property list entries for artifacts'],
184 'TABLE 9.27': ['StandardStructureTypesCommon', 'Standard layout attributes commo n to all standard structure types'],
185 'TABLE 9.28': ['LayoutAttributesSpecificToBlock-LevelStructureElements', 'Additi onal standard layout attributes specific to block-level structure elements'],
186 'TABLE 9.29': ['LayoutAttributesSpecificToInline-LevelStructureElementsDictionar y', 'Standard layout attributes specific to inline-level structure elements'],
187 'TABLE 9.30': ['ListAttributeDictionary', 'Standard list attribute'],
188 'TABLE 9.31': ['TableAttributesDictionary', 'Standard table attributes'],
189 'TABLE 9.32': ['WebCaptureInformationDictionary', 'Entries in the Web Capture in formation dictionary'],
190 'TABLE 9.33': ['WebCaptureContentSetsCommon', 'Entries common to all Web Capture content sets'],
191 'TABLE 9.35': ['SpecificToAWebCaptureImageSet', 'Additional entries specific to a Web Capture image set'],
192 'TABLE 9.36': ['SourceInformationDictionary', 'Entries in a source information d ictionary'],
193 'TABLE 9.37': ['UrlAliasDictionary', 'Entries in a URL alias dictionary'],
194 'TABLE 9.38': ['WebCaptureCommandDictionary', 'Entries in a Web Capture command dictionary'],
195 'TABLE 9.40': ['WebCaptureCommandSettingsDictionary', 'Entries in a Web Capture command settings dictionary'],
196 'TABLE 9.41': ['BoxColorInformationDictionary', 'Entries in a box color informat ion dictionary'],
197 'TABLE 9.43': ['SpecificToAPrinter’SMarkAnnotation', 'Additional entries specifi c to a printer’s mark annotation'],
198 'TABLE 9.44': ['SpecificToAPrinter’SMarkFormDictionary', 'Additional entries spe cific to a printer’s mark form dictionary'],
199 'TABLE 9.45': ['SeparationDictionary', 'Entries in a separation dictionary'],
200 'TABLE 9.46': ['Pdf/XOutputIntentDictionary', 'Entries in a PDF/X output intent dictionary'],
201 'TABLE 9.47': ['SpecificToATrapNetworkAnnotation', 'Additional entries specific to a trap network annotation'],
202 'TABLE 9.48': ['SpecificToATrapNetworkAppearanceStream', 'Additional entries spe cific to a trap network appearance stream'],
203 'TABLE 9.49': ['OpiVersionDictionary', 'Entry in an OPI version dictionary'],
204 }
205
206
53 def acceptType(val): 207 def acceptType(val):
54 global knownTypes 208 global knownTypes
55 209
56 ret = val 210 ret = val
57 211
58 for item in knownTypes: 212 for item in knownTypes:
59 ret = ret.replace(item, '') 213 ret = ret.replace(item, '')
60 214
61 return ret == '' 215 return ret == ''
62 216
63 217
64 def inTable(): 218 def inTable():
65 global tableHeaderFound 219 global tableHeaderFound
66 return tableHeaderFound 220 return tableHeaderFound
67 221
68 def tableDescriptionFound(desc): 222 def tableDescriptionFound(desc):
69 global table 223 global table
70 table = desc.strip() 224 table = desc.strip()
71 225
72 def tableHasHeader(): 226 def tableHasHeader():
73 global table 227 global table
74 global tableHeaderFound 228 global tableHeaderFound
75 229
76 tableHeaderFound = True 230 tableHeaderFound = True
77 #print table 231 #print table
78 232
79 233
80 def commitRow(): 234 def commitRow():
81 global columnValues 235 global columnValues
236 global emitedDitionaryName
237 global table
238 global tableToClassName
239
240 if columnValues == None:
241 return
242
82 #print columnValues 243 #print columnValues
83 244
84 lastClosed = columnValues[2].find(')') 245 lastClosed = columnValues[2].find(')')
85 if lastClosed < 0: 246 if lastClosed < 0:
86 print 'ERRRRRRRRRRRRRRROR' 247 print 'ERRRRRRRRRRRRRRROR'
87 print columnValues 248 print columnValues
88 return 249 return
89 250
90 spec = columnValues[2][:lastClosed + 1] 251 spec = columnValues[2][:lastClosed + 1]
91 spec = spec.replace('(', ';') 252 spec = spec.replace('(', ';')
92 spec = spec.replace(')', ';') 253 spec = spec.replace(')', ';')
93 spec = spec.strip(';') 254 spec = spec.strip(';')
94 255
95 specs = spec.split(';') 256 specs = spec.split(';')
96 257
97 # clearly required, but it can be required with conditions. don't handle this ones here, but manually 258 # clearly required, but it can be required with conditions. don't handle this ones here, but manually
98 required = specs[0] == 'Required' 259 required = specs[0] == 'Required'
99 260
100 inheritable = False 261 inheritable = False
101 version = '' 262 version = ''
102 for s in specs: 263 for s in specs:
103 if s.strip() == 'inheritable' or s.strip() == 'Inheritable': 264 if s.strip() == 'inheritable' or s.strip() == 'Inheritable':
104 inheritable = True 265 inheritable = True
105 elif re.match('^PDF [0-9]*[\.[0-9]*]*', s.strip()): 266 elif re.match('^PDF [0-9]*[\.[0-9]*]*', s.strip()):
106 version = s.strip() 267 version = s.strip()
107 elif s != 'Required': 268 elif s != 'Required':
108 required = False 269 required = False
109 270
110 print spec 271 #print spec
111 print specs 272 #print specs
112 print required 273 #print required
113 print inheritable 274 #print inheritable
114 print version 275 #print version
115 print columnValues 276 #print columnValues
277
278 columnValues = [columnValues[0].replace(unicode('fi', 'utf8'), 'fi'), columnVal ues[1].replace(unicode('fi', 'utf8'), 'fi'), columnValues[2].replace(unicode('fi', 'utf8'), 'fi')]
279
280 if emitedDitionaryName == '':
281 table = table.replace(unicode('fi', 'utf8'), 'fi')
282
283
284 #print table
285 emitedDitionaryName = 'foo'
286 e = re.search('[Entries|Entry] in [a-z]* (.* dictionary)', table)
287 a = re.search('Additional [a-z]* in a[n]? (.* dictionary)', table)
288 s = re.search('Additional [a-z]* (.*)', table)
289 c = re.search('[Entries|Entry] common to all (.*)', table)
290 o1 = re.search('Optional parameter[s]? for the (.*)', table)
291 o2 = re.search('Optional parameter[s]? for (.*)', table)
292 t = re.search('.*ntries in [a-z]* (.*)', table)
293
294 r = re.search('Property list entries for (.*)', table)
295 st = re.search('Standard (.*)', table)
296
297 if e:
298 emitedDitionaryName = e.group(1).title().replace(' ', '')
299 #print emitedDitionaryName
300 elif a:
301 emitedDitionaryName = a.group(1).title().replace(' ', '')
302 #print emitedDitionaryName
303 elif s:
304 emitedDitionaryName = s.group(1).title().replace(' ', '')
305 #print emitedDitionaryName
306 elif c:
307 emitedDitionaryName = c.group(1).title().replace(' ', '') + 'Common'
308 #print emitedDitionaryName
309 elif o1:
310 emitedDitionaryName = o1.group(1).title().replace(' ', '') + 'OptionalPara meters'
311 #print emitedDitionaryName
312 elif o2:
313 emitedDitionaryName = o2.group(1).title().replace(' ', '') + 'OptionalPara meters'
314 #print emitedDitionaryName
315 elif t:
316 emitedDitionaryName = t.group(1).title().replace(' ', '') + 'Dictionary'
317 #print emitedDitionaryName
318 elif r:
319 emitedDitionaryName = r.group(1).title().replace(' ', '') + 'Dictionary'
320 #print emitedDitionaryName
321 elif st:
322 emitedDitionaryName = st.group(1).title().replace(' ', '') + 'Dictionary'
323 #print emitedDitionaryName
324 #else:
325 #print table
326
327 tableKey = re.search('(TABLE [0-9].[0-9][0-9]?)', table).group(1)
328 #print tableKey
329 #print('\'' + tableKey + '\': [\'' + emitedDitionaryName + '\', \'' + table[ len(tableKey) + 1:] + '\'],')
330
331 emitedDitionaryName = tableToClassName[tableKey][0]
332 comment = tableToClassName[tableKey][1]
333
334 print(' all.addClass(\'' + emitedDitionaryName + '\', \'Dictionary\', \'' + comment + '\')\\')
335
336 if required:
337 print(' .required(\'NULL\')\\')
338 else:
339 print(' .optional()\\')
340
341 print(' .field(\'' + columnValues[0] + '\')\\')
342 print(' .name(\'' + columnValues[0] + '\')\\')
343 print(' .type(\'' + columnValues[1] + '\')\\')
344 print(' .comment(\'' + columnValues[2] + '\')\\')
345 print(' .done().done()\\')
346
347
348 columnValues = None
116 349
117 def newRow(first, second, third): 350 def newRow(first, second, third):
118 global columnValues 351 global columnValues
119 columnValues = [first.rstrip(), second.rstrip(), third.rstrip()] 352 columnValues = [first.rstrip(), second.rstrip(), third.rstrip()]
120 353
121 def appendRow(second, third): 354 def appendRow(second, third):
122 global columnValues 355 global columnValues
123 if second.rstrip() != '': 356 if second.rstrip() != '':
124 columnValues[1] = columnValues[1] + ' ' + second.rstrip() 357 columnValues[1] = columnValues[1] + ' ' + second.rstrip()
125 if third.rstrip() != '': 358 if third.rstrip() != '':
(...skipping 21 matching lines...) Expand all
147 columnWidth[1] = line.find('(Optional') - columnWidth[0] 380 columnWidth[1] = line.find('(Optional') - columnWidth[0]
148 if words[i].startswith('(Required'): 381 if words[i].startswith('(Required'):
149 columnWidth[1] = line.find('(Required') - columnWidth[0] 382 columnWidth[1] = line.find('(Required') - columnWidth[0]
150 return True 383 return True
151 384
152 return False 385 return False
153 386
154 387
155 def stopTable(): 388 def stopTable():
156 global tableHeaderFound 389 global tableHeaderFound
390 global emitedDitionaryName
157 commitRow() 391 commitRow()
158 tableHeaderFound = False 392 tableHeaderFound = False
393 emitedDitionaryName = ''
394 print(' .done()')
395 print
159 396
160 397
161 def killTable(): 398 def killTable():
162 return 399 return
163 400
164 def processLine(line): 401 def processLine(line):
165 global lines 402 global lines
166 global tableLine 403 global tableLine
167 global tableRow 404 global tableRow
168 global columnWidth 405 global columnWidth
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 if first != '' and second != '' and third[0] == '(': 495 if first != '' and second != '' and third[0] == '(':
259 commitRow() 496 commitRow()
260 newRow(first, second, third) 497 newRow(first, second, third)
261 return 498 return
262 499
263 500
264 def generateDef(): 501 def generateDef():
265 global lines 502 global lines
266 for line in sys.stdin: 503 for line in sys.stdin:
267 processLine(line) 504 processLine(line)
268 print lines 505 #print lines
269 506
270 if '__main__' == __name__: 507 if '__main__' == __name__:
271 sys.exit(generateDef()) 508 sys.exit(generateDef())
OLDNEW
« no previous file with comments | « experimental/PdfViewer/generate_code.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698