UNPKG

uncase

Version:

Wrapper of change-case to create case converter, validator and etc.

68 lines (64 loc) 2.39 kB
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 };