summaryrefslogtreecommitdiffstats
path: root/chrome/common/extensions/docs/server2/reference_resolver.py
diff options
context:
space:
mode:
authorahernandez.miralles@gmail.com <ahernandez.miralles@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-08 17:14:50 +0000
committerahernandez.miralles@gmail.com <ahernandez.miralles@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-08 17:14:50 +0000
commit91cd7a388ad2e4118f04fd9fdb20bf4c43b9c803 (patch)
tree998e33663d10adb337916866c685025c2232f50b /chrome/common/extensions/docs/server2/reference_resolver.py
parent626f72dad2ca0ca6d5526297b82f1ccea22f5db1 (diff)
downloadchromium_src-91cd7a388ad2e4118f04fd9fdb20bf4c43b9c803.zip
chromium_src-91cd7a388ad2e4118f04fd9fdb20bf4c43b9c803.tar.gz
chromium_src-91cd7a388ad2e4118f04fd9fdb20bf4c43b9c803.tar.bz2
Remove APIDataSource dependency in ReferenceResolver.
BUG=275039 NOTRY=true Review URL: https://codereview.chromium.org/219183003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262441 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/extensions/docs/server2/reference_resolver.py')
-rw-r--r--chrome/common/extensions/docs/server2/reference_resolver.py24
1 files changed, 12 insertions, 12 deletions
diff --git a/chrome/common/extensions/docs/server2/reference_resolver.py b/chrome/common/extensions/docs/server2/reference_resolver.py
index fe06eeb..7ffb034 100644
--- a/chrome/common/extensions/docs/server2/reference_resolver.py
+++ b/chrome/common/extensions/docs/server2/reference_resolver.py
@@ -7,9 +7,10 @@ import logging
import re
from file_system import FileNotFoundError
+from third_party.json_schema_compiler.model import PropertyType
-def _ClassifySchemaNode(node_name, api):
+def _ClassifySchemaNode(node_name, node):
"""Attempt to classify |node_name| in an API, determining whether |node_name|
refers to a type, function, event, or property in |api|.
"""
@@ -21,8 +22,8 @@ def _ClassifySchemaNode(node_name, api):
('functions', 'method'),
('events', 'event'),
('properties', 'property')]:
- for item in api.get(key, []):
- if item['name'] == node_name:
+ for item in getattr(node, key, {}).itervalues():
+ if item.simple_name == node_name:
if rest is not None:
ret = _ClassifySchemaNode(rest, item)
if ret is not None:
@@ -60,8 +61,7 @@ class ReferenceResolver(object):
# Matches after a $ref: that doesn't have []s.
_bare_ref = re.compile('\w+(\.\w+)*')
- def __init__(self, api_data_source, api_models, object_store):
- self._api_data_source = api_data_source
+ def __init__(self, api_models, object_store):
self._api_models = api_models
self._object_store = object_store
@@ -73,24 +73,24 @@ class ReferenceResolver(object):
if api_name not in api_list:
continue
try:
- api = self._api_data_source.get(api_name, disable_refs=True)
+ api_model = self._api_models.GetModel(api_name).Get()
except FileNotFoundError:
continue
name = '.'.join(parts[i:])
# Attempt to find |name| in the API.
- node_info = _ClassifySchemaNode(name, api)
+ node_info = _ClassifySchemaNode(name, api_model)
if node_info is None:
# Check to see if this ref is a property. If it is, we want the ref to
# the underlying type the property is referencing.
- for prop in api.get('properties', []):
+ for prop in api_model.properties.itervalues():
# If the name of this property is in the ref text, replace the
# property with its type, and attempt to classify it.
- if prop['name'] in name and 'link' in prop:
- name_as_prop_type = name.replace(prop['name'], prop['link']['name'])
- node_info = _ClassifySchemaNode(name_as_prop_type, api)
+ if prop.name in name and prop.type_.property_type == PropertyType.REF:
+ name_as_prop_type = name.replace(prop.name, prop.type_.ref_type)
+ node_info = _ClassifySchemaNode(name_as_prop_type, api_model)
if node_info is not None:
name = name_as_prop_type
- text = ref.replace(prop['name'], prop['link']['name'])
+ text = ref.replace(prop.name, prop.type_.ref_type)
break
if node_info is None:
continue