uncase
Version:
Wrapper of change-case to create case converter, validator and etc.
68 lines (64 loc) • 2.39 kB
JavaScript
import { trainCase, snakeCase, sentenceCase, pathCase, pascalSnakeCase, pascalCase, noCase, kebabCase, dotCase, constantCase, capitalCase, camelCase } from 'change-case';
const convertersMap = {
camelCase,
capitalCase,
"Capital Case": capitalCase,
CONSTANT_CASE: constantCase,
constantCase,
"dot.case": dotCase,
dotCase,
"kebab-case": kebabCase,
kebabCase,
noCase,
"no case": noCase,
Pascal_Snake_Case: pascalSnakeCase,
pascalCase,
PascalCase: pascalCase,
pascalSnakeCase,
"path/case": pathCase,
pathCase,
sentenceCase,
"Sentence case": sentenceCase,
snake_case: snakeCase,
snakeCase,
"Train-Case": trainCase,
trainCase
};
function getCaseConverter(caseType, options = {}) {
const convert = convertersMap[caseType];
return (input) => {
const output = convert(input, options);
const changed = output !== input;
return {
changed,
input,
output
};
};
}
function createCaseValidator(caseType) {
const convert = getCaseConverter(caseType);
return (input) => {
if (!isNonEmptyString(input)) return false;
return !convert(input).changed;
};
}
function isNonEmptyString(value) {
return isString(value) && value.length > 0;
}
function isString(value) {
return typeof value === "string";
}
const isCamelCase = (input) => createCaseValidator("camelCase")(input);
const isCapitalCase = (input) => createCaseValidator("capitalCase")(input);
const isConstantCase = (input) => createCaseValidator("constantCase")(input);
const isDotCase = (input) => createCaseValidator("dotCase")(input);
const isKebabCase = (input) => createCaseValidator("kebabCase")(input);
const isNoCase = (input) => createCaseValidator("noCase")(input);
const isPascalCase = (input) => createCaseValidator("pascalCase")(input);
const isPascalSnakeCase = (input) => createCaseValidator("pascalSnakeCase")(input);
const isPathCase = (input) => createCaseValidator("pathCase")(input);
const isSentenceCase = (input) => createCaseValidator("sentenceCase")(input);
const isSnakeCase = (input) => createCaseValidator("snakeCase")(input);
const isTrainCase = (input) => createCaseValidator("trainCase")(input);
export { convertersMap as c, getCaseConverter as g, isCamelCase, isCapitalCase, isConstantCase, isDotCase, isKebabCase, isNoCase, isPascalCase, isPascalSnakeCase, isPathCase, isSentenceCase, isSnakeCase, isTrainCase };