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 |