@@ -12,9 +12,7 @@ import 'package:analyzer/dart/element/element.dart';
1212import 'package:analyzer/file_system/file_system.dart' as fileSystem;
1313import 'package:analyzer/file_system/physical_file_system.dart' ;
1414import 'package:analyzer/source/embedder.dart' ;
15- import 'package:analyzer/source/package_map_provider.dart' ;
1615import 'package:analyzer/source/package_map_resolver.dart' ;
17- import 'package:analyzer/source/pub_package_map_provider.dart' ;
1816import 'package:analyzer/source/sdk_ext.dart' ;
1917import 'package:analyzer/src/generated/engine.dart' ;
2018import 'package:analyzer/src/generated/error.dart' ;
@@ -23,7 +21,8 @@ import 'package:analyzer/src/generated/sdk.dart';
2321import 'package:analyzer/src/generated/sdk_io.dart' ;
2422import 'package:analyzer/src/generated/source.dart' ;
2523import 'package:analyzer/src/generated/source_io.dart' ;
26- import 'package:path/path.dart' as p;
24+ import 'package:package_config/discovery.dart' as package_config;
25+ import 'package:path/path.dart' as path;
2726
2827import 'src/config.dart' ;
2928import 'src/generator.dart' ;
@@ -42,7 +41,7 @@ const String name = 'dartdoc';
4241// Update when pubspec version changes.
4342const String version = '0.9.7+1' ;
4443
45- final String defaultOutDir = p .join ('doc' , 'api' );
44+ final String defaultOutDir = path .join ('doc' , 'api' );
4645
4746/// Initialize and setup the generators.
4847Future <List <Generator >> initGenerators (String url, List <String > headerFilePaths,
@@ -156,21 +155,17 @@ class DartDoc {
156155 DartSdk sdk = new DirectoryBasedDartSdk (new JavaFile (sdkDir.path));
157156 List <UriResolver > resolvers = [];
158157
159- fileSystem.Resource cwd =
158+ fileSystem.Folder cwd =
160159 PhysicalResourceProvider .INSTANCE .getResource (rootDir.path);
161- PubPackageMapProvider pubPackageMapProvider =
162- new PubPackageMapProvider (PhysicalResourceProvider .INSTANCE , sdk);
163- PackageMapInfo packageMapInfo =
164- pubPackageMapProvider.computePackageMap (cwd);
165- Map <String , List <fileSystem.Folder >> packageMap = packageMapInfo.packageMap;
160+ Map <String , List <fileSystem.Folder >> packageMap = _calculatePackageMap (cwd);
166161 EmbedderUriResolver embedderUriResolver;
167162 if (packageMap != null ) {
168163 resolvers.add (new SdkExtUriResolver (packageMap));
169164 resolvers.add (new PackageMapUriResolver (
170165 PhysicalResourceProvider .INSTANCE , packageMap));
171166
172- embedderUriResolver = new EmbedderUriResolver (
173- new EmbedderYamlLocator (packageMap). embedderYamls);
167+ var embedderYamls = new EmbedderYamlLocator (packageMap).embedderYamls;
168+ embedderUriResolver = new EmbedderUriResolver ( embedderYamls);
174169 if (embedderUriResolver.length == 0 ) {
175170 // The embedder uri resolver has no mappings. Use the default Dart SDK
176171 // uri resolver.
@@ -183,7 +178,8 @@ class DartDoc {
183178 } else {
184179 resolvers.add (new DartUriResolver (sdk));
185180 }
186- resolvers.add (new FileUriResolver ());
181+ resolvers.add (
182+ new fileSystem.ResourceUriResolver (PhysicalResourceProvider .INSTANCE ));
187183
188184 SourceFactory sourceFactory = new SourceFactory (resolvers);
189185
@@ -262,7 +258,7 @@ class DartDoc {
262258 new _Error (error, info.lineInfo, packageMeta.dir.path));
263259 })
264260 .where ((_Error error) => error.isError)
265- .toList () as List < _Error > ..sort ();
261+ .toList ()..sort ();
266262
267263 double seconds = _stopwatch.elapsedMilliseconds / 1000.0 ;
268264 print ("Parsed ${libraries .length } "
@@ -280,6 +276,23 @@ class DartDoc {
280276 }
281277}
282278
279+ Map <String , List <fileSystem.Folder >> _calculatePackageMap (
280+ fileSystem.Folder dir) {
281+ Map <String , List <fileSystem.Folder >> map = new Map ();
282+ var info = package_config.findPackagesFromFile (dir.toUri ());
283+
284+ for (String name in info.packages) {
285+ Uri uri = info.asMap ()[name];
286+ fileSystem.Resource resource =
287+ PhysicalResourceProvider .INSTANCE .getResource (uri.toFilePath ());
288+ if (resource is fileSystem.Folder ) {
289+ map[name] = [resource];
290+ }
291+ }
292+
293+ return map;
294+ }
295+
283296/// This class is returned if dartdoc fails in an expected way (for instance, if
284297/// there is an analysis error in the library).
285298class DartDocFailure {
0 commit comments