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

Unified Diff: tools/json_schema_compiler/model.py

Issue 11018003: Extensions Docs Server: Server code for showing properties of properties (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes Created 8 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 | « chrome/common/extensions/docs/server2/test_data/test_json/expected_test_file.json ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/json_schema_compiler/model.py
diff --git a/tools/json_schema_compiler/model.py b/tools/json_schema_compiler/model.py
index 38a70acd65912dfc39ec0614f81b94f458677a88..9e29726577e40e9f19655bbefeaa40a9911f84e1 100644
--- a/tools/json_schema_compiler/model.py
+++ b/tools/json_schema_compiler/model.py
@@ -51,10 +51,10 @@ class Namespace(object):
self.source_file = source_file
self.source_file_dir, self.source_file_filename = os.path.split(source_file)
self.parent = None
- _AddTypes(self, json)
- _AddFunctions(self, json)
- _AddEvents(self, json)
- _AddProperties(self, json)
+ _AddTypes(self, json, self)
+ _AddFunctions(self, json, self)
+ _AddEvents(self, json, self)
+ _AddProperties(self, json, self)
class Type(object):
"""A Type defined in the json.
@@ -72,11 +72,15 @@ class Type(object):
parameters
- |type_| the PropertyType of this Type
- |item_type| if this is an array, the type of items in the array
+ - |simple_name| the name of this Type without a namespace
"""
- def __init__(self, parent, name, json):
+ def __init__(self, parent, name, json, namespace):
if json.get('type') == 'array':
self.type_ = PropertyType.ARRAY
- self.item_type = Property(self, name + "Element", json['items'],
+ self.item_type = Property(self,
+ name + "Element",
+ json['items'],
+ namespace,
from_json=True,
from_client=True)
elif 'enum' in json:
@@ -95,15 +99,16 @@ class Type(object):
raise ParseException(self, name + " has no properties or functions")
self.type_ = PropertyType.OBJECT
self.name = name
+ self.simple_name = _StripNamespace(self.name, namespace)
self.unix_name = UnixName(self.name)
self.description = json.get('description')
self.from_json = True
self.from_client = True
self.parent = parent
self.instance_of = json.get('isInstanceOf', None)
- _AddFunctions(self, json)
- _AddEvents(self, json)
- _AddProperties(self, json, from_json=True, from_client=True)
+ _AddFunctions(self, json, namespace)
+ _AddEvents(self, json, namespace)
+ _AddProperties(self, json, namespace, from_json=True, from_client=True)
additional_properties_key = 'additionalProperties'
additional_properties = json.get(additional_properties_key)
@@ -112,6 +117,7 @@ class Type(object):
self,
additional_properties_key,
additional_properties,
+ namespace,
is_additional_properties=True)
class Function(object):
@@ -126,9 +132,16 @@ class Function(object):
one
- |optional| whether the Function is "optional"; this only makes sense to be
present when the Function is representing a callback property.
+ - |simple_name| the name of this Function without a namespace
"""
- def __init__(self, parent, json, from_json=False, from_client=False):
+ def __init__(self,
+ parent,
+ json,
+ namespace,
+ from_json=False,
+ from_client=False):
self.name = json['name']
+ self.simple_name = _StripNamespace(self.name, namespace)
self.params = []
self.description = json.get('description')
self.callback = None
@@ -143,6 +156,7 @@ class Function(object):
def GeneratePropertyFromParam(p):
return Property(self,
p['name'], p,
+ namespace,
from_json=from_json,
from_client=from_client)
@@ -161,11 +175,14 @@ class Function(object):
self.params.append(GeneratePropertyFromParam(param))
if callback_param:
- self.callback = Function(self, callback_param, from_client=True)
+ self.callback = Function(self,
+ callback_param,
+ namespace,
+ from_client=True)
self.returns = None
if 'returns' in json:
- self.returns = Property(self, 'return', json['returns'])
+ self.returns = Property(self, 'return', json['returns'], namespace)
class Property(object):
"""A property of a type OR a parameter to a function.
@@ -189,11 +206,19 @@ class Property(object):
- |from_json| indicates that instances of the Type can originate from the
JSON (as described by the schema), such as top-level types and function
parameters
+ - |simple_name| the name of this Property without a namespace
"""
- def __init__(self, parent, name, json, is_additional_properties=False,
- from_json=False, from_client=False):
+ def __init__(self,
+ parent,
+ name,
+ json,
+ namespace,
+ is_additional_properties=False,
+ from_json=False,
+ from_client=False):
self.name = name
+ self.simple_name = _StripNamespace(self.name, namespace)
self._unix_name = UnixName(self.name)
self._unix_name_used = False
self.optional = json.get('optional', False)
@@ -204,7 +229,7 @@ class Property(object):
self.from_json = from_json
self.from_client = from_client
self.instance_of = json.get('isInstanceOf', None)
- _AddProperties(self, json)
+ _AddProperties(self, json, namespace)
if is_additional_properties:
self.type_ = PropertyType.ADDITIONAL_PROPERTIES
elif '$ref' in json:
@@ -220,12 +245,15 @@ class Property(object):
elif 'type' in json:
self.type_ = self._JsonTypeToPropertyType(json['type'])
if self.type_ == PropertyType.ARRAY:
- self.item_type = Property(self, name + "Element", json['items'],
- from_json=from_json,
- from_client=from_client)
+ self.item_type = Property(self,
+ name + "Element",
+ json['items'],
+ namespace,
+ from_json=from_json,
+ from_client=from_client)
elif self.type_ == PropertyType.OBJECT:
# These members are read when this OBJECT Property is used as a Type
- type_ = Type(self, self.name, json)
+ type_ = Type(self, self.name, json, namespace)
# self.properties will already have some value from |_AddProperties|.
self.properties.update(type_.properties)
self.functions = type_.functions
@@ -236,9 +264,12 @@ class Property(object):
self.type_ = PropertyType.CHOICES
self.compiled_type = self.type_
for choice_json in json['choices']:
- choice = Property(self, self.name, choice_json,
- from_json=from_json,
- from_client=from_client)
+ choice = Property(self,
+ self.name,
+ choice_json,
+ namespace,
+ from_json=from_json,
+ from_client=from_client)
choice.unix_name = UnixName(self.name + choice.type_.name)
# The existence of any single choice is optional
choice.optional = True
@@ -353,6 +384,11 @@ def UnixName(name):
# Finally, replace any remaining periods, and make lowercase.
return s2.replace('.', '_').lower()
+def _StripNamespace(name, namespace):
+ if name.startswith(namespace.name + '.'):
+ return name[len(namespace.name + '.'):]
+ return name
+
def _GetModelHierarchy(entity):
"""Returns the hierarchy of the given model entity."""
hierarchy = []
@@ -365,32 +401,36 @@ def _GetModelHierarchy(entity):
hierarchy.reverse()
return hierarchy
-def _AddTypes(model, json):
+def _AddTypes(model, json, namespace):
"""Adds Type objects to |model| contained in the 'types' field of |json|.
"""
model.types = {}
for type_json in json.get('types', []):
- type_ = Type(model, type_json['id'], type_json)
+ type_ = Type(model, type_json['id'], type_json, namespace)
model.types[type_.name] = type_
-def _AddFunctions(model, json):
+def _AddFunctions(model, json, namespace):
"""Adds Function objects to |model| contained in the 'functions' field of
|json|.
"""
model.functions = {}
for function_json in json.get('functions', []):
- function = Function(model, function_json, from_json=True)
+ function = Function(model, function_json, namespace, from_json=True)
model.functions[function.name] = function
-def _AddEvents(model, json):
+def _AddEvents(model, json, namespace):
"""Adds Function objects to |model| contained in the 'events' field of |json|.
"""
model.events = {}
for event_json in json.get('events', []):
- event = Function(model, event_json, from_client=True)
+ event = Function(model, event_json, namespace, from_client=True)
model.events[event.name] = event
-def _AddProperties(model, json, from_json=False, from_client=False):
+def _AddProperties(model,
+ json,
+ namespace,
+ from_json=False,
+ from_client=False):
"""Adds model.Property objects to |model| contained in the 'properties' field
of |json|.
"""
@@ -400,5 +440,6 @@ def _AddProperties(model, json, from_json=False, from_client=False):
model,
name,
property_json,
+ namespace,
from_json=from_json,
from_client=from_client)
« no previous file with comments | « chrome/common/extensions/docs/server2/test_data/test_json/expected_test_file.json ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698