UNPKG

@redocly/theme

Version:

Shared UI components lib

26 lines (20 loc) 602 B
type Casing = 'original' | 'lowercase' | 'uppercase' | 'sentence'; export function changeTextCasing( str: string, casing: Casing | ((str: string) => string) = 'original', ) { if (casing instanceof Function) { return casing(str); } if (casing === 'original' || !str) return str; if (casing === 'lowercase') { return str.toLowerCase(); } if (casing === 'uppercase') { return str.toUpperCase(); } if (casing === 'sentence') { const words = str?.split(/[\s-_]+/); return words.map((word) => word[0].toUpperCase() + word.slice(1).toLowerCase()).join(' '); } }