Chromium Code Reviews| Index: utils/pub/path.dart |
| diff --git a/utils/pub/path.dart b/utils/pub/path.dart |
| index d803fd17075726750cd3c559d4731ff6478af52b..8f9f9a49b89afa9d5e879ec796ced39ff738d5b9 100644 |
| --- a/utils/pub/path.dart |
| +++ b/utils/pub/path.dart |
| @@ -110,6 +110,19 @@ String normalize(String path) => _builder.normalize(path); |
| /// path.relative(r'D:\other'); // -> 'D:\other' |
| String relative(String path) => _builder.relative(path); |
| +/// Splits [path] along separators and returns a [List] of the parts. The |
| +/// path will *not* be normalized before splitting. |
| +/// |
| +/// path.split('a/b/c.txt'); // -> ['a', 'b', 'c.txt'] |
| +/// path.split('a/../c'); // -> ['a', '..', 'c'] |
| +/// |
| +/// If [path] is absolute, the root prefix will be included in the first |
| +/// part. |
| +/// |
| +/// path.split('/a/b/c.txt'); // -> ['/a', 'b', 'c.txt'] |
| +/// path.split(r'C:\a\b\c.txt'); // -> [r'C:\a', 'b', 'c.txt'] |
| +List<String> split(String path) => _builder.split(path); |
|
nweiz
2012/12/12 21:21:21
I assume this'll be replaced by my implementation.
Bob Nystrom
2012/12/12 21:45:36
Yup.
|
| + |
| /// Removes a trailing extension from the last part of [path]. |
| /// |
| /// withoutExtension('path/to/foo.dart'); // -> 'path/to/foo' |
| @@ -329,6 +342,29 @@ class Builder { |
| return pathParsed.toString(); |
| } |
| + /// Splits [path] along separators and returns a [List] of the parts. The |
| + /// path will *not* be normalized before splitting. |
| + /// |
| + /// builder.split('a/b/c.txt'); // -> ['a', 'b', 'c.txt'] |
| + /// builder.split('a/../c'); // -> ['a', '..', 'c'] |
| + /// |
| + /// If [path] is absolute, the root prefix will be included in the first |
| + /// part. |
| + /// |
| + /// builder.split('/a/b/c.txt'); // -> ['/a', 'b', 'c.txt'] |
| + /// builder.split(r'C:\a\b\c.txt'); // -> [r'C:\a', 'b', 'c.txt'] |
| + List<String> split(String path) { |
| + var parsed = _parse(path); |
| + |
| + // Include the root prefix in the first part. |
| + if (parsed.root != null) { |
| + if (parsed.parts.isEmpty) return [parsed.root]; |
| + parsed.parts[0] = '${parsed.root}${parsed.parts[0]}'; |
| + } |
| + |
| + return parsed.parts.filter(((part) => part != '')); |
| + } |
| + |
| /// Removes a trailing extension from the last part of [path]. |
| /// |
| /// builder.withoutExtension('path/to/foo.dart'); // -> 'path/to/foo' |