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

Unified Diff: lib/dom/scripts/generator.py

Issue 10698108: Stop passing HtmlSystemShared around and move html renaming to IDLTypeInfo. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: . Created 8 years, 5 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 | « lib/dom/scripts/dartgenerator.py ('k') | lib/dom/scripts/systembase.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/dom/scripts/generator.py
diff --git a/lib/dom/scripts/generator.py b/lib/dom/scripts/generator.py
index cabdc3b60b34301119a93bb95fbb016be7569e2d..381fd7b6e28efddec6f98beced4c6e7f8388cde4 100644
--- a/lib/dom/scripts/generator.py
+++ b/lib/dom/scripts/generator.py
@@ -168,7 +168,9 @@ def MatchSourceFilter(thing):
def DartType(idl_type_name):
- return TypeRegistry().TypeInfo(idl_type_name).dart_type()
+ if idl_type_name in _idl_type_registry:
+ return _idl_type_registry[idl_type_name].get('dart_type', idl_type_name)
+ return idl_type_name
class ParamInfo(object):
@@ -204,9 +206,9 @@ def _DartArg(args, interface, constructor=False):
dart_types = sorted(set(DartType(arg.type.id) for arg in args))
if len(dart_types) == 1:
if len(type_ids) == 1:
- return (type_ids[0], dart_types[0])
+ return (type_ids[0], type_ids[0])
else:
- return (None, dart_types[0])
+ return (None, type_ids[0])
else:
return (None, TypeName(type_ids, interface))
@@ -260,7 +262,7 @@ def AnalyzeOperation(interface, operations):
info.name = operations[0].ext_attrs.get('DartName', info.declared_name)
info.constructor_name = None
info.js_name = info.declared_name
- info.type_name = DartType(operations[0].type.id) # TODO: widen.
+ info.type_name = operations[0].type.id # TODO: widen.
info.param_infos = args
return info
@@ -382,14 +384,14 @@ class OperationInfo(object):
param_infos: A list of ParamInfo.
"""
- def ParametersInterfaceDeclaration(self, rename_type=lambda x: x):
+ def ParametersInterfaceDeclaration(self, rename_type):
"""Returns a formatted string declaring the parameters for the interface."""
return self._FormatParams(
self.param_infos, None,
lambda param: TypeOrNothing(rename_type(param.dart_type), param.type_id))
def ParametersImplementationDeclaration(
- self, rename_type=None, default_value='null'):
+ self, rename_type, default_value='null'):
"""Returns a formatted string declaring the parameters for the
implementation.
@@ -397,23 +399,9 @@ class OperationInfo(object):
rename_type: A function that allows the types to be renamed.
The function is applied to the parameter's dart_type.
"""
- if rename_type:
- def renamer(param_info):
- return TypeOrNothing(rename_type(param_info.dart_type))
- return self._FormatParams(self.param_infos, default_value, renamer)
- else:
- def type_fn(param_info):
- if param_info.dart_type == 'Dynamic':
- if param_info.type_id:
- # It is more informative to use a comment IDL type.
- return '/*%s*/' % param_info.type_id
- else:
- return 'var'
- else:
- return param_info.dart_type
- return self._FormatParams(
- self.param_infos, default_value,
- lambda param: TypeOrNothing(param.dart_type, param.type_id))
+ return self._FormatParams(
+ self.param_infos, default_value,
+ lambda param: TypeOrNothing(rename_type(param.dart_type)))
def ParametersAsArgumentList(self):
"""Returns a string of the parameter names suitable for passing the
@@ -821,7 +809,8 @@ _svg_supplemental_includes = [
]
class TypeRegistry(object):
- def __init__(self):
+ def __init__(self, interface_renames):
+ self._interface_renames = interface_renames
self._cache = {}
def TypeInfo(self, type_name):
@@ -829,6 +818,13 @@ class TypeRegistry(object):
self._cache[type_name] = self._TypeInfo(type_name)
return self._cache[type_name]
+ def DartType(self, type_name):
+ dart_type = self.TypeInfo(type_name).dart_type()
+ return self._interface_renames.get(dart_type, dart_type)
+
+ def InterfaceName(self, type_name):
+ return self._interface_renames.get(type_name, type_name)
+
def _TypeInfo(self, type_name):
match = re.match(r'(?:sequence<(\w+)>|(\w+)\[\])$', type_name)
if match:
« no previous file with comments | « lib/dom/scripts/dartgenerator.py ('k') | lib/dom/scripts/systembase.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698