path: refactor for less indentation
This just switches the statements in a way that it reduces the overall indentation. The function has a very deep indentation in general and this should improve the readability. PR-URL: https://github.com/nodejs/node/pull/26917 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
This commit is contained in:
parent
f7c96856f9
commit
dd0d6df9ae
86
lib/path.js
86
lib/path.js
@ -165,63 +165,63 @@ const win32 = {
|
||||
const code = path.charCodeAt(0);
|
||||
|
||||
// Try to match a root
|
||||
if (len > 1) {
|
||||
if (len === 1) {
|
||||
if (isPathSeparator(code)) {
|
||||
// Possible UNC root
|
||||
|
||||
// If we started with a separator, we know we at least have an
|
||||
// absolute path of some kind (UNC or otherwise)
|
||||
// `path` contains just a path separator
|
||||
rootEnd = 1;
|
||||
isAbsolute = true;
|
||||
}
|
||||
} else if (isPathSeparator(code)) {
|
||||
// Possible UNC root
|
||||
|
||||
if (isPathSeparator(path.charCodeAt(1))) {
|
||||
// Matched double path separator at beginning
|
||||
let j = 2;
|
||||
let last = j;
|
||||
// Match 1 or more non-path separators
|
||||
while (j < len && !isPathSeparator(path.charCodeAt(j))) {
|
||||
// If we started with a separator, we know we at least have an
|
||||
// absolute path of some kind (UNC or otherwise)
|
||||
isAbsolute = true;
|
||||
|
||||
if (isPathSeparator(path.charCodeAt(1))) {
|
||||
// Matched double path separator at beginning
|
||||
let j = 2;
|
||||
let last = j;
|
||||
// Match 1 or more non-path separators
|
||||
while (j < len && !isPathSeparator(path.charCodeAt(j))) {
|
||||
j++;
|
||||
}
|
||||
if (j < len && j !== last) {
|
||||
const firstPart = path.slice(last, j);
|
||||
// Matched!
|
||||
last = j;
|
||||
// Match 1 or more path separators
|
||||
while (j < len && isPathSeparator(path.charCodeAt(j))) {
|
||||
j++;
|
||||
}
|
||||
if (j < len && j !== last) {
|
||||
const firstPart = path.slice(last, j);
|
||||
// Matched!
|
||||
last = j;
|
||||
// Match 1 or more path separators
|
||||
while (j < len && isPathSeparator(path.charCodeAt(j))) {
|
||||
// Match 1 or more non-path separators
|
||||
while (j < len && !isPathSeparator(path.charCodeAt(j))) {
|
||||
j++;
|
||||
}
|
||||
if (j < len && j !== last) {
|
||||
// Matched!
|
||||
last = j;
|
||||
// Match 1 or more non-path separators
|
||||
while (j < len && !isPathSeparator(path.charCodeAt(j))) {
|
||||
j++;
|
||||
}
|
||||
if (j === len || j !== last) {
|
||||
// We matched a UNC root
|
||||
device = `\\\\${firstPart}\\${path.slice(last, j)}`;
|
||||
rootEnd = j;
|
||||
}
|
||||
if (j === len || j !== last) {
|
||||
// We matched a UNC root
|
||||
device = `\\\\${firstPart}\\${path.slice(last, j)}`;
|
||||
rootEnd = j;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
rootEnd = 1;
|
||||
}
|
||||
} else if (isWindowsDeviceRoot(code) &&
|
||||
path.charCodeAt(1) === CHAR_COLON) {
|
||||
// Possible device root
|
||||
device = path.slice(0, 2);
|
||||
rootEnd = 2;
|
||||
if (len > 2 && isPathSeparator(path.charCodeAt(2))) {
|
||||
// Treat separator following drive name as an absolute path
|
||||
// indicator
|
||||
isAbsolute = true;
|
||||
rootEnd = 3;
|
||||
}
|
||||
} else {
|
||||
rootEnd = 1;
|
||||
}
|
||||
} else if (isWindowsDeviceRoot(code) &&
|
||||
path.charCodeAt(1) === CHAR_COLON) {
|
||||
// Possible device root
|
||||
device = path.slice(0, 2);
|
||||
rootEnd = 2;
|
||||
if (len > 2 && isPathSeparator(path.charCodeAt(2))) {
|
||||
// Treat separator following drive name as an absolute path
|
||||
// indicator
|
||||
isAbsolute = true;
|
||||
rootEnd = 3;
|
||||
}
|
||||
} else if (isPathSeparator(code)) {
|
||||
// `path` contains just a path separator
|
||||
rootEnd = 1;
|
||||
isAbsolute = true;
|
||||
}
|
||||
|
||||
if (device.length > 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user