Index: lib/src/normalize_path.dart |
diff --git a/lib/src/normalize_path.dart b/lib/src/normalize_path.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bac6b8b5ba02bf0c082f553cd988f935874bffde |
--- /dev/null |
+++ b/lib/src/normalize_path.dart |
@@ -0,0 +1,28 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+library web_components.src.normalizePath; |
+ |
+import 'package:path/path.dart' as path; |
+ |
+String normalizeHtmlImportPath( |
+ String filePath, String dartFilePackage, String dartFilePath) { |
+ // If they already supplied a packages path, just return that. |
+ if (filePath.startsWith('package:')) { |
+ return filePath.replaceFirst('package:', 'packages/'); |
+ } |
+ |
+ var dartFileDir = path.url.dirname(dartFilePath); |
+ var segments = path.url.split(dartFileDir); |
+ // The dartFileDir without the leading dir (web, lib, test, etc). |
+ var dartFileSubDir = path.url.joinAll(segments.getRange(1, segments.length)); |
+ |
+ // Relative paths have no package supplied. |
+ if (dartFilePackage == null) { |
+ return path.url.normalize(path.url.join(dartFileSubDir, filePath)); |
+ } |
+ |
+ // Only option left is a packages/ path. |
+ return path.url.normalize( |
+ path.url.join('packages/', dartFilePackage, dartFileSubDir, filePath)); |
+} |