11export class ModuleString {
2- public toCamelCase ( stringInKebabCase : string ) : string {
3- if ( stringInKebabCase . length === 0 ) return ''
2+ public toCamelCase ( stringInAnyCase : string ) : string {
3+ if ( stringInAnyCase . length === 0 ) return ''
4+ const stringInKebabCase = this . anyCaseToKebabCase ( stringInAnyCase )
45 const array = stringInKebabCase . split ( '-' )
56 const firstWord = array [ 0 ]
67 const otherWord = array . map ( ( item , index ) => {
@@ -12,32 +13,37 @@ export class ModuleString {
1213 return `${ firstWord } ${ otherWord . join ( '' ) } `
1314 }
1415
15- public toUpperSnakeCase ( stringInKebabCase : string ) : string {
16- if ( stringInKebabCase . length === 0 ) return ''
16+ public toUpperSnakeCase ( stringInAnyCase : string ) : string {
17+ if ( stringInAnyCase . length === 0 ) return ''
18+ const stringInKebabCase = this . anyCaseToKebabCase ( stringInAnyCase )
1719 const array = stringInKebabCase . split ( '-' )
1820 const string = array . map ( ( item ) => item . toUpperCase ( ) )
1921 return string . join ( '_' )
2022 }
2123
22- public toLowerSnakeCase ( stringInKebabCase : string ) : string {
23- if ( stringInKebabCase . length === 0 ) return ''
24+ public toLowerSnakeCase ( stringInAnyCase : string ) : string {
25+ if ( stringInAnyCase . length === 0 ) return ''
26+ const stringInKebabCase = this . anyCaseToKebabCase ( stringInAnyCase )
2427 const array = stringInKebabCase . split ( '-' )
2528 const string = array . map ( ( item ) => item . toLowerCase ( ) )
2629 return string . join ( '_' )
2730 }
2831
29- public toUpperKebabCase ( stringInKebabCase : string ) : string {
30- if ( stringInKebabCase . length === 0 ) return ''
32+ public toUpperKebabCase ( stringInAnyCase : string ) : string {
33+ if ( stringInAnyCase . length === 0 ) return ''
34+ const stringInKebabCase = this . anyCaseToKebabCase ( stringInAnyCase )
3135 return stringInKebabCase . toUpperCase ( )
3236 }
3337
34- public toLowerKebabCase ( stringInKebabCase : string ) : string {
35- if ( stringInKebabCase . length === 0 ) return ''
38+ public toLowerKebabCase ( stringInAnyCase : string ) : string {
39+ if ( stringInAnyCase . length === 0 ) return ''
40+ const stringInKebabCase = this . anyCaseToKebabCase ( stringInAnyCase )
3641 return stringInKebabCase . toLowerCase ( )
3742 }
3843
39- public toPascalCase ( stringInKebabCase : string ) : string {
40- if ( stringInKebabCase . length === 0 ) return ''
44+ public toPascalCase ( stringInAnyCase : string ) : string {
45+ if ( stringInAnyCase . length === 0 ) return ''
46+ const stringInKebabCase = this . anyCaseToKebabCase ( stringInAnyCase )
4147 const array = stringInKebabCase . split ( '-' )
4248 const firstWord = `${ array [ 0 ] [ 0 ] . toUpperCase ( ) } ${ array [ 0 ] . substring ( 1 ) } `
4349 const otherWord = array . map ( ( item , index ) => {
@@ -128,4 +134,43 @@ export class ModuleString {
128134 }
129135 return false
130136 }
137+
138+ private anyCaseToKebabCase ( stringInAnyCase : string ) : string {
139+ if ( stringInAnyCase . length === 0 ) {
140+ return stringInAnyCase
141+ }
142+ if ( this . isCamelCase ( stringInAnyCase ) ) {
143+ return stringInAnyCase
144+ . split ( / (? = [ A - Z ] ) / )
145+ . map ( ( item ) => item . toLowerCase ( ) )
146+ . toString ( )
147+ . replaceAll ( ',' , '-' )
148+ }
149+ if ( this . isLowerKebabCase ( stringInAnyCase ) ) {
150+ return stringInAnyCase
151+ }
152+ if ( this . isLowerSnakeCase ( stringInAnyCase ) ) {
153+ return stringInAnyCase . replaceAll ( '_' , '-' )
154+ }
155+ if ( this . isPascalCase ( stringInAnyCase ) ) {
156+ return (
157+ stringInAnyCase . charAt ( 0 ) . toLowerCase ( ) +
158+ stringInAnyCase
159+ . slice ( 1 )
160+ . split ( / (? = [ A - Z ] ) / )
161+ . map ( ( item ) => item . toLowerCase ( ) )
162+ . toString ( )
163+ . replaceAll ( ',' , '-' )
164+ )
165+ }
166+ if ( this . isUpperKebabCase ( stringInAnyCase ) ) {
167+ return stringInAnyCase . toLowerCase ( )
168+ }
169+
170+ if ( this . isUpperSnakeCase ( stringInAnyCase ) ) {
171+ return stringInAnyCase . replaceAll ( '_' , '-' ) . toLowerCase ( )
172+ }
173+
174+ return stringInAnyCase
175+ }
131176}
0 commit comments