extra-path
Version:
Useful additions to inbuilt path module.
91 lines (86 loc) • 2.58 kB
JavaScript
;
var path = require('path');
function IDENTITY(v) {
return v;
}
function toKebabCase(x, re = null, sep = "-") {
var words = x.split(re || /[^0-9A-Za-z]+/g).filter(IDENTITY);
for (var i = 0, I = words.length; i < I; ++i) {
words[i] = words[i].replace(/[A-Z]+/g, m => m.length === 1 ? sep + m : sep + m.slice(0, -1) + sep + m.slice(-1));
if (words[i].startsWith(sep))
words[i] = words[i].slice(sep.length);
}
return words.join(sep).toLowerCase();
}
function filename(pth) {
return path.basename(pth, path.extname(pth));
}
function symbolname(pth) {
return filename(pth).replace(/[^\w$]+/g, "_");
}
function keywordname(pth) {
return toKebabCase(filename(pth));
}
Object.defineProperty(exports, "basename", {
enumerable: true,
get: function () { return path.basename; }
});
Object.defineProperty(exports, "delimiter", {
enumerable: true,
get: function () { return path.delimiter; }
});
Object.defineProperty(exports, "dirname", {
enumerable: true,
get: function () { return path.dirname; }
});
Object.defineProperty(exports, "extname", {
enumerable: true,
get: function () { return path.extname; }
});
Object.defineProperty(exports, "format", {
enumerable: true,
get: function () { return path.format; }
});
Object.defineProperty(exports, "isAbsolute", {
enumerable: true,
get: function () { return path.isAbsolute; }
});
Object.defineProperty(exports, "join", {
enumerable: true,
get: function () { return path.join; }
});
Object.defineProperty(exports, "normalize", {
enumerable: true,
get: function () { return path.normalize; }
});
Object.defineProperty(exports, "parse", {
enumerable: true,
get: function () { return path.parse; }
});
Object.defineProperty(exports, "posix", {
enumerable: true,
get: function () { return path.posix; }
});
Object.defineProperty(exports, "relative", {
enumerable: true,
get: function () { return path.relative; }
});
Object.defineProperty(exports, "resolve", {
enumerable: true,
get: function () { return path.resolve; }
});
Object.defineProperty(exports, "sep", {
enumerable: true,
get: function () { return path.sep; }
});
Object.defineProperty(exports, "toNamespacedPath", {
enumerable: true,
get: function () { return path.toNamespacedPath; }
});
Object.defineProperty(exports, "win32", {
enumerable: true,
get: function () { return path.win32; }
});
exports.filename = filename;
exports.keywordname = keywordname;
exports.symbolname = symbolname;