Permalink
Browse files

path: add platform specific path delimiter

Closes #3728
Closes #4071
  • Loading branch information...
1 parent 3053f4d commit 41e53e557992a7d552a8e23de035f9463da25c99 @serby serby committed with piscisaureus Oct 1, 2012
Showing with 41 additions and 8 deletions.
  1. +26 −4 doc/api/path.markdown
  2. +2 −0 lib/path.js
  3. +13 −4 test/simple/test-path.js
View
@@ -14,7 +14,7 @@ Normalize a string path, taking care of `'..'` and `'.'` parts.
When multiple slashes are found, they're replaced by a single one;
when the path contains a trailing slash, it is preserved.
-On windows backslashes are used.
+On Windows backslashes are used.
Example:
@@ -44,7 +44,7 @@ Resolves `to` to an absolute path.
If `to` isn't already absolute `from` arguments are prepended in right to left
order, until an absolute path is found. If after using all `from` paths still
no absolute path is found, the current working directory is used as well. The
-resulting path is normalized, and trailing slashes are removed unless the path
+resulting path is normalized, and trailing slashes are removed unless the path
gets resolved to the root directory. Non-string arguments are ignored.
Another way to think of it is as a sequence of `cd` commands in a shell.
@@ -143,14 +143,36 @@ an empty string. Examples:
The platform-specific file separator. `'\\'` or `'/'`.
-An example on linux:
+An example on *nix:
'foo/bar/baz'.split(path.sep)
// returns
['foo', 'bar', 'baz']
-An example on windows:
+An example on Windows:
'foo\\bar\\baz'.split(path.sep)
// returns
['foo', 'bar', 'baz']
+
+## path.delimiter
+
+The platform-specific path delimiter, `;` or `':'`.
+
+An example on *nix:
+
+ console.log(process.env.PATH)
+ // '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'
+
+ process.env.PATH.split(path.delimiter)
+ // returns
+ ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']
+
+An example on Windows:
+
+ console.log(process.env.PATH)
+ // 'C:\Windows\system32;C:\Windows;C:\Program Files\nodejs\'
+
+ process.env.PATH.split(path.delimiter)
+ // returns
+ ['C:\Windows\system32', 'C:\Windows', 'C:\Program Files\nodejs\']
View
@@ -262,6 +262,7 @@ if (isWindows) {
};
exports.sep = '\\';
+ exports.delimiter = ';';
} else /* posix */ {
@@ -378,6 +379,7 @@ if (isWindows) {
};
exports.sep = '/';
+ exports.delimiter = ':';
}
View
@@ -277,9 +277,18 @@ assert.equal(failures.length, 0, failures.join(''));
// path.sep tests
if (isWindows) {
- // windows
- assert.equal(path.sep, '\\');
+ // windows
+ assert.equal(path.sep, '\\');
+} else {
+ // posix
+ assert.equal(path.sep, '/');
+}
+
+// path.delimiter tests
+if (isWindows) {
+ // windows
+ assert.equal(path.delimiter, ';');
} else {
- // posix
- assert.equal(path.sep, '/');
+ // posix
+ assert.equal(path.delimiter, ':');
}

0 comments on commit 41e53e5

Please sign in to comment.