JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q39037F
  • License ISC

Change the casing of an input

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 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