OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of dart.io; | 5 part of dart.io; |
6 | 6 |
7 /** | 7 /** |
8 * A Path, which is a String interpreted as a sequence of path segments, | 8 * A Path is an immutable wrapper of a String, with additional member functions |
9 * which are strings, separated by forward slashes. | 9 * for useful path manipulations and queries. |
10 * Paths are immutable wrappers of a String, that offer member functions for | 10 * On the Windows platform, Path also converts from and to native paths. |
11 * useful path manipulations and queries. Joining of paths and normalization | 11 * |
12 * interpret '.' and '..' in the usual way. | 12 * Joining of paths and path normalization handle '.' and '..' in the usual way. |
13 */ | 13 */ |
14 abstract class Path { | 14 abstract class Path { |
15 /** | 15 /** |
16 * Creates a Path from the String [source]. [source] is used as-is, so if | |
17 * the string does not consist of segments separated by forward slashes, the | |
18 * behavior may not be as expected. Paths are immutable. | |
19 */ | |
20 factory Path(String source) => new _Path(source); | |
21 | |
22 /** | |
23 * Creates a Path from a String that uses the native filesystem's conventions. | 16 * Creates a Path from a String that uses the native filesystem's conventions. |
24 * | 17 * |
25 * On Windows, this converts '\' to '/' and has special handling for drive | 18 * On Windows, this converts '\' to '/' and has special handling for drive |
26 * letters and shares. | 19 * letters and shares. |
27 * | 20 * |
28 * If the path contains a drive letter a '/' is added before the drive letter. | 21 * If the path starts with a drive letter, like 'C:', a '/' is added |
| 22 * before the drive letter. |
29 * | 23 * |
30 * new Path.fromNative(r'c:\a\b').toString() == '/c:/a/b' | 24 * new Path(r'c:\a\b').toString() == '/c:/a/b' |
31 * | 25 * |
32 * A path starting with '/c:/' (or any other character instead of 'c') is | 26 * A path starting with '/c:/' (or any other character instead of 'c') is |
33 * treated specially. Backwards links ('..') cannot cancel the drive letter. | 27 * treated specially. Backwards links ('..') cannot cancel the drive letter. |
34 * | 28 * |
35 * If the path is a share path this is recorded in the Path object and | 29 * If the path is a share path this is recorded in the Path object and |
36 * maintained in operations on the Path object. | 30 * maintained in operations on the Path object. |
37 * | 31 * |
38 * var share = new Path.fromNative(r'\\share\a\b\c'); | 32 * var share = new Path(r'\\share\a\b\c'); |
39 * share.isWindowsShare == true | 33 * share.isWindowsShare == true |
40 * share.toString() == '/share/a/b/c' | 34 * share.toString() == '/share/a/b/c' |
41 * share.toNativePath() == r'\\share\a\b\c' | 35 * share.toNativePath() == r'\\share\a\b\c' |
42 * share.append('final').isWindowsShare == true | 36 * share.append('final').isWindowsShare == true |
43 */ | 37 */ |
44 factory Path.fromNative(String source) => new _Path.fromNative(source); | 38 factory Path(String source) => new _Path(source); |
| 39 |
| 40 /** |
| 41 * Creates a Path from the String [source]. [source] is used as-is, so if |
| 42 * the string does not consist of segments separated by forward slashes, the |
| 43 * behavior may not be as expected. Paths are immutable. |
| 44 */ |
| 45 factory Path.raw(String source) => new _Path.raw(source); |
45 | 46 |
46 /** | 47 /** |
47 * Is this path the empty string? | 48 * Is this path the empty string? |
48 */ | 49 */ |
49 bool get isEmpty; | 50 bool get isEmpty; |
50 | 51 |
51 /** | 52 /** |
52 * Is this path an absolute path, beginning with a path separator? | 53 * Is this path an absolute path, beginning with a path separator? |
53 */ | 54 */ |
54 bool get isAbsolute; | 55 bool get isAbsolute; |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 * | 122 * |
122 * On Windows, converts path separators to backwards slashes, and removes | 123 * On Windows, converts path separators to backwards slashes, and removes |
123 * the leading path separator if the path starts with a drive specification. | 124 * the leading path separator if the path starts with a drive specification. |
124 * For most valid Windows paths, this should be the inverse of the | 125 * For most valid Windows paths, this should be the inverse of the |
125 * constructor Path.fromNative. | 126 * constructor Path.fromNative. |
126 */ | 127 */ |
127 String toNativePath(); | 128 String toNativePath(); |
128 | 129 |
129 /** | 130 /** |
130 * Returns the path as a string. If this path is constructed using | 131 * Returns the path as a string. If this path is constructed using |
131 * new Path() or new Path.fromNative() on a non-Windows system, the | 132 * new Path.raw(), or new Path() on a non-Windows system, the |
132 * returned value is the original string argument to the constructor. | 133 * returned value is the original string argument to the constructor. |
133 */ | 134 */ |
134 String toString(); | 135 String toString(); |
135 | 136 |
136 /** | 137 /** |
137 * Gets the segments of a Path. Paths beginning or ending with the | 138 * Gets the segments of a Path. Paths beginning or ending with the |
138 * path separator do not have leading or terminating empty segments. | 139 * path separator do not have leading or terminating empty segments. |
139 * Other than that, the segments are just the result of splitting the | 140 * Other than that, the segments are just the result of splitting the |
140 * path on the path separator. | 141 * path on the path separator. |
141 * | 142 * |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 | 189 |
189 /** | 190 /** |
190 * The part of [filename] after the last '.', or '' if [filename] | 191 * The part of [filename] after the last '.', or '' if [filename] |
191 * contains no '.'. If [filename] is '.' or '..', returns ''. | 192 * contains no '.'. If [filename] is '.' or '..', returns ''. |
192 * | 193 * |
193 * new Path('tiger.svg').extension == 'svg' | 194 * new Path('tiger.svg').extension == 'svg' |
194 * new Path('/src/dart/dart_secrets').extension == '' | 195 * new Path('/src/dart/dart_secrets').extension == '' |
195 */ | 196 */ |
196 String get extension; | 197 String get extension; |
197 } | 198 } |
OLD | NEW |