| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 // This sample demonstrates how to run the compiler in a loop reading | |
| 6 // all sources from memory, instead of using dart:io. | |
| 7 library sample.compile_loop; | |
| 8 | |
| 9 import 'dart:async'; | |
| 10 | |
| 11 import '../../compiler.dart' as compiler; | |
| 12 | |
| 13 // If this file is missing, generate it using ../jsonify/jsonify.dart. | |
| 14 import 'sdk.dart'; | |
| 15 | |
| 16 Future<String> compile(source) { | |
| 17 Future<String> inputProvider(Uri uri) { | |
| 18 if (uri.scheme == 'sdk') { | |
| 19 var value = SDK_SOURCES['$uri']; | |
| 20 if (value == null) { | |
| 21 // TODO(ahe): Use new Future.error. | |
| 22 throw new Exception('Error: Cannot read: $uri'); | |
| 23 } | |
| 24 return new Future.value(value); | |
| 25 } else if ('$uri' == 'memory:/main.dart') { | |
| 26 return new Future.value(source); | |
| 27 } | |
| 28 // TODO(ahe): Use new Future.error. | |
| 29 throw new Exception('Error: Cannot read: $uri'); | |
| 30 } | |
| 31 void handler(Uri uri, int begin, int end, | |
| 32 String message, compiler.Diagnostic kind) { | |
| 33 // TODO(ahe): Remove dart:io import from | |
| 34 // ../../implementation/source_file_provider.dart and use | |
| 35 // FormattingDiagnosticHandler instead. | |
| 36 print({ 'uri': '$uri', | |
| 37 'begin': begin, | |
| 38 'end': end, | |
| 39 'message': message, | |
| 40 'kind': kind.name }); | |
| 41 if (kind == compiler.Diagnostic.ERROR) { | |
| 42 throw new Exception('Unexpected error occurred.'); | |
| 43 } | |
| 44 } | |
| 45 return compiler.compile( | |
| 46 Uri.parse('memory:/main.dart'), | |
| 47 Uri.parse('sdk:/sdk/'), | |
| 48 null, | |
| 49 inputProvider, | |
| 50 handler, | |
| 51 []); | |
| 52 } | |
| 53 | |
| 54 int iterations = 10; | |
| 55 | |
| 56 main() { | |
| 57 compile(EXAMPLE_HELLO_HTML).then((jsResult) { | |
| 58 if (jsResult == null) throw 'Compilation failed'; | |
| 59 if (--iterations > 0) main(); | |
| 60 }); | |
| 61 } | |
| 62 | |
| 63 const String EXAMPLE_HELLO_HTML = r''' | |
| 64 // Go ahead and modify this example. | |
| 65 | |
| 66 import "dart:html"; | |
| 67 | |
| 68 var greeting = "Hello, World!"; | |
| 69 | |
| 70 // Displays a greeting. | |
| 71 void main() { | |
| 72 // This example uses HTML to display the greeting and it will appear | |
| 73 // in a nested HTML frame (an iframe). | |
| 74 document.body.append(new HeadingElement.h1()..appendText(greeting)); | |
| 75 } | |
| 76 '''; | |
| OLD | NEW |