Change the behavior of path.extname
Make path.extname return an empty string also if: - The last dot is not in the last path component - The last dot starts the last path component
This commit is contained in:
Родитель
ab5c0dd63e
Коммит
c4876d01a1
|
@ -2611,8 +2611,9 @@ Return the last portion of a path. Similar to the Unix `basename` command. Exa
|
|||
|
||||
### path.extname(p)
|
||||
|
||||
Return the extension of the path. Everything after the last '.', if there
|
||||
is no '.' then it returns an empty string. Examples:
|
||||
Return the extension of the path. Everything after the last '.' in the last portion
|
||||
of the path. If there is no '.' in the last portion of the path or the only '.' is
|
||||
the first character, then it returns an empty string. Examples:
|
||||
|
||||
path.extname('index.html')
|
||||
// returns
|
||||
|
|
|
@ -66,8 +66,12 @@ exports.basename = function (path, ext) {
|
|||
};
|
||||
|
||||
exports.extname = function (path) {
|
||||
var index = path.lastIndexOf('.');
|
||||
return index < 0 ? '' : path.substring(index);
|
||||
var dot = path.lastIndexOf('.'),
|
||||
slash = path.lastIndexOf('/');
|
||||
// The last dot must be in the last path component, and it (the last dot) must
|
||||
// not start the last path component (i.e. be a dot that signifies a hidden
|
||||
// file in UNIX).
|
||||
return dot <= slash + 1 ? '' : path.substring(dot);
|
||||
};
|
||||
|
||||
exports.exists = function (path, callback) {
|
||||
|
|
|
@ -12,6 +12,27 @@ assert.equal(path.dirname("/a"), "/");
|
|||
assert.equal(path.dirname("/"), "/");
|
||||
path.exists(f, function (y) { assert.equal(y, true) });
|
||||
|
||||
assert.equal(path.extname(""), "");
|
||||
assert.equal(path.extname("/path/to/file"), "");
|
||||
assert.equal(path.extname("/path/to/file.ext"), ".ext");
|
||||
assert.equal(path.extname("/path.to/file.ext"), ".ext");
|
||||
assert.equal(path.extname("/path.to/file"), "");
|
||||
assert.equal(path.extname("/path.to/.file"), "");
|
||||
assert.equal(path.extname("/path.to/.file.ext"), ".ext");
|
||||
assert.equal(path.extname("/path/to/f.ext"), ".ext");
|
||||
assert.equal(path.extname("/path/to/..ext"), ".ext");
|
||||
assert.equal(path.extname("file"), "");
|
||||
assert.equal(path.extname("file.ext"), ".ext");
|
||||
assert.equal(path.extname(".file"), "");
|
||||
assert.equal(path.extname(".file.ext"), ".ext");
|
||||
assert.equal(path.extname("/file"), "");
|
||||
assert.equal(path.extname("/file.ext"), ".ext");
|
||||
assert.equal(path.extname("/.file"), "");
|
||||
assert.equal(path.extname("/.file.ext"), ".ext");
|
||||
assert.equal(path.extname(".path/file.ext"), ".ext");
|
||||
assert.equal(path.extname("file.ext.ext"), ".ext");
|
||||
assert.equal(path.extname("file."), ".");
|
||||
|
||||
assert.equal(path.join(".", "fixtures/b", "..", "/b/c.js"), "fixtures/b/c.js");
|
||||
|
||||
assert.equal(path.normalize("./fixtures///b/../b/c.js"), "fixtures/b/c.js");
|
||||
|
|
Загрузка…
Ссылка в новой задаче