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

Side by Side Diff: sdk/lib/_internal/pub/test/serve/utils.dart

Issue 344673002: Load instances of the same transformer from the same isolate. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS d.file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS d.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 pub_tests; 5 library pub_tests;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:convert'; 8 import 'dart:convert';
9 import 'dart:io'; 9 import 'dart:io';
10 10
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 /// rewrites Dart files. 91 /// rewrites Dart files.
92 /// 92 ///
93 /// The transformer defines a constant named TOKEN whose value is [id]. When the 93 /// The transformer defines a constant named TOKEN whose value is [id]. When the
94 /// transformer transforms another Dart file, it will look for a "TOKEN" 94 /// transformer transforms another Dart file, it will look for a "TOKEN"
95 /// constant definition there and modify it to include *this* transformer's 95 /// constant definition there and modify it to include *this* transformer's
96 /// TOKEN value as well. 96 /// TOKEN value as well.
97 /// 97 ///
98 /// If [import] is passed, it should be the name of a package that defines its 98 /// If [import] is passed, it should be the name of a package that defines its
99 /// own TOKEN constant. The primary library of that package will be imported 99 /// own TOKEN constant. The primary library of that package will be imported
100 /// here and its TOKEN value will be added to this library's. 100 /// here and its TOKEN value will be added to this library's.
101 ///
102 /// This transformer takes one configuration field: "addition". This is
103 /// concatenated to its TOKEN value before adding it to the output library.
101 String dartTransformer(String id, {String import}) { 104 String dartTransformer(String id, {String import}) {
102 if (import != null) { 105 if (import != null) {
103 id = '$id imports \${$import.TOKEN}'; 106 id = '$id imports \${$import.TOKEN}';
104 import = 'import "package:$import/$import.dart" as $import;'; 107 import = 'import "package:$import/$import.dart" as $import;';
105 } else { 108 } else {
106 import = ''; 109 import = '';
107 } 110 }
108 111
109 return """ 112 return """
110 import 'dart:async'; 113 import 'dart:async';
111 114
112 import 'package:barback/barback.dart'; 115 import 'package:barback/barback.dart';
113 $import 116 $import
114 117
118 import 'dart:io';
119
115 const TOKEN = "$id"; 120 const TOKEN = "$id";
116 121
117 final _tokenRegExp = new RegExp(r'^const TOKEN = "(.*?)";\$', multiLine: true); 122 final _tokenRegExp = new RegExp(r'^const TOKEN = "(.*?)";\$', multiLine: true);
118 123
119 class DartTransformer extends Transformer { 124 class DartTransformer extends Transformer {
120 DartTransformer.asPlugin(); 125 final BarbackSettings _settings;
126
127 DartTransformer.asPlugin(this._settings);
121 128
122 String get allowedExtensions => '.dart'; 129 String get allowedExtensions => '.dart';
123 130
124 Future apply(Transform transform) { 131 Future apply(Transform transform) {
125 return transform.primaryInput.readAsString().then((contents) { 132 return transform.primaryInput.readAsString().then((contents) {
126 transform.addOutput(new Asset.fromString(transform.primaryInput.id, 133 transform.addOutput(new Asset.fromString(transform.primaryInput.id,
127 contents.replaceAllMapped(_tokenRegExp, (match) { 134 contents.replaceAllMapped(_tokenRegExp, (match) {
128 return 'const TOKEN = "(\${match[1]}, \$TOKEN)";'; 135 var token = TOKEN;
136 var addition = _settings.configuration["addition"];
137 if (addition != null) token += addition;
138 return 'const TOKEN = "(\${match[1]}, \$token)";';
129 }))); 139 })));
130 }); 140 });
131 } 141 }
132 } 142 }
133 """; 143 """;
134 } 144 }
135 145
136 /// Schedules starting the `pub serve` process. 146 /// Schedules starting the `pub serve` process.
137 /// 147 ///
138 /// Unlike [pubServe], this doesn't determine the port number of the server, and 148 /// Unlike [pubServe], this doesn't determine the port number of the server, and
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 /// included. Unlike [getServerUrl], this should only be called after the ports 487 /// included. Unlike [getServerUrl], this should only be called after the ports
478 /// are known. 488 /// are known.
479 String _getServerUrlSync([String root, String path]) { 489 String _getServerUrlSync([String root, String path]) {
480 if (root == null) root = 'web'; 490 if (root == null) root = 'web';
481 expect(_ports, contains(root)); 491 expect(_ports, contains(root));
482 var url = "http://localhost:${_ports[root]}"; 492 var url = "http://localhost:${_ports[root]}";
483 if (path != null) url = "$url/$path"; 493 if (path != null) url = "$url/$path";
484 return url; 494 return url;
485 } 495 }
486 496
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698