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 // ../../lib/src/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 |