| OLD | NEW |
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 """ | 4 """ |
| 5 Generator language component for compiler.py that adds Dart language support. | 5 Generator language component for compiler.py that adds Dart language support. |
| 6 """ | 6 """ |
| 7 | 7 |
| 8 from code import Code | 8 from code import Code |
| 9 from model import Function, PropertyType | 9 from model import Function, PropertyType |
| 10 from schema_util import StripNamespace | 10 from schema_util import StripNamespace |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 """Given a Type and Property, returns the Code object for the getter and | 184 """Given a Type and Property, returns the Code object for the getter and |
| 185 setter for that property. | 185 setter for that property. |
| 186 """ | 186 """ |
| 187 c = Code() | 187 c = Code() |
| 188 override = self._GetOverride([type_.name, prop.name, '.get'], | 188 override = self._GetOverride([type_.name, prop.name, '.get'], |
| 189 document_with=prop) | 189 document_with=prop) |
| 190 c.Cblock(override if override is not None | 190 c.Cblock(override if override is not None |
| 191 else self._GenerateGetter(type_, prop)) | 191 else self._GenerateGetter(type_, prop)) |
| 192 override = self._GetOverride([type_.name, prop.name, '.set']) | 192 override = self._GetOverride([type_.name, prop.name, '.set']) |
| 193 c.Cblock(override if override is not None | 193 c.Cblock(override if override is not None |
| 194 else self._GenerateSetter(type_, prop)) | 194 else self._GenerateSetter(prop)) |
| 195 return c | 195 return c |
| 196 | 196 |
| 197 def _GenerateGetter(self, type_, prop): | 197 def _GenerateGetter(self, type_, prop): |
| 198 """Given a Type and Property, returns the Code object for the getter for | 198 """Given a Type and Property, returns the Code object for the getter for |
| 199 that property. | 199 that property. |
| 200 | 200 |
| 201 Also adds the documentation for this property before the method. | 201 Also adds the documentation for this property before the method. |
| 202 """ | 202 """ |
| 203 c = Code() | 203 c = Code() |
| 204 c.Concat(self._GenerateDocumentation(prop)) | 204 c.Concat(self._GenerateDocumentation(prop)) |
| (...skipping 29 matching lines...) Expand all Loading... |
| 234 else: | 234 else: |
| 235 c.Append("%s get %s => JS('%s', '#.%s', this._jsObject);" % | 235 c.Append("%s get %s => JS('%s', '#.%s', this._jsObject);" % |
| 236 (type_name, prop.name, type_name, prop.name)) | 236 (type_name, prop.name, type_name, prop.name)) |
| 237 else: | 237 else: |
| 238 raise Exception( | 238 raise Exception( |
| 239 "Could not generate wrapper for %s.%s: unserializable type %s" % | 239 "Could not generate wrapper for %s.%s: unserializable type %s" % |
| 240 (type_.name, prop.name, type_name) | 240 (type_.name, prop.name, type_name) |
| 241 ) | 241 ) |
| 242 return c | 242 return c |
| 243 | 243 |
| 244 def _GenerateSetter(self, type_, prop): | 244 def _GenerateSetter(self, prop): |
| 245 """Given a Type and Property, returns the Code object for the setter for | 245 """Given a Property, returns the Code object for the setter for |
| 246 that property. | 246 that property. |
| 247 """ | 247 """ |
| 248 c = Code() | 248 c = Code() |
| 249 type_name = self._GetDartType(prop.type_) | 249 type_name = self._GetDartType(prop.type_) |
| 250 wrapped_name = prop.name | 250 wrapped_name = prop.name |
| 251 if not self._IsBaseType(prop.type_): | 251 if not self._IsBaseType(prop.type_): |
| 252 wrapped_name = 'convertArgument(%s)' % prop.name | 252 wrapped_name = 'convertArgument(%s)' % prop.name |
| 253 | 253 |
| 254 (c.Sblock("void set %s(%s %s) {" % (prop.name, type_name, prop.name)) | 254 (c.Sblock("void set %s(%s %s) {" % (prop.name, type_name, prop.name)) |
| 255 .Append("JS('void', '#.%s = #', this._jsObject, %s);" % | 255 .Append("JS('void', '#.%s = #', this._jsObject, %s);" % |
| (...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 return 'Object' | 754 return 'Object' |
| 755 elif prop_type is PropertyType.FUNCTION: | 755 elif prop_type is PropertyType.FUNCTION: |
| 756 return 'Function' | 756 return 'Function' |
| 757 elif prop_type is PropertyType.ARRAY: | 757 elif prop_type is PropertyType.ARRAY: |
| 758 return 'List<%s>' % self._GetDartType(type_.item_type) | 758 return 'List<%s>' % self._GetDartType(type_.item_type) |
| 759 elif prop_type is PropertyType.BINARY: | 759 elif prop_type is PropertyType.BINARY: |
| 760 return 'String' | 760 return 'String' |
| 761 else: | 761 else: |
| 762 raise NotImplementedError(prop_type) | 762 raise NotImplementedError(prop_type) |
| 763 | 763 |
| OLD | NEW |