mirror of https://github.com/lukechilds/node.git
isaacs
15 years ago
committed by
Ryan Dahl
3 changed files with 72 additions and 66 deletions
@ -0,0 +1,64 @@ |
|||
|
|||
exports.join = function () { |
|||
return exports.normalize(Array.prototype.join.call(arguments, "/")); |
|||
}; |
|||
|
|||
exports.normalizeArray = function (parts, keepBlanks) { |
|||
var directories = [], prev; |
|||
for (var i = 0, l = parts.length - 1; i <= l; i++) { |
|||
var directory = parts[i]; |
|||
|
|||
// if it's blank, but it's not the first thing, and not the last thing, skip it.
|
|||
if (directory === "" && i !== 0 && i !== l && !keepBlanks) continue; |
|||
|
|||
// if it's a dot, and there was some previous dir already, then skip it.
|
|||
if (directory === "." && prev !== undefined) continue; |
|||
|
|||
if ( |
|||
directory === ".." |
|||
&& directories.length |
|||
&& prev !== ".." |
|||
&& prev !== "." |
|||
&& prev !== undefined |
|||
&& (prev !== "" || keepBlanks) |
|||
) { |
|||
directories.pop(); |
|||
prev = directories.slice(-1)[0] |
|||
} else { |
|||
if (prev === ".") directories.pop(); |
|||
directories.push(directory); |
|||
prev = directory; |
|||
} |
|||
} |
|||
return directories; |
|||
}; |
|||
|
|||
exports.normalize = function (path, keepBlanks) { |
|||
return exports.normalizeArray(path.split("/"), keepBlanks).join("/"); |
|||
}; |
|||
|
|||
exports.dirname = function (path) { |
|||
return path && path.substr(0, path.lastIndexOf("/")) || "."; |
|||
}; |
|||
|
|||
exports.filename = function () { |
|||
throw new Error("path.filename is deprecated. Please use path.basename instead."); |
|||
}; |
|||
exports.basename = function (path, ext) { |
|||
var f = path.substr(path.lastIndexOf("/") + 1); |
|||
if (ext && f.substr(-1 * ext.length) === ext) { |
|||
f = f.substr(0, f.length - ext.length); |
|||
} |
|||
return f; |
|||
}; |
|||
|
|||
exports.extname = function (path) { |
|||
var index = path.lastIndexOf('.'); |
|||
return index < 0 ? '' : path.substring(index); |
|||
}; |
|||
|
|||
exports.exists = function (path, callback) { |
|||
process.binding('fs').stat(path, function (err, stats) { |
|||
if (callback) callback(err ? false : true); |
|||
}); |
|||
}; |
Loading…
Reference in new issue