Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(765)

Unified Diff: packages/path/lib/path.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « packages/path/benchmark/benchmark.dart ('k') | packages/path/lib/src/characters.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: packages/path/lib/path.dart
diff --git a/packages/path/lib/path.dart b/packages/path/lib/path.dart
index 93fe67e4125020bfaaa446d4ec1217620c56e0e1..deb1b53bb652c30aa78b90b71a53df7405003771 100644
--- a/packages/path/lib/path.dart
+++ b/packages/path/lib/path.dart
@@ -44,8 +44,6 @@
///
/// This will join "directory" and "file.txt" using the Windows path separator,
/// even when the program is run on a POSIX machine.
-library path;
-
import 'src/context.dart';
import 'src/style.dart';
@@ -60,6 +58,9 @@ final Context posix = new Context(style: Style.posix);
final Context windows = new Context(style: Style.windows);
/// A default context for manipulating URLs.
+///
+/// URL path equality is undefined for paths that differ only in their
+/// percent-encoding or only in the case of their host segment.
final Context url = new Context(style: Style.url);
/// The system path context.
@@ -283,9 +284,27 @@ String joinAll(Iterable<String> parts) => context.joinAll(parts);
/// // -> ['http://dartlang.org', 'path', 'to', 'foo']
List<String> split(String path) => context.split(path);
+/// Canonicalizes [path].
+///
+/// This is guaranteed to return the same path for two different input paths
+/// if and only if both input paths point to the same location. Unlike
+/// [normalize], it returns absolute paths when possible and canonicalizes
+/// ASCII case on Windows.
+///
+/// Note that this does not resolve symlinks.
+///
+/// If you want a map that uses path keys, it's probably more efficient to
+/// pass [equals] and [hash] to [new HashMap] than it is to canonicalize every
+/// key.
+String canonicalize(String path) => context.canonicalize(path);
+
/// Normalizes [path], simplifying it by handling `..`, and `.`, and
/// removing redundant path separators whenever possible.
///
+/// Note that this is *not* guaranteed to return the same result for two
+/// equivalent input paths. For that, see [canonicalize]. Or, if you're using
+/// paths as map keys, pass [equals] and [hash] to [new HashMap].
+///
/// path.normalize('path/./to/..//file.text'); // -> 'path/file.txt'
String normalize(String path) => context.normalize(path);
@@ -326,6 +345,20 @@ String relative(String path, {String from}) =>
/// path.isWithin('/root/path', '/root/path') // -> false
bool isWithin(String parent, String child) => context.isWithin(parent, child);
+/// Returns `true` if [path1] points to the same location as [path2], and
+/// `false` otherwise.
+///
+/// The [hash] function returns a hash code that matches these equality
+/// semantics.
+bool equals(String path1, String path2) => context.equals(path1, path2);
+
+/// Returns a hash code for [path] such that, if [equals] returns `true` for two
+/// paths, their hash codes are the same.
+///
+/// Note that the same path may have different hash codes on different platforms
+/// or with different [current] directories.
+int hash(String path) => context.hash(path);
+
/// Removes a trailing extension from the last part of [path].
///
/// withoutExtension('path/to/foo.dart'); // -> 'path/to/foo'
« no previous file with comments | « packages/path/benchmark/benchmark.dart ('k') | packages/path/lib/src/characters.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698