@nick-bull/convert-casing
v0.1.1
Published
Change the casing of an input
Downloads
26
Readme
Usage
import {
casings,
convertCasing,
} from '@nick-bull/convert-casing';
const vegetables = 'eatMoreVegetables';
const kebabVegetables = convertCasing(vegetables, casings.camel, casings.kebab);
console.log(kebabVegetables);
// Outputs 'eat-more-vegetables'
Casings
There are several predefined casings available:
Sentence case
: initial is uppercase, the rest are lower case, space separatorProper Case
: word initial is uppercase, the rest are lower case, space separatorPascalCase
: word initial is uppercase, the rest are lower case, no separatorcamelCase
: initial and word is lowercase, word initial is uppercase, no separatorsnake_case
: all are lowercase, underscore separatorkebab-case
: all are lowercase, dash separatorMACRO_CASE
: all are uppercase, underscore separator
Casings are simple objects, so feel free to extend the casings
object. As Typescript definitions:
type Casing {
separator: string | Separator,
wordCaseType: WordCase,
wordInitialCaseType: InitialCase,
initialCaseType: InitialCase,
};
enum WordCase = {
upper,
lower,
alternating,
};
enum InitialCase = {
upper,
lower,
};
enum Separator = {
none,
upper,
lower,
};
Object key casings
There's a utility to convert object keys provided:
import {
casings,
convertKeyCasings,
} from '@nick-bull/convert-casing';
const catSettings = {
numberOfLegs: 2,
defaultHeadSize: headSizes.largeCatHead,
catType: catTypes.lolcat,
};
console.dir(convertKeyCasings(catSettings, casings.camel, casings.macro));
/*
Outputs {
NUMBER_OF_LEGS: 2,
DEFAULT_HEAD_SIZE: headSizes.largeCatHead,
CAT_TYPE: catTypes.lolCat,
}
*/
Case conversion factory
It can get tedious having to type the same casing types for conversion. Build a converter instead! Great for callback functions, too
import {
casings,
createCasingConvertor,
} from '@nick-bull/convert-casing';
const caseConvertor = createCasingConvertor(casings.sentence, casings.pascal);
console.log(caseConvertor('Not great not terrible'));
// Outputs 'NotGoodNotTerrible';
const phrases = [
'One does not simply convert',
'It is wednesday',
'Much conversion very converted',
];
console.dir(phrases.map(caseConvertor));
/*
Outputs [
'OneDoesNotSimplyConvert',
'ItIsWednesday',
'MuchConversionVeryConverted',
]
*/
Validate a casing
import {
casings,
validateCasing,
} from '@nick-bull/convert-casing';
const inconsistentlyCased = [
'Enterprise Grade Quantum Dynamic',
'State Of The Art',
'Agile Cashflow Increasing',
'cAsE vAlIdAtRo',
];
const isCasingValid = inconsistentlyCased.every(sentence =>
validateCasing(sentence, casings.proper);
);
console.log(isCasingValid);
// Outputs false