/** * * Convert a string to kebab case * * 문자열을 케밥 케이스로 변환 * * @param S String / 문자열 * * @returns Kebab case string / 케밥 케이스 문자열 * * @example * type cases = [ * Expect, 'foo-bar-baz'>>, * Expect, 'foo-bar-baz'>>, * Expect, 'foo-bar'>>, * Expect, 'foo_bar'>>, * Expect, 'foo--bar'>>, * Expect, 'a-b-c'>>, * ] * * @link https://www.utilscript.site/docs/usage-string/kebab-case * */ export type KebabCase = S extends `${infer Left}${infer Center}${infer Right}` ? Center extends Uppercase
? Center extends Lowercase
? `${Lowercase}${KebabCase<`${Center}${Right}`>}` : `${Lowercase}-${KebabCase<`${Center}${Right}`>}` : `${Lowercase}${KebabCase<`${Center}${Right}`>}` : Lowercase;