-
Notifications
You must be signed in to change notification settings - Fork 880
/
to-case.ts
33 lines (32 loc) 路 982 Bytes
/
to-case.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import {TargetCaseType} from '@commitlint/types';
import camelCase from 'lodash.camelcase';
import kebabCase from 'lodash.kebabcase';
import snakeCase from 'lodash.snakecase';
import upperFirst from 'lodash.upperfirst';
import startCase from 'lodash.startcase';
export default function toCase(input: string, target: TargetCaseType): string {
switch (target) {
case 'camel-case':
return camelCase(input);
case 'kebab-case':
return kebabCase(input);
case 'snake-case':
return snakeCase(input);
case 'pascal-case':
return upperFirst(camelCase(input));
case 'start-case':
return startCase(input);
case 'upper-case':
case 'uppercase':
return input.toUpperCase();
case 'sentence-case':
case 'sentencecase':
return upperFirst(input);
case 'lower-case':
case 'lowercase':
case 'lowerCase': // Backwards compat config-angular v4
return input.toLowerCase();
default:
throw new TypeError(`to-case: Unknown target case "${target}"`);
}
}