◐ Shell
clean mode source ↗

path: remove redundant function · nodejs/node@4ae320f

@@ -50,7 +50,7 @@ function isWindowsDeviceRoot(code) {

5050

}

51515252

// Resolves . and .. elements in a path with directory names

53-

function normalizeStringWin32(path, allowAboveRoot) {

53+

function normalizeString(path, allowAboveRoot, separator) {

5454

var res = '';

5555

var lastSegmentLength = 0;

5656

var lastSlash = -1;

@@ -72,14 +72,14 @@ function normalizeStringWin32(path, allowAboveRoot) {

7272

res.charCodeAt(res.length - 1) !== CHAR_DOT ||

7373

res.charCodeAt(res.length - 2) !== CHAR_DOT) {

7474

if (res.length > 2) {

75-

const lastSlashIndex = res.lastIndexOf('\\');

75+

const lastSlashIndex = res.lastIndexOf(separator);

7676

if (lastSlashIndex !== res.length - 1) {

7777

if (lastSlashIndex === -1) {

7878

res = '';

7979

lastSegmentLength = 0;

8080

} else {

8181

res = res.slice(0, lastSlashIndex);

82-

lastSegmentLength = res.length - 1 - res.lastIndexOf('\\');

82+

lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);

8383

}

8484

lastSlash = i;

8585

dots = 0;

@@ -95,82 +95,14 @@ function normalizeStringWin32(path, allowAboveRoot) {

9595

}

9696

if (allowAboveRoot) {

9797

if (res.length > 0)

98-

res += '\\..';

98+

res += `${separator}..`;

9999

else

100100

res = '..';

101101

lastSegmentLength = 2;

102102

}

103103

} else {

104104

if (res.length > 0)

105-

res += '\\' + path.slice(lastSlash + 1, i);

106-

else

107-

res = path.slice(lastSlash + 1, i);

108-

lastSegmentLength = i - lastSlash - 1;

109-

}

110-

lastSlash = i;

111-

dots = 0;

112-

} else if (code === CHAR_DOT && dots !== -1) {

113-

++dots;

114-

} else {

115-

dots = -1;

116-

}

117-

}

118-

return res;

119-

}

120-121-

// Resolves . and .. elements in a path with directory names

122-

function normalizeStringPosix(path, allowAboveRoot) {

123-

var res = '';

124-

var lastSegmentLength = 0;

125-

var lastSlash = -1;

126-

var dots = 0;

127-

var code;

128-

for (var i = 0; i <= path.length; ++i) {

129-

if (i < path.length)

130-

code = path.charCodeAt(i);

131-

else if (code === CHAR_FORWARD_SLASH)

132-

break;

133-

else

134-

code = CHAR_FORWARD_SLASH;

135-

if (code === CHAR_FORWARD_SLASH) {

136-

if (lastSlash === i - 1 || dots === 1) {

137-

// NOOP

138-

} else if (lastSlash !== i - 1 && dots === 2) {

139-

if (res.length < 2 || lastSegmentLength !== 2 ||

140-

res.charCodeAt(res.length - 1) !== CHAR_DOT ||

141-

res.charCodeAt(res.length - 2) !== CHAR_DOT) {

142-

if (res.length > 2) {

143-

const lastSlashIndex = res.lastIndexOf('/');

144-

if (lastSlashIndex !== res.length - 1) {

145-

if (lastSlashIndex === -1) {

146-

res = '';

147-

lastSegmentLength = 0;

148-

} else {

149-

res = res.slice(0, lastSlashIndex);

150-

lastSegmentLength = res.length - 1 - res.lastIndexOf('/');

151-

}

152-

lastSlash = i;

153-

dots = 0;

154-

continue;

155-

}

156-

} else if (res.length === 2 || res.length === 1) {

157-

res = '';

158-

lastSegmentLength = 0;

159-

lastSlash = i;

160-

dots = 0;

161-

continue;

162-

}

163-

}

164-

if (allowAboveRoot) {

165-

if (res.length > 0)

166-

res += '/..';

167-

else

168-

res = '..';

169-

lastSegmentLength = 2;

170-

}

171-

} else {

172-

if (res.length > 0)

173-

res += '/' + path.slice(lastSlash + 1, i);

105+

res += separator + path.slice(lastSlash + 1, i);

174106

else

175107

res = path.slice(lastSlash + 1, i);

176108

lastSegmentLength = i - lastSlash - 1;

@@ -340,7 +272,7 @@ const win32 = {

340272

// fails)

341273342274

// Normalize the tail path

343-

resolvedTail = normalizeStringWin32(resolvedTail, !resolvedAbsolute);

275+

resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\');

344276345277

return (resolvedDevice + (resolvedAbsolute ? '\\' : '') + resolvedTail) ||

346278

'.';

@@ -432,7 +364,7 @@ const win32 = {

432364433365

var tail;

434366

if (rootEnd < len)

435-

tail = normalizeStringWin32(path.slice(rootEnd), !isAbsolute);

367+

tail = normalizeString(path.slice(rootEnd), !isAbsolute, '\\');

436368

else

437369

tail = '';

438370

if (tail.length === 0 && !isAbsolute)

@@ -1163,7 +1095,7 @@ const posix = {

11631095

// handle relative paths to be safe (might happen when process.cwd() fails)

1164109611651097

// Normalize the path

1166-

resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);

1098+

resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/');

1167109911681100

if (resolvedAbsolute) {

11691101

if (resolvedPath.length > 0)

@@ -1189,7 +1121,7 @@ const posix = {

11891121

path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH;

1190112211911123

// Normalize the path

1192-

path = normalizeStringPosix(path, !isAbsolute);

1124+

path = normalizeString(path, !isAbsolute, '/');

1193112511941126

if (path.length === 0 && !isAbsolute)

11951127

path = '.';