fix style in path.js
This commit is contained in:
parent
5890272538
commit
6063ea62df
19
lib/path.js
19
lib/path.js
@ -1,8 +1,8 @@
|
|||||||
|
|
||||||
function validPathPart (p, keepBlanks) {
|
function validPathPart (p, keepBlanks) {
|
||||||
return typeof p === "string" && (p || keepBlanks);
|
return typeof p === "string" && (p || keepBlanks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
exports.join = function () {
|
exports.join = function () {
|
||||||
var args = Array.prototype.slice.call(arguments);
|
var args = Array.prototype.slice.call(arguments);
|
||||||
// edge case flag to switch into url-resolve-mode
|
// edge case flag to switch into url-resolve-mode
|
||||||
@ -14,32 +14,42 @@ exports.join = function () {
|
|||||||
var joined = exports.normalizeArray(args, keepBlanks).join("/");
|
var joined = exports.normalizeArray(args, keepBlanks).join("/");
|
||||||
return joined;
|
return joined;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
exports.split = function (path, keepBlanks) {
|
exports.split = function (path, keepBlanks) {
|
||||||
// split based on /, but only if that / is not at the start or end.
|
// split based on /, but only if that / is not at the start or end.
|
||||||
return exports.normalizeArray(path.split(/^|\/(?!$)/), keepBlanks);
|
return exports.normalizeArray(path.split(/^|\/(?!$)/), keepBlanks);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
function cleanArray (parts, keepBlanks) {
|
function cleanArray (parts, keepBlanks) {
|
||||||
var i = 0;
|
var i = 0;
|
||||||
var l = parts.length - 1;
|
var l = parts.length - 1;
|
||||||
var stripped = false;
|
var stripped = false;
|
||||||
|
|
||||||
// strip leading empty args
|
// strip leading empty args
|
||||||
while (i < l && !validPathPart(parts[i], keepBlanks)) {
|
while (i < l && !validPathPart(parts[i], keepBlanks)) {
|
||||||
stripped = true;
|
stripped = true;
|
||||||
i ++;
|
i ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// strip tailing empty args
|
// strip tailing empty args
|
||||||
while (l >= i && !validPathPart(parts[l], keepBlanks)) {
|
while (l >= i && !validPathPart(parts[l], keepBlanks)) {
|
||||||
stripped = true;
|
stripped = true;
|
||||||
l --;
|
l --;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stripped) {
|
if (stripped) {
|
||||||
// if l chopped all the way back to i, then this is empty
|
// if l chopped all the way back to i, then this is empty
|
||||||
parts = Array.prototype.slice.call(parts, i, l + 1);
|
parts = Array.prototype.slice.call(parts, i, l + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return parts.filter(function (p) { return validPathPart(p, keepBlanks) })
|
return parts.filter(function (p) { return validPathPart(p, keepBlanks) })
|
||||||
.join('/')
|
.join('/')
|
||||||
.split(/^|\/(?!$)/);
|
.split(/^|\/(?!$)/);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
exports.normalizeArray = function (original, keepBlanks) {
|
exports.normalizeArray = function (original, keepBlanks) {
|
||||||
var parts = cleanArray(original, keepBlanks);
|
var parts = cleanArray(original, keepBlanks);
|
||||||
if (!parts.length || (parts.length === 1 && !parts[0])) return ["."];
|
if (!parts.length || (parts.length === 1 && !parts[0])) return ["."];
|
||||||
@ -48,6 +58,7 @@ exports.normalizeArray = function (original, keepBlanks) {
|
|||||||
// leading/trailing invalids have been stripped off.
|
// leading/trailing invalids have been stripped off.
|
||||||
// if it comes in starting with a slash, or ending with a slash,
|
// if it comes in starting with a slash, or ending with a slash,
|
||||||
var leadingSlash = (parts[0].charAt(0) === "/");
|
var leadingSlash = (parts[0].charAt(0) === "/");
|
||||||
|
|
||||||
if (leadingSlash) parts[0] = parts[0].substr(1);
|
if (leadingSlash) parts[0] = parts[0].substr(1);
|
||||||
var last = parts.slice(-1)[0];
|
var last = parts.slice(-1)[0];
|
||||||
var tailingSlash = (last.substr(-1) === "/");
|
var tailingSlash = (last.substr(-1) === "/");
|
||||||
@ -100,10 +111,12 @@ exports.normalizeArray = function (original, keepBlanks) {
|
|||||||
return directories;
|
return directories;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
exports.normalize = function (path, keepBlanks) {
|
exports.normalize = function (path, keepBlanks) {
|
||||||
return exports.join(path, keepBlanks || false);
|
return exports.join(path, keepBlanks || false);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
exports.dirname = function (path) {
|
exports.dirname = function (path) {
|
||||||
if (path.length > 1 && '/' === path[path.length-1]) {
|
if (path.length > 1 && '/' === path[path.length-1]) {
|
||||||
path = path.replace(/\/+$/, '');
|
path = path.replace(/\/+$/, '');
|
||||||
@ -119,6 +132,7 @@ exports.dirname = function (path) {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
exports.basename = function (path, ext) {
|
exports.basename = function (path, ext) {
|
||||||
var f = path.substr(path.lastIndexOf("/") + 1);
|
var f = path.substr(path.lastIndexOf("/") + 1);
|
||||||
if (ext && f.substr(-1 * ext.length) === ext) {
|
if (ext && f.substr(-1 * ext.length) === ext) {
|
||||||
@ -127,6 +141,7 @@ exports.basename = function (path, ext) {
|
|||||||
return f;
|
return f;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
exports.extname = function (path) {
|
exports.extname = function (path) {
|
||||||
var dot = path.lastIndexOf('.'),
|
var dot = path.lastIndexOf('.'),
|
||||||
slash = path.lastIndexOf('/');
|
slash = path.lastIndexOf('/');
|
||||||
@ -136,12 +151,14 @@ exports.extname = function (path) {
|
|||||||
return dot <= slash + 1 ? '' : path.substring(dot);
|
return dot <= slash + 1 ? '' : path.substring(dot);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
exports.exists = function (path, callback) {
|
exports.exists = function (path, callback) {
|
||||||
process.binding('fs').stat(path, function (err, stats) {
|
process.binding('fs').stat(path, function (err, stats) {
|
||||||
if (callback) callback(err ? false : true);
|
if (callback) callback(err ? false : true);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
exports.existsSync = function (path) {
|
exports.existsSync = function (path) {
|
||||||
try {
|
try {
|
||||||
process.binding('fs').stat(path);
|
process.binding('fs').stat(path);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user