path: refactor path.format() repeated code
PR-URL: https://github.com/nodejs/node/pull/5673 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: James Snell <jasnell@gmail.com> Reviewed-By: Brian White <mscdex@mscdex.net>
This commit is contained in:
parent
85ab4a5f12
commit
9de9a08587
40
lib/path.js
40
lib/path.js
@ -140,6 +140,18 @@ function normalizeStringPosix(path, allowAboveRoot) {
|
||||
return res;
|
||||
}
|
||||
|
||||
function _format(sep, pathObject) {
|
||||
const dir = pathObject.dir || pathObject.root;
|
||||
const base = pathObject.base ||
|
||||
((pathObject.name || '') + (pathObject.ext || ''));
|
||||
if (!dir) {
|
||||
return base;
|
||||
}
|
||||
if (dir === pathObject.root) {
|
||||
return dir + base;
|
||||
}
|
||||
return dir + sep + base;
|
||||
}
|
||||
|
||||
const win32 = {
|
||||
// path.resolve([from ...], to)
|
||||
@ -970,20 +982,10 @@ const win32 = {
|
||||
format: function format(pathObject) {
|
||||
if (pathObject === null || typeof pathObject !== 'object') {
|
||||
throw new TypeError(
|
||||
'Parameter "pathObject" must be an object, not ' + typeof pathObject
|
||||
`Parameter "pathObject" must be an object, not ${typeof pathObject}`
|
||||
);
|
||||
}
|
||||
|
||||
var dir = pathObject.dir || pathObject.root;
|
||||
var base = pathObject.base ||
|
||||
((pathObject.name || '') + (pathObject.ext || ''));
|
||||
if (!dir) {
|
||||
return base;
|
||||
}
|
||||
if (dir === pathObject.root) {
|
||||
return dir + base;
|
||||
}
|
||||
return dir + win32.sep + base;
|
||||
return _format('\\', pathObject);
|
||||
},
|
||||
|
||||
|
||||
@ -1525,20 +1527,10 @@ const posix = {
|
||||
format: function format(pathObject) {
|
||||
if (pathObject === null || typeof pathObject !== 'object') {
|
||||
throw new TypeError(
|
||||
'Parameter "pathObject" must be an object, not ' + typeof pathObject
|
||||
`Parameter "pathObject" must be an object, not ${typeof pathObject}`
|
||||
);
|
||||
}
|
||||
|
||||
var dir = pathObject.dir || pathObject.root;
|
||||
var base = pathObject.base ||
|
||||
((pathObject.name || '') + (pathObject.ext || ''));
|
||||
if (!dir) {
|
||||
return base;
|
||||
}
|
||||
if (dir === pathObject.root) {
|
||||
return dir + base;
|
||||
}
|
||||
return dir + posix.sep + base;
|
||||
return _format('/', pathObject);
|
||||
},
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user