OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 source_file_provider; | 5 library source_file_provider; |
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 import 'dart:math' as math; | 10 import 'dart:math' as math; |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 | 231 |
232 // TODO(johnniwinther): Remove this when no longer needed for the old compiler | 232 // TODO(johnniwinther): Remove this when no longer needed for the old compiler |
233 // API. | 233 // API. |
234 void call(Uri uri, int begin, int end, String message, api.Diagnostic kind) { | 234 void call(Uri uri, int begin, int end, String message, api.Diagnostic kind) { |
235 return report(null, uri, begin, end, message, kind); | 235 return report(null, uri, begin, end, message, kind); |
236 } | 236 } |
237 } | 237 } |
238 | 238 |
239 typedef void MessageCallback(String message); | 239 typedef void MessageCallback(String message); |
240 | 240 |
241 class RandomAccessFileOutputProvider { | 241 class RandomAccessFileOutputProvider implements CompilerOutput { |
242 final Uri out; | 242 final Uri out; |
243 final Uri sourceMapOut; | 243 final Uri sourceMapOut; |
244 final MessageCallback onInfo; | 244 final MessageCallback onInfo; |
245 final MessageCallback onFailure; | 245 final MessageCallback onFailure; |
246 | 246 |
247 int totalCharactersWritten = 0; | 247 int totalCharactersWritten = 0; |
248 List<String> allOutputFiles = new List<String>(); | 248 List<String> allOutputFiles = new List<String>(); |
249 | 249 |
250 RandomAccessFileOutputProvider(this.out, this.sourceMapOut, | 250 RandomAccessFileOutputProvider(this.out, this.sourceMapOut, |
251 {this.onInfo, this.onFailure}); | 251 {this.onInfo, this.onFailure}); |
252 | 252 |
253 static Uri computePrecompiledUri(Uri out) { | 253 static Uri computePrecompiledUri(Uri out) { |
254 String extension = 'precompiled.js'; | 254 String extension = 'precompiled.js'; |
255 String outPath = out.path; | 255 String outPath = out.path; |
256 if (outPath.endsWith('.js')) { | 256 if (outPath.endsWith('.js')) { |
257 outPath = outPath.substring(0, outPath.length - 3); | 257 outPath = outPath.substring(0, outPath.length - 3); |
258 return out.resolve('$outPath.$extension'); | 258 return out.resolve('$outPath.$extension'); |
259 } else { | 259 } else { |
260 return out.resolve(extension); | 260 return out.resolve(extension); |
261 } | 261 } |
262 } | 262 } |
263 | 263 |
264 EventSink<String> call(String name, String extension) { | 264 EventSink<String> call(String name, String extension) { |
| 265 return createEventSink(name, extension); |
| 266 } |
| 267 |
| 268 EventSink<String> createEventSink(String name, String extension) { |
265 Uri uri; | 269 Uri uri; |
266 bool isPrimaryOutput = false; | 270 bool isPrimaryOutput = false; |
267 // TODO (johnniwinther, sigurdm): Make a better interface for | 271 // TODO (johnniwinther, sigurdm): Make a better interface for |
268 // output-providers. | 272 // output-providers. |
269 if (extension == "deferred_map") { | 273 if (extension == "deferred_map") { |
270 uri = out.resolve(name); | 274 uri = out.resolve(name); |
271 } else if (name == '') { | 275 } else if (name == '') { |
272 if (extension == 'js' || extension == 'dart') { | 276 if (extension == 'js' || extension == 'dart') { |
273 isPrimaryOutput = true; | 277 isPrimaryOutput = true; |
274 uri = out; | 278 uri = out; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
331 var onAdd, onClose; | 335 var onAdd, onClose; |
332 | 336 |
333 EventSinkWrapper(this.onAdd, this.onClose); | 337 EventSinkWrapper(this.onAdd, this.onClose); |
334 | 338 |
335 void add(String data) => onAdd(data); | 339 void add(String data) => onAdd(data); |
336 | 340 |
337 void addError(error, [StackTrace stackTrace]) => throw error; | 341 void addError(error, [StackTrace stackTrace]) => throw error; |
338 | 342 |
339 void close() => onClose(); | 343 void close() => onClose(); |
340 } | 344 } |
OLD | NEW |