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
25
lib/path.js
25
lib/path.js
@ -960,22 +960,21 @@ const win32 = {
|
||||
}
|
||||
}
|
||||
|
||||
if (end !== -1) {
|
||||
if (startDot === -1 ||
|
||||
end === -1 ||
|
||||
// We saw a non-dot character immediately before the dot
|
||||
preDotState === 0 ||
|
||||
// The (right-most) trimmed path component is exactly '..'
|
||||
(preDotState === 1 &&
|
||||
startDot === end - 1 &&
|
||||
startDot === startPart + 1)) {
|
||||
if (end !== -1) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
// If the directory is the root, use the entire root as the `dir` including
|
||||
// the trailing slash if any (`C:\abc` -> `C:\`). Otherwise, strip out the
|
||||
@ -1380,30 +1379,22 @@ const posix = {
|
||||
}
|
||||
}
|
||||
|
||||
if (end !== -1) {
|
||||
const start = startPart === 0 && isAbsolute ? 1 : startPart;
|
||||
if (startDot === -1 ||
|
||||
end === -1 ||
|
||||
// We saw a non-dot character immediately before the dot
|
||||
preDotState === 0 ||
|
||||
// The (right-most) trimmed path component is exactly '..'
|
||||
(preDotState === 1 &&
|
||||
startDot === end - 1 &&
|
||||
startDot === startPart + 1)) {
|
||||
if (end !== -1) {
|
||||
if (startPart === 0 && isAbsolute)
|
||||
ret.base = ret.name = path.slice(1, end);
|
||||
else
|
||||
ret.base = ret.name = path.slice(startPart, end);
|
||||
}
|
||||
ret.base = ret.name = path.slice(start, end);
|
||||
} else {
|
||||
if (startPart === 0 && isAbsolute) {
|
||||
ret.name = path.slice(1, startDot);
|
||||
ret.base = path.slice(1, end);
|
||||
} else {
|
||||
ret.name = path.slice(startPart, startDot);
|
||||
ret.base = path.slice(startPart, end);
|
||||
}
|
||||
ret.name = path.slice(start, startDot);
|
||||
ret.base = path.slice(start, end);
|
||||
ret.ext = path.slice(startDot, end);
|
||||
}
|
||||
}
|
||||
|
||||
if (startPart > 0)
|
||||
ret.dir = path.slice(0, startPart - 1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user