| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 3 # for details. All rights reserved. Use of this source code is governed by a | 3 # for details. All rights reserved. Use of this source code is governed by a |
| 4 # BSD-style license that can be found in the LICENSE file. | 4 # BSD-style license that can be found in the LICENSE file. |
| 5 | 5 |
| 6 """This module provides shared functionality for the system to generate | 6 """This module provides shared functionality for the system to generate |
| 7 Dart:html APIs from the IDL database.""" | 7 Dart:html APIs from the IDL database.""" |
| 8 | 8 |
| 9 import emitter | 9 import emitter |
| 10 import os | 10 import os |
| (...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 644 # conversion code. | 644 # conversion code. |
| 645 if (self._OutputConversion(attribute.type.id, attribute.id) or | 645 if (self._OutputConversion(attribute.type.id, attribute.id) or |
| 646 self._InputConversion(attribute.type.id, attribute.id)): | 646 self._InputConversion(attribute.type.id, attribute.id)): |
| 647 self._AddAttributeUsingProperties(attribute, html_name, read_only) | 647 self._AddAttributeUsingProperties(attribute, html_name, read_only) |
| 648 return | 648 return |
| 649 | 649 |
| 650 output_type = self.SecureOutputType(attribute.type.id) | 650 output_type = self.SecureOutputType(attribute.type.id) |
| 651 input_type = self._NarrowInputType(attribute.type.id) | 651 input_type = self._NarrowInputType(attribute.type.id) |
| 652 annotations = self._Annotations(attribute.type.id, attribute.id) | 652 annotations = self._Annotations(attribute.type.id, attribute.id) |
| 653 rename = self._RenamingAnnotation(attribute.id, html_name) | 653 rename = self._RenamingAnnotation(attribute.id, html_name) |
| 654 self.EmitAttributeDocumentation(attribute) | |
| 655 if not read_only: | 654 if not read_only: |
| 656 self._members_emitter.Emit( | 655 self._members_emitter.Emit( |
| 657 '\n $RENAME$ANNOTATIONS$TYPE $NAME;' | 656 '\n $RENAME$ANNOTATIONS$TYPE $NAME;' |
| 658 '\n', | 657 '\n', |
| 659 RENAME=rename, | 658 RENAME=rename, |
| 660 ANNOTATIONS=annotations, | 659 ANNOTATIONS=annotations, |
| 661 NAME=html_name, | 660 NAME=html_name, |
| 662 TYPE=output_type) | 661 TYPE=output_type) |
| 663 else: | 662 else: |
| 664 template = '\n $RENAME$(ANNOTATIONS)final $TYPE $NAME;\n' | 663 template = '\n $RENAME$(ANNOTATIONS)final $TYPE $NAME;\n' |
| (...skipping 15 matching lines...) Expand all Loading... |
| 680 self._AddRenamingSetter(attribute, html_name) | 679 self._AddRenamingSetter(attribute, html_name) |
| 681 | 680 |
| 682 def _AddInterfaceAttribute(self, attribute, html_name): | 681 def _AddInterfaceAttribute(self, attribute, html_name): |
| 683 self._members_emitter.Emit( | 682 self._members_emitter.Emit( |
| 684 '\n $TYPE $NAME;' | 683 '\n $TYPE $NAME;' |
| 685 '\n', | 684 '\n', |
| 686 NAME=html_name, | 685 NAME=html_name, |
| 687 TYPE=self.SecureOutputType(attribute.type.id)) | 686 TYPE=self.SecureOutputType(attribute.type.id)) |
| 688 | 687 |
| 689 def _AddRenamingGetter(self, attr, html_name): | 688 def _AddRenamingGetter(self, attr, html_name): |
| 690 self.EmitAttributeDocumentation(attr) | |
| 691 | 689 |
| 692 conversion = self._OutputConversion(attr.type.id, attr.id) | 690 conversion = self._OutputConversion(attr.type.id, attr.id) |
| 693 if conversion: | 691 if conversion: |
| 694 return self._AddConvertingGetter(attr, html_name, conversion) | 692 return self._AddConvertingGetter(attr, html_name, conversion) |
| 695 return_type = self.SecureOutputType(attr.type.id) | 693 return_type = self.SecureOutputType(attr.type.id) |
| 696 native_type = self._NarrowToImplementationType(attr.type.id) | 694 native_type = self._NarrowToImplementationType(attr.type.id) |
| 697 self._members_emitter.Emit( | 695 self._members_emitter.Emit( |
| 698 # TODO(sra): Use metadata to provide native name. | 696 # TODO(sra): Use metadata to provide native name. |
| 699 '\n $TYPE get $HTML_NAME => JS("$NATIVE_TYPE", "#.$NAME", this);' | 697 '\n $TYPE get $HTML_NAME => JS("$NATIVE_TYPE", "#.$NAME", this);' |
| 700 '\n', | 698 '\n', |
| 701 HTML_NAME=html_name, | 699 HTML_NAME=html_name, |
| 702 NAME=attr.id, | 700 NAME=attr.id, |
| 703 TYPE=return_type, | 701 TYPE=return_type, |
| 704 NATIVE_TYPE=native_type) | 702 NATIVE_TYPE=native_type) |
| 705 | 703 |
| 706 def _AddRenamingSetter(self, attr, html_name): | 704 def _AddRenamingSetter(self, attr, html_name): |
| 707 self.EmitAttributeDocumentation(attr) | |
| 708 | 705 |
| 709 conversion = self._InputConversion(attr.type.id, attr.id) | 706 conversion = self._InputConversion(attr.type.id, attr.id) |
| 710 if conversion: | 707 if conversion: |
| 711 return self._AddConvertingSetter(attr, html_name, conversion) | 708 return self._AddConvertingSetter(attr, html_name, conversion) |
| 712 self._members_emitter.Emit( | 709 self._members_emitter.Emit( |
| 713 # TODO(sra): Use metadata to provide native name. | 710 # TODO(sra): Use metadata to provide native name. |
| 714 '\n void set $HTML_NAME($TYPE value) {' | 711 '\n void set $HTML_NAME($TYPE value) {' |
| 715 '\n JS("void", "#.$NAME = #", this, value);' | 712 '\n JS("void", "#.$NAME = #", this, value);' |
| 716 '\n }' | 713 '\n }' |
| 717 '\n', | 714 '\n', |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 pass | 749 pass |
| 753 | 750 |
| 754 def EmitOperation(self, info, html_name): | 751 def EmitOperation(self, info, html_name): |
| 755 """ | 752 """ |
| 756 Arguments: | 753 Arguments: |
| 757 info: An OperationInfo object. | 754 info: An OperationInfo object. |
| 758 """ | 755 """ |
| 759 if self._HasCustomImplementation(info.name): | 756 if self._HasCustomImplementation(info.name): |
| 760 return | 757 return |
| 761 | 758 |
| 762 self.EmitOperationDocumentation(info) | |
| 763 | |
| 764 if IsPureInterface(self._interface.id): | 759 if IsPureInterface(self._interface.id): |
| 765 self._AddInterfaceOperation(info, html_name) | 760 self._AddInterfaceOperation(info, html_name) |
| 766 elif any(self._OperationRequiresConversions(op) for op in info.overloads): | 761 elif any(self._OperationRequiresConversions(op) for op in info.overloads): |
| 767 # Any conversions needed? | 762 # Any conversions needed? |
| 768 self._AddOperationWithConversions(info, html_name) | 763 self._AddOperationWithConversions(info, html_name) |
| 769 else: | 764 else: |
| 770 self._AddDirectNativeOperation(info, html_name) | 765 self._AddDirectNativeOperation(info, html_name) |
| 771 | 766 |
| 772 def _AddDirectNativeOperation(self, info, html_name): | 767 def _AddDirectNativeOperation(self, info, html_name): |
| 773 self._members_emitter.Emit( | 768 self._members_emitter.Emit( |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1053 for library_name in libraries: | 1048 for library_name in libraries: |
| 1054 self._libraries[library_name] = DartLibrary( | 1049 self._libraries[library_name] = DartLibrary( |
| 1055 library_name, template_loader, library_type, output_dir) | 1050 library_name, template_loader, library_type, output_dir) |
| 1056 | 1051 |
| 1057 def AddFile(self, basename, library_name, path): | 1052 def AddFile(self, basename, library_name, path): |
| 1058 self._libraries[library_name].AddFile(path) | 1053 self._libraries[library_name].AddFile(path) |
| 1059 | 1054 |
| 1060 def Emit(self, emitter, auxiliary_dir): | 1055 def Emit(self, emitter, auxiliary_dir): |
| 1061 for lib in self._libraries.values(): | 1056 for lib in self._libraries.values(): |
| 1062 lib.Emit(emitter, auxiliary_dir) | 1057 lib.Emit(emitter, auxiliary_dir) |
| OLD | NEW |