OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 analyzer.source.embedder; | 5 library analyzer.source.embedder; |
6 | 6 |
7 import 'dart:collection' show HashMap; | 7 import 'dart:collection' show HashMap; |
8 import 'dart:core' hide Resource; | 8 import 'dart:core' hide Resource; |
9 | 9 |
10 import 'package:analyzer/file_system/file_system.dart'; | 10 import 'package:analyzer/file_system/file_system.dart'; |
(...skipping 25 matching lines...) Expand all Loading... |
36 | 36 |
37 final LibraryMap _librariesMap = new LibraryMap(); | 37 final LibraryMap _librariesMap = new LibraryMap(); |
38 | 38 |
39 final Map<String, String> _urlMappings = new HashMap<String, String>(); | 39 final Map<String, String> _urlMappings = new HashMap<String, String>(); |
40 | 40 |
41 /// Analysis options for this SDK. | 41 /// Analysis options for this SDK. |
42 AnalysisOptions analysisOptions; | 42 AnalysisOptions analysisOptions; |
43 | 43 |
44 EmbedderSdk([Map<Folder, YamlMap> embedderYamls]) { | 44 EmbedderSdk([Map<Folder, YamlMap> embedderYamls]) { |
45 embedderYamls?.forEach(_processEmbedderYaml); | 45 embedderYamls?.forEach(_processEmbedderYaml); |
46 _resolver = new EmbedderUriResolver(this); | 46 _resolver = new EmbedderUriResolver._forSdk(this); |
47 } | 47 } |
48 | 48 |
49 @override | 49 @override |
50 AnalysisContext get context { | 50 AnalysisContext get context { |
51 if (_analysisContext == null) { | 51 if (_analysisContext == null) { |
52 _analysisContext = new SdkAnalysisContext(analysisOptions); | 52 _analysisContext = new SdkAnalysisContext(analysisOptions); |
53 SourceFactory factory = new SourceFactory([_resolver]); | 53 SourceFactory factory = new SourceFactory([_resolver]); |
54 _analysisContext.sourceFactory = factory; | 54 _analysisContext.sourceFactory = factory; |
55 | 55 |
56 ChangeSet changeSet = new ChangeSet(); | 56 ChangeSet changeSet = new ChangeSet(); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 /// 'dart:io': '../../sdk/io/io.dart' | 204 /// 'dart:io': '../../sdk/io/io.dart' |
205 /// | 205 /// |
206 /// If a key doesn't begin with `dart:` it is ignored. | 206 /// If a key doesn't begin with `dart:` it is ignored. |
207 /// | 207 /// |
208 class EmbedderUriResolver implements DartUriResolver { | 208 class EmbedderUriResolver implements DartUriResolver { |
209 EmbedderSdk _embedderSdk; | 209 EmbedderSdk _embedderSdk; |
210 DartUriResolver _dartUriResolver; | 210 DartUriResolver _dartUriResolver; |
211 | 211 |
212 /// Construct a [EmbedderUriResolver] from a package map | 212 /// Construct a [EmbedderUriResolver] from a package map |
213 /// (see [PackageMapProvider]). | 213 /// (see [PackageMapProvider]). |
214 EmbedderUriResolver(this._embedderSdk) { | 214 EmbedderUriResolver(Map<Folder, YamlMap> embedderMap) : |
| 215 this._forSdk(new EmbedderSdk(embedderMap)); |
| 216 |
| 217 /// (Provisional API.) |
| 218 EmbedderUriResolver._forSdk(this._embedderSdk) { |
215 _dartUriResolver = new DartUriResolver(_embedderSdk); | 219 _dartUriResolver = new DartUriResolver(_embedderSdk); |
216 } | 220 } |
217 | 221 |
218 @override | 222 @override |
219 DartSdk get dartSdk => _embedderSdk; | 223 DartSdk get dartSdk => _embedderSdk; |
220 | 224 |
221 /// Number of embedded libraries. | 225 /// Number of embedded libraries. |
222 int get length => _embedderSdk?.urlMappings?.length ?? 0; | 226 int get length => _embedderSdk?.urlMappings?.length ?? 0; |
223 | 227 |
224 @override | 228 @override |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 String _readEmbedderYaml(Folder libDir) { | 300 String _readEmbedderYaml(Folder libDir) { |
297 File file = libDir.getChild(EMBEDDER_FILE_NAME); | 301 File file = libDir.getChild(EMBEDDER_FILE_NAME); |
298 try { | 302 try { |
299 return file.readAsStringSync(); | 303 return file.readAsStringSync(); |
300 } on FileSystemException { | 304 } on FileSystemException { |
301 // File can't be read. | 305 // File can't be read. |
302 return null; | 306 return null; |
303 } | 307 } |
304 } | 308 } |
305 } | 309 } |
OLD | NEW |