console-toolkit
Version:
Toolkit to produce a fancy console output (boxes, tables, charts, colors).
42 lines (33 loc) • 1.74 kB
JavaScript
export const capitalize = name => (name ? name[0].toUpperCase() + name.substring(1).toLowerCase() : name);
export const toCamelCase = names =>
names.map((name, index) => (index ? capitalize(name) : name.toLowerCase())).join('');
export const fromCamelCase = name => name.split(/(?=[A-Z])/g);
export const toPascalCase = names => names.map(name => capitalize(name)).join('');
export const fromPascalCase = name => name.split(/(?=[A-Z])/g);
export const toAllCapsSnakeCase = names => names.map(name => name.toUpperCase()).join('_');
export const toSnakeCase = names => names.map(name => name.toLowerCase()).join('_');
export const fromSnakeCase = name => name.split('_');
export const toKebabCase = names => names.map(name => name.toLowerCase()).join('-');
export const fromKebabCase = name => name.split('-');
export const addGetter = (Class, name, getter, force) => {
const object = Class.prototype || Class;
if (!force && object.hasOwnProperty(name)) return object;
return Object.defineProperty(object, name, {configurable: true, enumerable: true, get: getter});
};
export const addGetters = (Class, getters, force) => {
for (const [name, value] of Object.entries(getters)) {
addGetter(Class, name, value, force);
}
};
export const addAlias = (Class, name, oldName, force) => {
const object = Class.prototype || Class;
if (!force && object.hasOwnProperty(name)) return object;
const descriptor = Object.getOwnPropertyDescriptor(object, oldName);
if (!descriptor) return object;
return Object.defineProperty(object, name, descriptor);
};
export const addAliases = (Class, aliases, force) => {
for (const [name, oldName] of Object.entries(aliases)) {
addAlias(Class, name, oldName, force);
}
};