Chromium Code Reviews| Index: tools/json_schema_compiler/json_schema.py |
| diff --git a/tools/json_schema_compiler/json_schema.py b/tools/json_schema_compiler/json_schema.py |
| index 46ca4874c57486e55dcebfd00eed29ed393b0726..c3a85a869bc5acfab5df11d608c0180c179b452d 100644 |
| --- a/tools/json_schema_compiler/json_schema.py |
| +++ b/tools/json_schema_compiler/json_schema.py |
| @@ -48,10 +48,33 @@ def StripJSONComments(stream): |
| return result |
| +def DeleteNocompileNodes(item): |
| + def HasNocompile(thing): |
| + return type(thing) == dict and thing.get('nocompile', False) |
| + |
| + if type(item) == dict: |
| + toDelete = [] |
| + for key, value in item.items(): |
| + if HasNocompile(value): |
| + toDelete.append(key) |
| + else: |
| + DeleteNocompileNodes(value) |
| + for delete in toDelete: |
|
Yoyo Zhou
2012/04/16 23:21:46
I'd call 'delete' 'key' instead.
not at google - send to devlin
2012/04/17 04:05:45
Done.
|
| + del item[delete] |
| + elif type(item) == list: |
|
Yoyo Zhou
2012/04/16 23:21:46
You could make this a list comprehension.
item[:]
not at google - send to devlin
2012/04/17 04:05:45
Done.
|
| + i = 0 |
| + while i < len(item): |
| + if HasNocompile(item[i]): |
| + del item[i] |
| + else: |
| + DeleteNocompileNodes(item[i]) |
| + i += 1 |
| + |
| + return item |
| + |
| def Load(filename): |
| with open(filename, 'r') as handle: |
| - return json.loads(StripJSONComments(handle.read())) |
| - |
| + return DeleteNocompileNodes(json.loads(StripJSONComments(handle.read()))) |
| # A dictionary mapping |filename| to the object resulting from loading the JSON |
| # at |filename|. |