Skip to content

Commit

Permalink
path: remove dead code
Browse files Browse the repository at this point in the history
A couple of code parts could not be reached due to resolving the path
in the beginning. That "normalizes" the path in a way that some code
branches became obsolete.

PR-URL: #26916
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Signed-off-by: Beth Griggs <Bethany.Griggs@uk.ibm.com>
  • Loading branch information
BridgeAR authored and BethGriggs committed Apr 8, 2019
1 parent 1aa6e99 commit b62739c
Showing 1 changed file with 14 additions and 37 deletions.
51 changes: 14 additions & 37 deletions lib/path.js
Original file line number Diff line number Diff line change
Expand Up @@ -1054,29 +1054,18 @@ const posix = {
if (from === to)
return '';

// Trim leading forward slashes.
from = posix.resolve(from);
to = posix.resolve(to);

if (from === to)
return '';

// Trim any leading backslashes
let fromStart = 1;
while (fromStart < from.length &&
from.charCodeAt(fromStart) === CHAR_FORWARD_SLASH) {
fromStart++;
}
const fromStart = 1;
const fromEnd = from.length;
const fromLen = (fromEnd - fromStart);

// Trim any leading backslashes
let toStart = 1;
while (toStart < to.length &&
to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) {
toStart++;
}
const toEnd = to.length;
const toLen = (toEnd - toStart);
const fromLen = fromEnd - fromStart;
const toStart = 1;
const toLen = to.length - toStart;

// Compare paths to find the longest common path from root
const length = (fromLen < toLen ? fromLen : toLen);
Expand All @@ -1101,38 +1090,26 @@ const posix = {
// For example: from='/'; to='/foo'
return to.slice(toStart + i);
}
} else if (fromLen > length) {
if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {
// We get here if `to` is the exact base path for `from`.
// For example: from='/foo/bar/baz'; to='/foo/bar'
lastCommonSep = i;
} else if (i === 0) {
// We get here if `to` is the root.
// For example: from='/foo'; to='/'
lastCommonSep = 0;
}
} else if (fromLen > length &&
from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {
// We get here if `to` is the exact base path for `from`.
// For example: from='/foo/bar/baz'; to='/foo/bar'
lastCommonSep = i;
}
}

var out = '';
let out = '';
// Generate the relative path based on the path difference between `to`
// and `from`
// and `from`.
for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {
if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {
out += out.length === 0 ? '..' : '/..';
}
}

toStart += lastCommonSep;

// Lastly, append the rest of the destination (`to`) path that comes after
// the common path parts
if (out.length > 0)
return `${out}${to.slice(toStart)}`;

if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH)
++toStart;
return to.slice(toStart);
// the common path parts.
return `${out}${to.slice(toStart + lastCommonSep)}`;
},

toNamespacedPath(path) {
Expand Down

0 comments on commit b62739c

Please sign in to comment.