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

Side by Side Diff: pkg/fasta/lib/src/translate_uri.dart

Issue 2634453004: Fasta infrastructure. (Closed)
Patch Set: Created 3 years, 11 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
« pkg/fasta/lib/src/run.dart ('K') | « pkg/fasta/lib/src/ticker.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2016, 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 library fasta.translate_uri;
6
7 import 'dart:async' show
8 Future;
9
10 import 'dart:io' show
11 File;
12
13 import 'package:package_config/packages_file.dart' as packages_file
14 show parse;
15
16 class TranslateUri {
17 final Map<String, Uri> packages;
18
19 TranslateUri(this.packages);
20
21 Uri translate(Uri uri) {
22 if (uri.scheme == "dart") return translateDartUri(uri);
23 if (uri.scheme == "package") return translatePackageUri(uri);
24 return null;
25 }
26
27 Uri translateDartUri(Uri uri) {
28 String path = uriTranslation["$uri"];
29 return path == null ? null : Uri.base.resolve(path);
30 }
31
32 Uri translatePackageUri(Uri uri) {
33 int index = uri.path.indexOf("/");
34 if (index == -1) return null;
35 String name = uri.path.substring(0, index);
36 String path = uri.path.substring(index + 1);
37 Uri root = packages[name];
38 if (root == null) return null;
39 return root.resolve(path);
40 }
41
42 static Future<TranslateUri> parse([Uri uri]) async {
43 uri ??= Uri.base.resolve(".packages");
44 File file = new File.fromUri(uri);
45 List<int> bytes = await file.readAsBytes();
46 Map<String, Uri> packages = packages_file.parse(bytes, uri);
47 return new TranslateUri(packages);
48 }
49 }
50
51 // TODO(ahe): This is a quick hack to avoid hooking up SDK library resolution.
52 const Map<String, String> uriTranslation = const <String, String>{
53 "dart:async": "dart-sdk/sdk/lib/async/async.dart",
54 "dart:_chrome": "dart-sdk/sdk/lib/_chrome/dart2js/chrome_dart2js.dart",
55 "dart:collection": "dart-sdk/sdk/lib/collection/collection.dart",
56 "dart:convert": "dart-sdk/sdk/lib/convert/convert.dart",
57 "dart:core": "dart-sdk/sdk/lib/core/core.dart",
58 "dart:developer": "dart-sdk/sdk/lib/developer/developer.dart",
59 "dart:html": "dart-sdk/sdk/lib/html/dart2js/html_dart2js.dart",
60 "dart:html_common": "dart-sdk/sdk/lib/html/html_common/html_common_dart2js.d art",
Johnni Winther 2017/01/16 09:47:46 Long lines
ahe 2017/01/16 12:07:04 Removed, not used anymore.
61 "dart:indexed_db": "dart-sdk/sdk/lib/indexed_db/dart2js/indexed_db_dart2js.d art",
62 "dart:io": "dart-sdk/sdk/lib/io/io.dart",
63 "dart:isolate": "dart-sdk/sdk/lib/isolate/isolate.dart",
64 "dart:js": "dart-sdk/sdk/lib/js/dart2js/js_dart2js.dart",
65 "dart:js_util": "dart-sdk/sdk/lib/js_util/dart2js/js_util_dart2js.dart",
66 "dart:math": "dart-sdk/sdk/lib/math/math.dart",
67 "dart:mirrors": "dart-sdk/sdk/lib/mirrors/mirrors.dart",
68 "dart:typed_data": "dart-sdk/sdk/lib/typed_data/typed_data.dart",
69 "dart:_native_typed_data": "dart-sdk/sdk/lib/_internal/js_runtime/lib/native _typed_data.dart",
70 "dart:svg": "dart-sdk/sdk/lib/svg/dart2js/svg_dart2js.dart",
71 "dart:web_audio": "dart-sdk/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart ",
72 "dart:web_gl": "dart-sdk/sdk/lib/web_gl/dart2js/web_gl_dart2js.dart",
73 "dart:web_sql": "dart-sdk/sdk/lib/web_sql/dart2js/web_sql_dart2js.dart",
74 "dart:_internal": "dart-sdk/sdk/lib/internal/internal.dart",
75 "dart:_js_helper": "dart-sdk/sdk/lib/_internal/js_runtime/lib/js_helper.dart ",
76 "dart:_interceptors": "dart-sdk/sdk/lib/_internal/js_runtime/lib/interceptor s.dart",
77 "dart:_foreign_helper": "dart-sdk/sdk/lib/_internal/js_runtime/lib/foreign_h elper.dart",
78 "dart:_isolate_helper": "dart-sdk/sdk/lib/_internal/js_runtime/lib/isolate_h elper.dart",
79 "dart:_js_mirrors": "dart-sdk/sdk/lib/_internal/js_runtime/lib/js_mirrors.da rt",
80 "dart:_js_names": "dart-sdk/sdk/lib/_internal/js_runtime/lib/js_names.dart",
81 "dart:_js_primitives": "dart-sdk/sdk/lib/_internal/js_runtime/lib/js_primiti ves.dart",
82 "dart:_js_embedded_names": "dart-sdk/sdk/lib/_internal/js_runtime/lib/shared /embedded_names.dart",
83 "dart:_async_await_error_codes": "dart-sdk/sdk/lib/_internal/js_runtime/lib/ shared/async_await_error_codes.dart",
84 "dart:_metadata": "dart-sdk/sdk/lib/html/html_common/metadata.dart",
85 };
OLDNEW
« pkg/fasta/lib/src/run.dart ('K') | « pkg/fasta/lib/src/ticker.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698