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

Side by Side Diff: tools/json_schema_compiler/idl_schema.py

Issue 10367002: Make all extension api types fully qualified. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tests pass, docs are updated, it's g2g I think Created 8 years, 7 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
OLDNEW
1 #! /usr/bin/env python 1 #! /usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import json 6 import json
7 import os.path 7 import os.path
8 import re
9 import schema_util
asargent_no_longer_on_chrome 2012/05/09 18:37:23 nit: I've been trying to move all the code in this
bryeung 2012/05/09 19:12:00 Done.
8 import sys 10 import sys
9 import re
10 11
11 # This file is a peer to json_schema.py. Each of these files understands a 12 # This file is a peer to json_schema.py. Each of these files understands a
12 # certain format describing APIs (either JSON or IDL), reads files written 13 # certain format describing APIs (either JSON or IDL), reads files written
13 # in that format into memory, and emits them as a Python array of objects 14 # in that format into memory, and emits them as a Python array of objects
14 # corresponding to those APIs, where the objects are formatted in a way that 15 # corresponding to those APIs, where the objects are formatted in a way that
15 # the JSON schema compiler understands. compiler.py drives both idl_schema.py 16 # the JSON schema compiler understands. compiler.py drives both idl_schema.py
16 # and json_schema.py. 17 # and json_schema.py.
17 18
18 # idl_parser expects to be able to import certain files in its directory, 19 # idl_parser expects to be able to import certain files in its directory,
19 # so let's set things up the way it wants. 20 # so let's set things up the way it wants.
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 continue 248 continue
248 elif cls == 'Comment': 249 elif cls == 'Comment':
249 continue 250 continue
250 elif cls == 'ExtAttribute': 251 elif cls == 'ExtAttribute':
251 if node.name == 'nodoc': 252 if node.name == 'nodoc':
252 nodoc = bool(node.value) 253 nodoc = bool(node.value)
253 else: 254 else:
254 continue 255 continue
255 else: 256 else:
256 sys.exit("Did not process %s %s" % (node.cls, node)) 257 sys.exit("Did not process %s %s" % (node.cls, node))
258 schema_util.PrefixSchemasWithNamespace(namespaces)
257 return namespaces 259 return namespaces
258 260
259 def Load(filename): 261 def Load(filename):
260 ''' 262 '''
261 Given the filename of an IDL file, parses it and returns an equivalent 263 Given the filename of an IDL file, parses it and returns an equivalent
262 Python dictionary in a format that the JSON schema compiler expects to see. 264 Python dictionary in a format that the JSON schema compiler expects to see.
263 ''' 265 '''
264 266
265 f = open(filename, 'r') 267 f = open(filename, 'r')
266 contents = f.read() 268 contents = f.read()
267 f.close() 269 f.close()
268 270
269 idl = idl_parser.IDLParser().ParseData(contents, filename) 271 idl = idl_parser.IDLParser().ParseData(contents, filename)
270 idl_schema = IDLSchema(idl) 272 idl_schema = IDLSchema(idl)
271 return idl_schema.process() 273 return idl_schema.process()
272 274
273 def Main(): 275 def Main():
274 ''' 276 '''
275 Dump a json serialization of parse result for the IDL files whose names 277 Dump a json serialization of parse result for the IDL files whose names
276 were passed in on the command line. 278 were passed in on the command line.
277 ''' 279 '''
278 for filename in sys.argv[1:]: 280 for filename in sys.argv[1:]:
279 schema = Load(filename) 281 schema = Load(filename)
280 print json.dumps(schema, indent=2) 282 print json.dumps(schema, indent=2)
281 283
282 if __name__ == '__main__': 284 if __name__ == '__main__':
283 Main() 285 Main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698