Package Exports
- @nick-bull/convert-casing
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@nick-bull/convert-casing) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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