Index: third_party/pkg/angular/lib/tools/source_crawler_impl.dart |
diff --git a/third_party/pkg/angular/lib/tools/source_crawler_impl.dart b/third_party/pkg/angular/lib/tools/source_crawler_impl.dart |
deleted file mode 100644 |
index b32940c0d743d919d73a398a86b89f7d6f485660..0000000000000000000000000000000000000000 |
--- a/third_party/pkg/angular/lib/tools/source_crawler_impl.dart |
+++ /dev/null |
@@ -1,98 +0,0 @@ |
-library angular.source_crawler_impl; |
- |
-import 'dart:io'; |
-import 'package:analyzer/analyzer.dart'; |
-import 'package:angular/tools/source_crawler.dart'; |
- |
-const String PACKAGE_PREFIX = 'package:'; |
- |
-/** |
- * Dart source file crawler. As it crawls Dart source, it calls |
- * [CompilationUnitVisitor] on each file. |
- */ |
-class SourceCrawlerImpl implements SourceCrawler { |
- final List<String> packageRoots; |
- |
- SourceCrawlerImpl(this.packageRoots); |
- |
- void crawl(String entryPoint, CompilationUnitVisitor visitor) { |
- List<String> visited = <String>[]; |
- List<String> toVisit = <String>[]; |
- if (entryPoint.startsWith(PACKAGE_PREFIX)) { |
- var path = resolvePackagePath(entryPoint); |
- if (path == null) { |
- throw 'Unable to resolve $entryPoint'; |
- } |
- toVisit.add(path); |
- } else { |
- toVisit.add(entryPoint); |
- } |
- |
- while (toVisit.isNotEmpty) { |
- var currentFile = toVisit.removeAt(0); |
- visited.add(currentFile); |
- var file = new File(currentFile); |
- // Possible source file doesn't exist. For example if it is generated. |
- if (!file.existsSync()) continue; |
- var currentDir = file.parent.path; |
- CompilationUnit cu = parseDartFile(currentFile); |
- processImports(cu, currentDir, currentFile, visited, toVisit); |
- visitor(cu); |
- } |
- } |
- |
- void processImports(CompilationUnit cu, String currentDir, |
- String currentFile, List<String> visited, |
- List<String> toVisit) { |
- cu.directives.forEach((Directive directive) { |
- if (directive is ImportDirective || directive is PartDirective) { |
- UriBasedDirective import = directive; |
- String canonicalFile = canonicalizeImportPath( |
- currentDir, currentFile, import.uri.stringValue); |
- if (canonicalFile == null) return; |
- if (!visited.contains(canonicalFile) && |
- !toVisit.contains(canonicalFile)) { |
- toVisit.add(canonicalFile); |
- } |
- } |
- }); |
- } |
- |
- String canonicalizeImportPath(String currentDir, |
- String currentFile, |
- String uri) { |
- // ignore core libraries |
- if (uri.startsWith('dart:')) { |
- return null; |
- } |
- if (uri.startsWith(PACKAGE_PREFIX)) { |
- return resolvePackagePath(uri); |
- } |
- // relative import. |
- if (uri.startsWith('../')) { |
- while (uri.startsWith('../')) { |
- uri = uri.substring('../'.length); |
- currentDir = currentDir.substring(0, currentDir.lastIndexOf('/')); |
- } |
- } |
- return '$currentDir/$uri'; |
- } |
- |
- String resolvePackagePath(String uri) { |
- for (String packageRoot in packageRoots) { |
- var resolvedPath = _packageUriResolver(uri, packageRoot); |
- if (new File(resolvedPath).existsSync()) { |
- return resolvedPath; |
- } |
- } |
- return null; |
- } |
- |
- String _packageUriResolver(String uri, String packageRoot) { |
- var packagePath = uri.substring(PACKAGE_PREFIX.length); |
- if (!packageRoot.endsWith('/')) { |
- packageRoot = packageRoot + '/'; |
- } |
- return packageRoot + packagePath; |
- } |
-} |