@@ -12,18 +12,17 @@ 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' ;
17+ import 'package:analyzer/src/dart/sdk/sdk.dart' ;
1918import 'package:analyzer/src/generated/engine.dart' ;
2019import 'package:analyzer/src/generated/error.dart' ;
2120import 'package:analyzer/src/generated/java_io.dart' ;
2221import 'package:analyzer/src/generated/sdk.dart' ;
23- import '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,
@@ -153,24 +152,21 @@ class DartDoc {
153152 List <LibraryElement > _parseLibraries (
154153 List <String > files, List <String > includeExternals) {
155154 List <LibraryElement > libraries = [];
156- DartSdk sdk = new DirectoryBasedDartSdk (new JavaFile (sdkDir.path));
155+ DartSdk sdk = new FolderBasedDartSdk (PhysicalResourceProvider .INSTANCE ,
156+ PhysicalResourceProvider .INSTANCE .getFolder (sdkDir.path));
157157 List <UriResolver > resolvers = [];
158158
159- fileSystem.Resource cwd =
159+ fileSystem.Folder cwd =
160160 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;
161+ Map <String , List <fileSystem.Folder >> packageMap = _calculatePackageMap (cwd);
166162 EmbedderUriResolver embedderUriResolver;
167163 if (packageMap != null ) {
168164 resolvers.add (new SdkExtUriResolver (packageMap));
169165 resolvers.add (new PackageMapUriResolver (
170166 PhysicalResourceProvider .INSTANCE , packageMap));
171167
172- embedderUriResolver = new EmbedderUriResolver (
173- new EmbedderYamlLocator (packageMap). embedderYamls);
168+ var embedderYamls = new EmbedderYamlLocator (packageMap).embedderYamls;
169+ embedderUriResolver = new EmbedderUriResolver ( embedderYamls);
174170 if (embedderUriResolver.length == 0 ) {
175171 // The embedder uri resolver has no mappings. Use the default Dart SDK
176172 // uri resolver.
@@ -183,7 +179,8 @@ class DartDoc {
183179 } else {
184180 resolvers.add (new DartUriResolver (sdk));
185181 }
186- resolvers.add (new FileUriResolver ());
182+ resolvers.add (
183+ new fileSystem.ResourceUriResolver (PhysicalResourceProvider .INSTANCE ));
187184
188185 SourceFactory sourceFactory = new SourceFactory (resolvers);
189186
@@ -262,7 +259,7 @@ class DartDoc {
262259 new _Error (error, info.lineInfo, packageMeta.dir.path));
263260 })
264261 .where ((_Error error) => error.isError)
265- .toList () as List < _Error > ..sort ();
262+ .toList ()..sort ();
266263
267264 double seconds = _stopwatch.elapsedMilliseconds / 1000.0 ;
268265 print ("Parsed ${libraries .length } "
@@ -280,6 +277,23 @@ class DartDoc {
280277 }
281278}
282279
280+ Map <String , List <fileSystem.Folder >> _calculatePackageMap (
281+ fileSystem.Folder dir) {
282+ Map <String , List <fileSystem.Folder >> map = new Map ();
283+ var info = package_config.findPackagesFromFile (dir.toUri ());
284+
285+ for (String name in info.packages) {
286+ Uri uri = info.asMap ()[name];
287+ fileSystem.Resource resource =
288+ PhysicalResourceProvider .INSTANCE .getResource (uri.toFilePath ());
289+ if (resource is fileSystem.Folder ) {
290+ map[name] = [resource];
291+ }
292+ }
293+
294+ return map;
295+ }
296+
283297/// This class is returned if dartdoc fails in an expected way (for instance, if
284298/// there is an analysis error in the library).
285299class DartDocFailure {
0 commit comments