提交 874fb60b 编写于 作者: J Johannes Rieken

path#join is concat and a normalize

上级 422fdbdb
......@@ -209,44 +209,29 @@ export function getRoot(path: string, sep: string = '/'): string {
return '';
}
export function join(...parts: string[]): string {
var rootLen = getRoot(parts[0]).length,
root: string;
// simply preserve things like c:/, //localhost/, file:///, http://, etc
root = parts[0].substr(0, rootLen);
parts[0] = parts[0].substr(rootLen);
var allParts: string[] = [],
endsWithSep = /[\\\/]$/.test(parts[parts.length - 1]);
for (var i = 0; i < parts.length; i++) {
allParts.push.apply(allParts, parts[i].split(/\/|\\/));
}
for (var i = 0; i < allParts.length; i++) {
var part = allParts[i];
if (part === '.' || part.length === 0) {
allParts.splice(i, 1);
i -= 1;
} else if (part === '..' && !!allParts[i - 1] && allParts[i - 1] !== '..') {
allParts.splice(i - 1, 2);
i -= 2;
export const join: (...parts: string[]) => string = function () {
let value = '';
for (let i = 0; i < arguments.length; i++) {
let part = arguments[i];
if (i > 0) {
// add the separater between two parts unless
// there already is one
let last = value.charCodeAt(value.length - 1);
if (last !== _slash && last !== _backslash) {
let next = part.charCodeAt(0);
if (next !== _slash && next !== _backslash) {
value += sep;
}
}
}
value += part;
}
if (endsWithSep) {
allParts.push('');
}
var ret = allParts.join('/');
if (root) {
ret = root.replace(/\/|\\/g, '/') + ret;
}
return normalize(value);
};
return ret;
}
export function isUNC(path: string): boolean {
if (!isWindows || !path) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册