@auttam/easycli
Version:
A quick and easy way of creating cli for your npm package.
70 lines (69 loc) • 2.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPropertyValue = exports.filterList = exports.separateWords = exports.camelCase = exports.pascalCase = exports.hyphenate = void 0;
function hyphenate(name) {
name = name || '';
name = pascalCase(name);
return name.replace(/([A-Z])/g, ($1, $p, o) => {
return o == 0 ? $1.toLowerCase() : '-' + $1.toLowerCase();
});
}
exports.hyphenate = hyphenate;
function pascalCase(name) {
if (!name)
return name;
let words = name.split(/[-_.,:\s]/);
words = words.map((word) => {
return word.charAt(0).toUpperCase() + word.substr(1);
});
return words.join('');
}
exports.pascalCase = pascalCase;
function camelCase(name) {
name = pascalCase(name);
return name.charAt(0).toLowerCase() + name.substr(1);
}
exports.camelCase = camelCase;
function separateWords(text) {
text = hyphenate(text);
return text.split('-').map((word) => word.charAt(0).toUpperCase() + word.substr(1)).join(' ');
}
exports.separateWords = separateWords;
function filterList(list, filter) {
if (!filter || !list)
return list;
if (typeof filter == 'string') {
filter = { include: [filter] };
}
if (Array.isArray(filter)) {
filter = { include: filter };
}
if (Array.isArray(filter.include)) {
list = list.filter(list => {
var matched = false;
filter.include.forEach((criteria) => {
if (!matched && criteria) {
matched = list.match(new RegExp(criteria));
}
});
return !!matched;
});
}
if (Array.isArray(filter.exclude)) {
list = list.filter(content => {
var matched = false;
filter.exclude.forEach((criteria) => {
if (!matched && criteria) {
matched = content.match(new RegExp(criteria));
}
});
return !matched;
});
}
return list;
}
exports.filterList = filterList;
function getPropertyValue(object, propertyName, defaultValue) {
return object.hasOwnProperty(propertyName) ? object[propertyName] : defaultValue;
}
exports.getPropertyValue = getPropertyValue;