feat: reject token if it's not valid
This commit is contained in:
34
src/libs/changeStringCase.ts
Normal file
34
src/libs/changeStringCase.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
export enum Case {
|
||||
camelCase,
|
||||
snake_case,
|
||||
}
|
||||
|
||||
export function changeStringCase<T>(
|
||||
str: string,
|
||||
currentCase: Case,
|
||||
newCase: Case,
|
||||
): string {
|
||||
if (currentCase === newCase) {
|
||||
return str;
|
||||
}
|
||||
|
||||
const currentSeparator = currentCase === Case.snake_case ? "_" : /(?=[A-Z])/;
|
||||
const words = str.split(currentSeparator);
|
||||
|
||||
return words
|
||||
.map((word, index) => {
|
||||
switch (newCase) {
|
||||
case Case.camelCase:
|
||||
if (index === 0) {
|
||||
return word.toLowerCase();
|
||||
}
|
||||
|
||||
return word[0].toUpperCase() + word.slice(1).toLowerCase();
|
||||
case Case.snake_case:
|
||||
return word.toLowerCase();
|
||||
default:
|
||||
throw new Error("Unknown case");
|
||||
}
|
||||
})
|
||||
.join(newCase === Case.snake_case ? "_" : "");
|
||||
}
|
||||
Reference in New Issue
Block a user