@nick-bull/convert-casing

0.1.1 • Public • Published

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 separator
  • Proper Case: word initial is uppercase, the rest are lower case, space separator
  • PascalCase: word initial is uppercase, the rest are lower case, no separator
  • camelCase: initial and word is lowercase, word initial is uppercase, no separator
  • snake_case: all are lowercase, underscore separator
  • kebab-case: all are lowercase, dash separator
  • MACRO_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

Readme

Keywords

Package Sidebar

Install

npm i @nick-bull/convert-casing

Weekly Downloads

0

Version

0.1.1

License

ISC

Unpacked Size

28.9 kB

Total Files

21

Last publish

Collaborators

  • nick-bull