Index: tools/json_schema_compiler/schema_util.py |
diff --git a/tools/json_schema_compiler/schema_util.py b/tools/json_schema_compiler/schema_util.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..289d24df7c43770a270895657996629d5d16c2e4 |
--- /dev/null |
+++ b/tools/json_schema_compiler/schema_util.py |
@@ -0,0 +1,37 @@ |
+# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+"""Utilies for the processing of schema python structures. |
+""" |
+ |
+def StripSchemaNamespace(s): |
+ last_dot = s.rfind('.') |
+ if not last_dot == -1: |
+ return s[last_dot + 1:] |
+ return s |
+ |
+def PrefixSchemasWithNamespace(schemas): |
+ for s in schemas: |
+ _PrefixWithNamespace(s.get("namespace"), s) |
+ |
+def _MaybePrefixFieldWithNamespace(namespace, schema, key): |
+ if type(schema) == dict and key in schema: |
+ old_value = schema[key] |
+ if not "." in old_value: |
+ schema[key] = namespace + "." + old_value |
+ |
+def _PrefixTypesWithNamespace(namespace, types): |
+ for t in types: |
+ _MaybePrefixFieldWithNamespace(namespace, t, "id") |
+ _MaybePrefixFieldWithNamespace(namespace, t, "customBindings") |
+ |
+def _PrefixWithNamespace(namespace, schema): |
+ if type(schema) == dict: |
+ if "types" in schema: |
+ _PrefixTypesWithNamespace(namespace, schema.get("types")) |
+ _MaybePrefixFieldWithNamespace(namespace, schema, "$ref") |
+ for s in schema: |
+ _PrefixWithNamespace(namespace, schema[s]) |
+ elif type(schema) == list: |
+ for s in schema: |
+ _PrefixWithNamespace(namespace, s) |