@qinglian/case-tool
Version:
a tool used to validate name case & translate
79 lines (78 loc) • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.camelToPascal = exports.kebabToPascal = exports.snakeToPascal = exports.isPascalCase = exports.isKebabCase = exports.isCamelCase = exports.isSnakeCase = void 0;
/**
* validate name is snake case
* @example a_b
* @param name
* @returns
*/
const isSnakeCase = (name) => {
return /^(([a-z0-9])_?)+$/.test(name);
};
exports.isSnakeCase = isSnakeCase;
/**
* validate name is camel case
* @example userName
* @param name
* @returns
*/
const isCamelCase = (name) => {
return /^([a-z]([A-Za-z0-9]{0,}))(([A-Z]([A-Za-z0-9]{0,})){0,})$/.test(name);
};
exports.isCamelCase = isCamelCase;
/**
* validate name is kebab case
* @example a-b
* @param name
* @returns
*/
const isKebabCase = (name) => {
return /^(([a-z0-9])-?)+$/.test(name);
};
exports.isKebabCase = isKebabCase;
/**
* validate name is pascal case
* @example UserName
* @param name
* @returns
*/
const isPascalCase = (name) => {
return /^([A-Z]([A-Za-z0-9]{0,}))+$/.test(name);
};
exports.isPascalCase = isPascalCase;
/**
* convert snake case to pascal case
* @param name
* @returns
*/
const snakeToPascal = (name) => {
return name
.split("_")
.filter(Boolean)
.map((i) => `${i[0].toUpperCase()}${i.slice(1)}`)
.join("");
};
exports.snakeToPascal = snakeToPascal;
/**
* convert kebab case to pascal case
* @param name
* @returns
*/
const kebabToPascal = (name) => {
return name
.split("-")
.filter(Boolean)
.map((i) => `${i[0].toUpperCase()}${i.slice(1)}`)
.join("");
};
exports.kebabToPascal = kebabToPascal;
/**
* convert camel case to pascal case
* @param name
* @returns
*/
const camelToPascal = (name) => {
return name ? `${name[0].toUpperCase()}${name.slice(1)}` : name;
};
exports.camelToPascal = camelToPascal;