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:
Ruben Bridgewater 2019-01-27 15:35:40 +01:00
parent e750e9583e
commit e68b0d6fb3
No known key found for this signature in database
GPG Key ID: F07496B3EB3C1762

View File

@ -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)