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

Side by Side Diff: lib/src/transformer/dart_initializer_generator.dart

Issue 580283004: Add JsInitializerGenerator (Closed) Base URL: https://github.com/dart-lang/js-interop.git@master
Patch Set: Created 6 years, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | lib/src/transformer/entry_point_transformer.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library js.transformer.js_initializer_generator; 5 library js.transformer.dart_initializer_generator;
6 6
7 import 'package:js/src/js_elements.dart'; 7 import 'package:js/src/js_elements.dart';
8 import 'package:logging/logging.dart'; 8 import 'package:logging/logging.dart';
9 import 'package:quiver/iterables.dart'; 9 import 'package:quiver/iterables.dart';
10 10
11 final _logger = new Logger('js.transformer.js_initializer_generator'); 11 final _logger = new Logger('js.transformer.dart_initializer_generator');
12 12
13 const JS_PREFIX = '__package_js_impl__'; 13 const JS_PREFIX = '__package_js_impl__';
14 const JS_THIS_REF = '__js_this_ref__'; 14 const JS_THIS_REF = '__js_this_ref__';
15 15
16 class JsInitializerGenerator { 16 class DartInitializerGenerator {
17 final String libraryName; 17 final String libraryName;
18 final String libraryPath; 18 final String libraryPath;
19 final JsElements jsElements; 19 final JsElements jsElements;
20 20
21 final buffer = new StringBuffer(); 21 final buffer = new StringBuffer();
22 22
23 JsInitializerGenerator(this.libraryName, this.libraryPath, this.jsElements); 23 DartInitializerGenerator(this.libraryName, this.libraryPath, this.jsElements);
24 24
25 /** 25 /**
26 * Returns the transformed source. 26 * Returns the transformed source.
27 */ 27 */
28 String generate() { 28 String generate() {
29 buffer.write( 29 buffer.write(
30 ''' 30 '''
31 library ${libraryName}__init_js__; 31 library ${libraryName}__init_js__;
32 32
33 import 'dart:js' as js; 33 import 'dart:js' as js;
(...skipping 26 matching lines...) Expand all
60 60
61 _generateLibraryExportCall(ExportedLibrary library) { 61 _generateLibraryExportCall(ExportedLibrary library) {
62 buffer.writeln(" _export_${library.getPath('_')}(lib);"); 62 buffer.writeln(" _export_${library.getPath('_')}(lib);");
63 } 63 }
64 64
65 _generateLibraryExportMethod(ExportedLibrary library) { 65 _generateLibraryExportMethod(ExportedLibrary library) {
66 buffer.writeln( 66 buffer.writeln(
67 ''' 67 '''
68 68
69 void _export_${library.getPath('_')}($JS_PREFIX.JsObject parent) { 69 void _export_${library.getPath('_')}($JS_PREFIX.JsObject parent) {
70 JsObject lib = parent['${library.name}']; 70 js.JsObject lib = parent['${library.name}'];
71 '''); 71 ''');
72 72
73 library.declarations.values.forEach(_generateDeclarationExportCall); 73 library.declarations.values.forEach(_generateDeclarationExportCall);
74 library.children.values.forEach(_generateLibraryExportCall); 74 library.children.values.forEach(_generateLibraryExportCall);
75 75
76 buffer.writeln('}'); 76 buffer.writeln('}');
77 77
78 library.children.values.forEach(_generateLibraryExportMethod); 78 library.children.values.forEach(_generateLibraryExportMethod);
79 library.declarations.values.forEach(_generateDeclarationExport); 79 library.declarations.values.forEach(_generateDeclarationExport);
80 } 80 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 } else if (e is ExportedField) { 114 } else if (e is ExportedField) {
115 _generateField(e); 115 _generateField(e);
116 } 116 }
117 } 117 }
118 118
119 void _generateConstructor(ExportedConstructor c) { 119 void _generateConstructor(ExportedConstructor c) {
120 var constructorName = c.name == '' ? '_new' : '_new_${c.name}'; 120 var constructorName = c.name == '' ? '_new' : '_new_${c.name}';
121 var dartParameters = _getDartParameters(c.parameters); 121 var dartParameters = _getDartParameters(c.parameters);
122 var jsParameters = _getJsParameters(c.parameters); 122 var jsParameters = _getJsParameters(c.parameters);
123 var namedPart = c.name == '' ? '' : '.${c.name}'; 123 var namedPart = c.name == '' ? '' : '.${c.name}';
124 buffer.writeln(" print('exporting constructor: ${constructorName}');");
125 buffer.writeln(" constructor['$constructorName'] = ($jsParameters) => " 124 buffer.writeln(" constructor['$constructorName'] = ($jsParameters) => "
126 "new ${c.parent.name}$namedPart($dartParameters);"); 125 "new ${c.parent.name}$namedPart($dartParameters);");
127 } 126 }
128 127
129 void _generateMethod(ExportedMethod c) { 128 void _generateMethod(ExportedMethod c) {
130 var dartParameters = _getDartParameters(c.parameters); 129 var dartParameters = _getDartParameters(c.parameters);
131 var jsParameters = _getJsParameters(c.parameters, withThis: true); 130 var jsParameters = _getJsParameters(c.parameters, withThis: true);
132 buffer.write( 131 buffer.write(
133 ''' 132 '''
134 133
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 var dartParameters = concat([ 190 var dartParameters = concat([
192 requiredParameters, 191 requiredParameters,
193 positionalParameters, 192 positionalParameters,
194 dartNamedParameters]) 193 dartNamedParameters])
195 .join(', '); 194 .join(', ');
196 195
197 return dartParameters; 196 return dartParameters;
198 } 197 }
199 198
200 } 199 }
OLDNEW
« no previous file with comments | « no previous file | lib/src/transformer/entry_point_transformer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698