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

Unified Diff: tools/json_schema_compiler/schema_loader.py

Issue 682493002: Remove the dependency on json schema compiler. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/json_schema_compiler/preview.py ('k') | tools/json_schema_compiler/schema_util.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/json_schema_compiler/schema_loader.py
diff --git a/tools/json_schema_compiler/schema_loader.py b/tools/json_schema_compiler/schema_loader.py
deleted file mode 100644
index b8969910c6b693a6eed4c2da1e07f01d73b84997..0000000000000000000000000000000000000000
--- a/tools/json_schema_compiler/schema_loader.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# 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.
-
-import os
-import re
-import sys
-
-import idl_schema
-import json_schema
-from cpp_namespace_environment import CppNamespaceEnvironment
-from model import Model, UnixName
-
-def GenerateFilenames(full_namespace):
- # Try to find the file defining the namespace. Eg. for
- # nameSpace.sub_name_space.Type' the following heuristics looks for:
- # 1. name_space_sub_name_space.json,
- # 2. name_space_sub_name_space.idl,
- # 3. sub_name_space.json,
- # 4. sub_name_space.idl,
- # 5. etc.
- sub_namespaces = full_namespace.split('.')
- filenames = [ ]
- basename = None
- for namespace in reversed(sub_namespaces):
- if basename is not None:
- basename = UnixName(namespace + '.' + basename)
- else:
- basename = UnixName(namespace)
- for ext in ['json', 'idl']:
- filenames.append('%s.%s' % (basename, ext))
- return filenames
-
-class SchemaLoader(object):
- '''Resolves a type name into the namespace the type belongs to.
-
- Properties:
- - |root| path to the root directory.
- - |path| path to the directory with the API header files, relative to the
- root.
- - |include_rules| List containing tuples with (path, cpp_namespace_pattern)
- used when searching for types.
- - |cpp_namespace_pattern| Default namespace pattern
- '''
- def __init__(self,
- root,
- path,
- include_rules,
- cpp_namespace_pattern):
- self._root = root
- self._include_rules = [(path, cpp_namespace_pattern)]
- self._include_rules.extend(include_rules)
-
- def ResolveNamespace(self, full_namespace):
- filenames = GenerateFilenames(full_namespace)
- for path, cpp_namespace in self._include_rules:
- for filename in reversed(filenames):
- filepath = os.path.join(path, filename);
- if os.path.exists(os.path.join(self._root, filepath)):
- return Model().AddNamespace(
- self.LoadSchema(filepath)[0],
- filepath,
- environment=CppNamespaceEnvironment(cpp_namespace))
- return None
-
- def ResolveType(self, full_name, default_namespace):
- name_parts = full_name.rsplit('.', 1)
- if len(name_parts) == 1:
- if full_name not in default_namespace.types:
- return None
- return default_namespace
- full_namespace, type_name = full_name.rsplit('.', 1)
- namespace = self.ResolveNamespace(full_namespace)
- if namespace and type_name in namespace.types:
- return namespace
- return None
-
- def LoadSchema(self, schema):
- '''Load a schema definition. The schema parameter must be a file name
- with the full path relative to the root.'''
- schema_filename, schema_extension = os.path.splitext(schema)
-
- schema_path = os.path.join(self._root, schema)
- if schema_extension == '.json':
- api_defs = json_schema.Load(schema_path)
- elif schema_extension == '.idl':
- api_defs = idl_schema.Load(schema_path)
- else:
- sys.exit('Did not recognize file extension %s for schema %s' %
- (schema_extension, schema))
-
- return api_defs
« no previous file with comments | « tools/json_schema_compiler/preview.py ('k') | tools/json_schema_compiler/schema_util.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698