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|. |