| Index: pkg/path/lib/path.dart
|
| diff --git a/pkg/path/lib/path.dart b/pkg/path/lib/path.dart
|
| index b9a4175b5f6695337f5599fc6680742613748f6e..be6e95a7b66f98c19545e52c0e96d0b014f6c44c 100644
|
| --- a/pkg/path/lib/path.dart
|
| +++ b/pkg/path/lib/path.dart
|
| @@ -62,14 +62,17 @@ final windows = new Context(style: Style.windows);
|
| /// A default context for manipulating URLs.
|
| final url = new Context(style: Style.url);
|
|
|
| -/// An internal context for the current OS so we can provide a straight
|
| -/// functional interface and not require users to create one.
|
| -final Context _context = createInternal();
|
| +/// The system path context.
|
| +///
|
| +/// This differs from a context created with [new Context] in that its
|
| +/// [Context.current] is always the current working directory, rather than being
|
| +/// set once when the context is created.
|
| +final Context context = createInternal();
|
|
|
| /// Returns the [Style] of the current context.
|
| ///
|
| /// This is the style that all top-level path functions will use.
|
| -Style get style => _context.style;
|
| +Style get style => context.style;
|
|
|
| /// Gets the path to the current working directory.
|
| ///
|
| @@ -89,7 +92,7 @@ String get current {
|
|
|
| /// Gets the path separator for the current platform. This is `\` on Windows
|
| /// and `/` on other platforms (including the browser).
|
| -String get separator => _context.separator;
|
| +String get separator => context.separator;
|
|
|
| /// Creates a new path by appending the given path parts to [current].
|
| /// Equivalent to [join()] with [current] as the first argument. Example:
|
| @@ -97,7 +100,7 @@ String get separator => _context.separator;
|
| /// path.absolute('path', 'to/foo'); // -> '/your/current/dir/path/to/foo'
|
| String absolute(String part1, [String part2, String part3, String part4,
|
| String part5, String part6, String part7]) =>
|
| - _context.absolute(part1, part2, part3, part4, part5, part6, part7);
|
| + context.absolute(part1, part2, part3, part4, part5, part6, part7);
|
|
|
| /// Gets the part of [path] after the last separator.
|
| ///
|
| @@ -107,7 +110,7 @@ String absolute(String part1, [String part2, String part3, String part4,
|
| /// Trailing separators are ignored.
|
| ///
|
| /// path.basename('path/to/'); // -> 'to'
|
| -String basename(String path) => _context.basename(path);
|
| +String basename(String path) => context.basename(path);
|
|
|
| /// Gets the part of [path] after the last separator, and without any trailing
|
| /// file extension.
|
| @@ -118,7 +121,7 @@ String basename(String path) => _context.basename(path);
|
| ///
|
| /// path.basenameWithoutExtension('path/to/foo.dart/'); // -> 'foo'
|
| String basenameWithoutExtension(String path) =>
|
| - _context.basenameWithoutExtension(path);
|
| + context.basenameWithoutExtension(path);
|
|
|
| /// Gets the part of [path] before the last separator.
|
| ///
|
| @@ -139,7 +142,7 @@ String basenameWithoutExtension(String path) =>
|
| ///
|
| /// path.dirname('foo'); // -> '.'
|
| /// path.dirname(''); // -> '.'
|
| -String dirname(String path) => _context.dirname(path);
|
| +String dirname(String path) => context.dirname(path);
|
|
|
| /// Gets the file extension of [path]: the portion of [basename] from the last
|
| /// `.` to the end (including the `.` itself).
|
| @@ -154,7 +157,7 @@ String dirname(String path) => _context.dirname(path);
|
| ///
|
| /// path.extension('~/.bashrc'); // -> ''
|
| /// path.extension('~/.notes.txt'); // -> '.txt'
|
| -String extension(String path) => _context.extension(path);
|
| +String extension(String path) => context.extension(path);
|
|
|
| // TODO(nweiz): add a UNC example for Windows once issue 7323 is fixed.
|
| /// Returns the root of [path], if it's absolute, or the empty string if it's
|
| @@ -172,7 +175,7 @@ String extension(String path) => _context.extension(path);
|
| /// path.rootPrefix('path/to/foo'); // -> ''
|
| /// path.rootPrefix('http://dartlang.org/path/to/foo');
|
| /// // -> 'http://dartlang.org'
|
| -String rootPrefix(String path) => _context.rootPrefix(path);
|
| +String rootPrefix(String path) => context.rootPrefix(path);
|
|
|
| /// Returns `true` if [path] is an absolute path and `false` if it is a
|
| /// relative path.
|
| @@ -186,13 +189,13 @@ String rootPrefix(String path) => _context.rootPrefix(path);
|
| /// relative to the root of the current URL. Since root-relative paths are still
|
| /// absolute in every other sense, [isAbsolute] will return true for them. They
|
| /// can be detected using [isRootRelative].
|
| -bool isAbsolute(String path) => _context.isAbsolute(path);
|
| +bool isAbsolute(String path) => context.isAbsolute(path);
|
|
|
| /// Returns `true` if [path] is a relative path and `false` if it is absolute.
|
| /// On POSIX systems, absolute paths start with a `/` (forward slash). On
|
| /// Windows, an absolute path starts with `\\`, or a drive letter followed by
|
| /// `:/` or `:\`.
|
| -bool isRelative(String path) => _context.isRelative(path);
|
| +bool isRelative(String path) => context.isRelative(path);
|
|
|
| /// Returns `true` if [path] is a root-relative path and `false` if it's not.
|
| ///
|
| @@ -202,7 +205,7 @@ bool isRelative(String path) => _context.isRelative(path);
|
| /// can be detected using [isRootRelative].
|
| ///
|
| /// No POSIX and Windows paths are root-relative.
|
| -bool isRootRelative(String path) => _context.isRootRelative(path);
|
| +bool isRootRelative(String path) => context.isRootRelative(path);
|
|
|
| /// Joins the given path parts into a single path using the current platform's
|
| /// [separator]. Example:
|
| @@ -219,7 +222,7 @@ bool isRootRelative(String path) => _context.isRootRelative(path);
|
| /// path.join('path', '/to', 'foo'); // -> '/to/foo'
|
| String join(String part1, [String part2, String part3, String part4,
|
| String part5, String part6, String part7, String part8]) =>
|
| - _context.join(part1, part2, part3, part4, part5, part6, part7, part8);
|
| + context.join(part1, part2, part3, part4, part5, part6, part7, part8);
|
|
|
| /// Joins the given path parts into a single path using the current platform's
|
| /// [separator]. Example:
|
| @@ -236,7 +239,7 @@ String join(String part1, [String part2, String part3, String part4,
|
| /// path.joinAll(['path', '/to', 'foo']); // -> '/to/foo'
|
| ///
|
| /// For a fixed number of parts, [join] is usually terser.
|
| -String joinAll(Iterable<String> parts) => _context.joinAll(parts);
|
| +String joinAll(Iterable<String> parts) => context.joinAll(parts);
|
|
|
| // TODO(nweiz): add a UNC example for Windows once issue 7323 is fixed.
|
| /// Splits [path] into its components using the current platform's [separator].
|
| @@ -259,13 +262,13 @@ String joinAll(Iterable<String> parts) => _context.joinAll(parts);
|
| /// // Browser
|
| /// path.split('http://dartlang.org/path/to/foo');
|
| /// // -> ['http://dartlang.org', 'path', 'to', 'foo']
|
| -List<String> split(String path) => _context.split(path);
|
| +List<String> split(String path) => context.split(path);
|
|
|
| /// Normalizes [path], simplifying it by handling `..`, and `.`, and
|
| /// removing redundant path separators whenever possible.
|
| ///
|
| /// path.normalize('path/./to/..//file.text'); // -> 'path/file.txt'
|
| -String normalize(String path) => _context.normalize(path);
|
| +String normalize(String path) => context.normalize(path);
|
|
|
| /// Attempts to convert [path] to an equivalent relative path from the current
|
| /// directory.
|
| @@ -295,19 +298,19 @@ String normalize(String path) => _context.normalize(path);
|
| /// path.relative('http://dartlang.org', from: 'http://pub.dartlang.org');
|
| /// // -> 'http://dartlang.org'
|
| String relative(String path, {String from}) =>
|
| - _context.relative(path, from: from);
|
| + context.relative(path, from: from);
|
|
|
| /// Returns `true` if [child] is a path beneath `parent`, and `false` otherwise.
|
| ///
|
| /// path.isWithin('/root/path', '/root/path/a'); // -> true
|
| /// path.isWithin('/root/path', '/root/other'); // -> false
|
| /// path.isWithin('/root/path', '/root/path') // -> false
|
| -bool isWithin(String parent, String child) => _context.isWithin(parent, child);
|
| +bool isWithin(String parent, String child) => context.isWithin(parent, child);
|
|
|
| /// Removes a trailing extension from the last part of [path].
|
| ///
|
| /// withoutExtension('path/to/foo.dart'); // -> 'path/to/foo'
|
| -String withoutExtension(String path) => _context.withoutExtension(path);
|
| +String withoutExtension(String path) => context.withoutExtension(path);
|
|
|
| /// Returns the path represented by [uri], which may be a [String] or a [Uri].
|
| ///
|
| @@ -329,7 +332,7 @@ String withoutExtension(String path) => _context.withoutExtension(path);
|
| /// If [uri] is relative, a relative path will be returned.
|
| ///
|
| /// path.fromUri('path/to/foo'); // -> 'path/to/foo'
|
| -String fromUri(uri) => _context.fromUri(uri);
|
| +String fromUri(uri) => context.fromUri(uri);
|
|
|
| /// Returns the URI that represents [path].
|
| ///
|
| @@ -352,7 +355,7 @@ String fromUri(uri) => _context.fromUri(uri);
|
| ///
|
| /// path.toUri('path/to/foo')
|
| /// // -> Uri.parse('path/to/foo')
|
| -Uri toUri(String path) => _context.toUri(path);
|
| +Uri toUri(String path) => context.toUri(path);
|
|
|
| /// Returns a terse, human-readable representation of [uri].
|
| ///
|
| @@ -375,4 +378,4 @@ Uri toUri(String path) => _context.toUri(path);
|
| /// path.prettyUri('http://dartlang.org/root/path/a/b.dart');
|
| /// // -> r'a/b.dart'
|
| /// path.prettyUri('file:///root/path'); // -> 'file:///root/path'
|
| -String prettyUri(uri) => _context.prettyUri(uri);
|
| +String prettyUri(uri) => context.prettyUri(uri);
|
|
|