parent
c0524a26ee
commit
8d64118cb1
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,111 @@ |
|||||||
|
//copy from https://github.com/browserify/path-browserify/blob/master/index.js
|
||||||
|
|
||||||
|
function normalizeStringPosix(path, allowAboveRoot) { |
||||||
|
var res = '' |
||||||
|
var lastSegmentLength = 0 |
||||||
|
var lastSlash = -1 |
||||||
|
var dots = 0 |
||||||
|
var code |
||||||
|
for (var i = 0; i <= path.length; ++i) { |
||||||
|
if (i < path.length) |
||||||
|
code = path.charCodeAt(i) |
||||||
|
else if (code === 47) |
||||||
|
break |
||||||
|
else |
||||||
|
code = 47 |
||||||
|
if (code === 47) { |
||||||
|
if (lastSlash === i - 1 || dots === 1) { |
||||||
|
|
||||||
|
} |
||||||
|
else if (lastSlash !== i - 1 && dots === 2) { |
||||||
|
if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46) { |
||||||
|
if (res.length > 2) { |
||||||
|
var lastSlashIndex = res.lastIndexOf('/') |
||||||
|
if (lastSlashIndex !== res.length - 1) { |
||||||
|
if (lastSlashIndex === -1) { |
||||||
|
res = '' |
||||||
|
lastSegmentLength = 0 |
||||||
|
} |
||||||
|
else { |
||||||
|
res = res.slice(0, lastSlashIndex) |
||||||
|
lastSegmentLength = res.length - 1 - res.lastIndexOf('/') |
||||||
|
} |
||||||
|
lastSlash = i |
||||||
|
dots = 0 |
||||||
|
continue |
||||||
|
} |
||||||
|
} |
||||||
|
else if (res.length === 2 || res.length === 1) { |
||||||
|
res = '' |
||||||
|
lastSegmentLength = 0 |
||||||
|
lastSlash = i |
||||||
|
dots = 0 |
||||||
|
continue |
||||||
|
} |
||||||
|
} |
||||||
|
if (allowAboveRoot) { |
||||||
|
if (res.length > 0) |
||||||
|
res += '/..' |
||||||
|
else |
||||||
|
res = '..' |
||||||
|
lastSegmentLength = 2 |
||||||
|
} |
||||||
|
} |
||||||
|
else { |
||||||
|
if (res.length > 0) |
||||||
|
res += '/' + path.slice(lastSlash + 1, i) |
||||||
|
else |
||||||
|
res = path.slice(lastSlash + 1, i) |
||||||
|
lastSegmentLength = i - lastSlash - 1 |
||||||
|
} |
||||||
|
lastSlash = i |
||||||
|
dots = 0 |
||||||
|
} |
||||||
|
else if (code === 46 && dots !== -1) { |
||||||
|
++dots |
||||||
|
} |
||||||
|
else { |
||||||
|
dots = -1 |
||||||
|
} |
||||||
|
} |
||||||
|
return res |
||||||
|
} |
||||||
|
|
||||||
|
export function resolvePath() { |
||||||
|
var resolvedPath = '' |
||||||
|
var resolvedAbsolute = false |
||||||
|
var cwd |
||||||
|
|
||||||
|
for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { |
||||||
|
var path |
||||||
|
if (i >= 0) |
||||||
|
path = arguments[i] |
||||||
|
else { |
||||||
|
if (cwd === undefined) |
||||||
|
cwd = process.cwd() |
||||||
|
path = cwd |
||||||
|
} |
||||||
|
|
||||||
|
if (path.length === 0) { |
||||||
|
continue |
||||||
|
} |
||||||
|
|
||||||
|
resolvedPath = path + '/' + resolvedPath |
||||||
|
resolvedAbsolute = path.charCodeAt(0) === 47 |
||||||
|
} |
||||||
|
|
||||||
|
resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute) |
||||||
|
|
||||||
|
if (resolvedAbsolute) { |
||||||
|
if (resolvedPath.length > 0) |
||||||
|
return '/' + resolvedPath |
||||||
|
else |
||||||
|
return '/' |
||||||
|
} |
||||||
|
else if (resolvedPath.length > 0) { |
||||||
|
return resolvedPath |
||||||
|
} |
||||||
|
else { |
||||||
|
return '.' |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue