Index: tools/dom/scripts/generator.py |
diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py |
index 62f093f8a87539e2bdfbd9072d5ae62174519e35..50a31991de45214e561ab6c5d3acfb27dba03416 100644 |
--- a/tools/dom/scripts/generator.py |
+++ b/tools/dom/scripts/generator.py |
@@ -414,30 +414,56 @@ class OperationInfo(object): |
def __init__(self): |
self.factory_parameters = None |
- def ParametersDeclaration(self, rename_type, force_optional=False): |
+ def ParametersAsDecVarLists(self, rename_type, force_optional=False): |
+ """ Returns a tuple (required, optional, named), where: |
+ required is a list of parameter declarations corresponding to the |
+ required parameters |
+ optional is a list of parameter declarations corresponding to the |
+ optional parameters |
+ named is a boolean which is true if the optional parameters should |
+ be named |
+ A parameter declaration is a tuple (dec, var) where var is the |
+ variable name, and dec is a string suitable for declaring the |
+ variable in a parameter list. That is, dec + var is a valid |
+ parameter declaration. |
+ """ |
def FormatParam(param): |
dart_type = rename_type(param.type_id) if param.type_id else 'dynamic' |
- return '%s%s' % (TypeOrNothing(dart_type, param.type_id), param.name) |
- |
+ return (TypeOrNothing(dart_type, param.type_id), param.name) |
required = [] |
optional = [] |
for param_info in self.param_infos: |
if param_info.is_optional: |
- optional.append(param_info) |
+ optional.append(FormatParam(param_info)) |
else: |
if optional: |
raise Exception('Optional parameters cannot precede required ones: ' |
+ str(params)) |
- required.append(param_info) |
+ required.append(FormatParam(param_info)) |
+ needs_named = optional and self.requires_named_arguments and not force_optional |
+ return (required, optional, needs_named) |
+ |
+ def ParametersAsDecStringList(self, rename_type, force_optional=False): |
+ """Returns a list of strings where each string corresponds to a parameter |
+ declaration. All of the optional/named parameters if any will appear as |
+ a single entry at the end of the list. |
+ """ |
+ (required, optional, needs_named) = \ |
+ self.ParametersAsDecVarLists(rename_type, force_optional) |
+ def FormatParam(dec): |
+ return dec[0] + dec[1] |
argtexts = map(FormatParam, required) |
if optional: |
- needs_named = self.requires_named_arguments and not force_optional |
left_bracket, right_bracket = '{}' if needs_named else '[]' |
argtexts.append( |
left_bracket + |
', '.join(map(FormatParam, optional)) + |
right_bracket) |
- return ', '.join(argtexts) |
+ return argtexts |
+ |
+ def ParametersAsDeclaration(self, rename_type, force_optional=False): |
+ p_list = self.ParametersAsDecStringList(rename_type, force_optional) |
+ return ', '.join(p_list) |
def NumberOfRequiredInDart(self): |
""" Returns a number of required arguments in Dart declaration of |
@@ -459,6 +485,20 @@ class OperationInfo(object): |
parameter_count = len(self.param_infos) |
return ', '.join(map(param_name, self.param_infos[:parameter_count])) |
+ def ParametersAsListOfVariables(self, parameter_count=None): |
+ """Returns a list of the first parameter_count parameter names |
+ as raw variables. |
+ """ |
+ if parameter_count is None: |
+ parameter_count = len(self.param_infos) |
+ return [p.name for p in self.param_infos[:parameter_count]] |
+ |
+ def ParametersAsStringOfVariables(self, parameter_count=None): |
+ """Returns a string containing the first parameter_count parameter names |
+ as raw variables, comma separated. |
+ """ |
+ return ', '.join(self.ParametersAsListOfVariables(parameter_count)) |
+ |
def IsStatic(self): |
is_static = self.overloads[0].is_static |
assert any([is_static == o.is_static for o in self.overloads]) |