Skip to content

Commit ce2d244

Browse files
authored
CamelCase: Add support for splitOnNumbers option (#1290)
1 parent ff32c66 commit ce2d244

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

source/camel-case.d.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import type {ApplyDefaultOptions} from './internal/index.d.ts';
2-
import type {Words} from './words.d.ts';
2+
import type {Words, WordsOptions} from './words.d.ts';
33

44
/**
55
CamelCase options.
66
77
@see {@link CamelCase}
88
*/
9-
export type CamelCaseOptions = {
9+
export type CamelCaseOptions = WordsOptions & {
1010
/**
1111
Whether to preserved consecutive uppercase letter.
1212
@@ -16,6 +16,7 @@ export type CamelCaseOptions = {
1616
};
1717

1818
export type _DefaultCamelCaseOptions = {
19+
splitOnNumbers: true;
1920
preserveConsecutiveUppercase: false;
2021
};
2122

@@ -83,7 +84,7 @@ export type CamelCase<Type, Options extends CamelCaseOptions = {}> = Type extend
8384
? string extends Type
8485
? Type
8586
: Uncapitalize<CamelCaseFromArray<
86-
Words<Type extends Uppercase<Type> ? Lowercase<Type> : Type>,
87+
Words<Type extends Uppercase<Type> ? Lowercase<Type> : Type, Options>,
8788
ApplyDefaultOptions<CamelCaseOptions, _DefaultCamelCaseOptions, Options>
8889
>>
8990
: Type;

test-d/camel-case.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,11 @@ expectType<CamelCase<'foo\tBAR-Biz_BUZZ'>>('fooBarBizBuzz');
7979

8080
expectType<CamelCase<string, {preserveConsecutiveUppercase: true}>>('string' as string);
8181
expectType<CamelCase<string>>('string' as string);
82+
83+
// Test splitOnNumbers option
84+
expectType<'a1bText'>('' as CamelCase<'a1b_text', {splitOnNumbers: false}>);
85+
expectType<'a1BText'>('' as CamelCase<'a1b_text', {splitOnNumbers: true}>);
86+
expectType<'a1BText'>('' as CamelCase<'a1b_text'>);
87+
88+
expectType<'p2pNetwork'>('' as CamelCase<'p2pNetwork', {splitOnNumbers: false}>);
89+
expectType<'p2PNetwork'>('' as CamelCase<'p2pNetwork', {splitOnNumbers: true}>);

0 commit comments

Comments
 (0)