Chromium Code Reviews| OLD | NEW |
|---|---|
| (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 }; | |
| OLD | NEW |