path: simplify code and remove obsolete checks
Either `end` is `-1` or `startPart` is not `0`. Therefore it's possible to move the conditions in a way that we eliminate a few code branches. PR-URL: https://github.com/nodejs/node/pull/25278 Reviewed-By: Michaël Zasso <targos@protonmail.com>
This commit is contained in:
parent
e750e9583e
commit
e68b0d6fb3
59
lib/path.js
59
lib/path.js
@ -960,21 +960,20 @@ const win32 = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (startDot === -1 ||
|
if (end !== -1) {
|
||||||
end === -1 ||
|
if (startDot === -1 ||
|
||||||
// We saw a non-dot character immediately before the dot
|
// We saw a non-dot character immediately before the dot
|
||||||
preDotState === 0 ||
|
preDotState === 0 ||
|
||||||
// The (right-most) trimmed path component is exactly '..'
|
// The (right-most) trimmed path component is exactly '..'
|
||||||
(preDotState === 1 &&
|
(preDotState === 1 &&
|
||||||
startDot === end - 1 &&
|
startDot === end - 1 &&
|
||||||
startDot === startPart + 1)) {
|
startDot === startPart + 1)) {
|
||||||
if (end !== -1) {
|
|
||||||
ret.base = ret.name = path.slice(startPart, end);
|
ret.base = ret.name = path.slice(startPart, end);
|
||||||
|
} else {
|
||||||
|
ret.name = path.slice(startPart, startDot);
|
||||||
|
ret.base = path.slice(startPart, end);
|
||||||
|
ret.ext = path.slice(startDot, end);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
ret.name = path.slice(startPart, startDot);
|
|
||||||
ret.base = path.slice(startPart, end);
|
|
||||||
ret.ext = path.slice(startDot, end);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the directory is the root, use the entire root as the `dir` including
|
// If the directory is the root, use the entire root as the `dir` including
|
||||||
@ -1380,29 +1379,21 @@ const posix = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (startDot === -1 ||
|
if (end !== -1) {
|
||||||
end === -1 ||
|
const start = startPart === 0 && isAbsolute ? 1 : startPart;
|
||||||
// We saw a non-dot character immediately before the dot
|
if (startDot === -1 ||
|
||||||
preDotState === 0 ||
|
// We saw a non-dot character immediately before the dot
|
||||||
// The (right-most) trimmed path component is exactly '..'
|
preDotState === 0 ||
|
||||||
(preDotState === 1 &&
|
// The (right-most) trimmed path component is exactly '..'
|
||||||
startDot === end - 1 &&
|
(preDotState === 1 &&
|
||||||
startDot === startPart + 1)) {
|
startDot === end - 1 &&
|
||||||
if (end !== -1) {
|
startDot === startPart + 1)) {
|
||||||
if (startPart === 0 && isAbsolute)
|
ret.base = ret.name = path.slice(start, end);
|
||||||
ret.base = ret.name = path.slice(1, end);
|
|
||||||
else
|
|
||||||
ret.base = ret.name = path.slice(startPart, end);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (startPart === 0 && isAbsolute) {
|
|
||||||
ret.name = path.slice(1, startDot);
|
|
||||||
ret.base = path.slice(1, end);
|
|
||||||
} else {
|
} else {
|
||||||
ret.name = path.slice(startPart, startDot);
|
ret.name = path.slice(start, startDot);
|
||||||
ret.base = path.slice(startPart, end);
|
ret.base = path.slice(start, end);
|
||||||
|
ret.ext = path.slice(startDot, end);
|
||||||
}
|
}
|
||||||
ret.ext = path.slice(startDot, end);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (startPart > 0)
|
if (startPart > 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user