Skip to content

Commit e2a414d

Browse files
feature/issue-#30 #47: closed
1 parent 19a9bbe commit e2a414d

File tree

3 files changed

+187
-12
lines changed

3 files changed

+187
-12
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`module/string snapshot 1`] = `"snippetName"`;
4+
5+
exports[`module/string snapshot 2`] = `"snippet-name"`;
6+
7+
exports[`module/string snapshot 3`] = `"snippet_name"`;
8+
9+
exports[`module/string snapshot 4`] = `"SnippetName"`;
10+
11+
exports[`module/string snapshot 5`] = `"SNIPPET-NAME"`;
12+
13+
exports[`module/string snapshot 6`] = `"SNIPPET_NAME"`;
14+
15+
exports[`module/string snapshot 7`] = `true`;
16+
17+
exports[`module/string snapshot 8`] = `false`;
18+
19+
exports[`module/string snapshot 9`] = `false`;
20+
21+
exports[`module/string snapshot 10`] = `false`;
22+
23+
exports[`module/string snapshot 11`] = `false`;
24+
25+
exports[`module/string snapshot 12`] = `false`;
26+
27+
exports[`module/string snapshot 13`] = `false`;
28+
29+
exports[`module/string snapshot 14`] = `true`;
30+
31+
exports[`module/string snapshot 15`] = `false`;
32+
33+
exports[`module/string snapshot 16`] = `false`;
34+
35+
exports[`module/string snapshot 17`] = `false`;
36+
37+
exports[`module/string snapshot 18`] = `false`;
38+
39+
exports[`module/string snapshot 19`] = `false`;
40+
41+
exports[`module/string snapshot 20`] = `false`;
42+
43+
exports[`module/string snapshot 21`] = `true`;
44+
45+
exports[`module/string snapshot 22`] = `false`;
46+
47+
exports[`module/string snapshot 23`] = `false`;
48+
49+
exports[`module/string snapshot 24`] = `false`;
50+
51+
exports[`module/string snapshot 25`] = `false`;
52+
53+
exports[`module/string snapshot 26`] = `false`;
54+
55+
exports[`module/string snapshot 27`] = `false`;
56+
57+
exports[`module/string snapshot 28`] = `true`;
58+
59+
exports[`module/string snapshot 29`] = `false`;
60+
61+
exports[`module/string snapshot 30`] = `false`;
62+
63+
exports[`module/string snapshot 31`] = `false`;
64+
65+
exports[`module/string snapshot 32`] = `false`;
66+
67+
exports[`module/string snapshot 33`] = `false`;
68+
69+
exports[`module/string snapshot 34`] = `false`;
70+
71+
exports[`module/string snapshot 35`] = `true`;
72+
73+
exports[`module/string snapshot 36`] = `false`;
74+
75+
exports[`module/string snapshot 37`] = `false`;
76+
77+
exports[`module/string snapshot 38`] = `false`;
78+
79+
exports[`module/string snapshot 39`] = `false`;
80+
81+
exports[`module/string snapshot 40`] = `false`;
82+
83+
exports[`module/string snapshot 41`] = `false`;
84+
85+
exports[`module/string snapshot 42`] = `true`;

src/modules/string/string.module.ts

Lines changed: 57 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export 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
}

src/modules/string/string.test.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,49 @@ describe('module/string', () => {
7070
expect(module.isUpperSnakeCase(upperKebabCase)).toBe(false)
7171
expect(module.isUpperSnakeCase(upperSnakeCase)).toBe(true)
7272
})
73+
74+
test('snapshot', () => {
75+
expect(module.toCamelCase(lowerKebabCase)).toMatchSnapshot()
76+
expect(module.toLowerKebabCase(lowerKebabCase)).toMatchSnapshot()
77+
expect(module.toLowerSnakeCase(lowerKebabCase)).toMatchSnapshot()
78+
expect(module.toPascalCase(lowerKebabCase)).toMatchSnapshot()
79+
expect(module.toUpperKebabCase(lowerKebabCase)).toMatchSnapshot()
80+
expect(module.toUpperSnakeCase(lowerKebabCase)).toMatchSnapshot()
81+
expect(module.isCamelCase(camelCase)).toMatchSnapshot()
82+
expect(module.isCamelCase(lowerKebabCase)).toMatchSnapshot()
83+
expect(module.isCamelCase(lowerSnakeCase)).toMatchSnapshot()
84+
expect(module.isCamelCase(pascalCase)).toMatchSnapshot()
85+
expect(module.isCamelCase(upperKebabCase)).toMatchSnapshot()
86+
expect(module.isCamelCase(upperSnakeCase)).toMatchSnapshot()
87+
expect(module.isLowerKebabCase(camelCase)).toMatchSnapshot()
88+
expect(module.isLowerKebabCase(lowerKebabCase)).toMatchSnapshot()
89+
expect(module.isLowerKebabCase(lowerSnakeCase)).toMatchSnapshot()
90+
expect(module.isLowerKebabCase(pascalCase)).toMatchSnapshot()
91+
expect(module.isLowerKebabCase(upperKebabCase)).toMatchSnapshot()
92+
expect(module.isLowerKebabCase(upperSnakeCase)).toMatchSnapshot()
93+
expect(module.isLowerSnakeCase(camelCase)).toMatchSnapshot()
94+
expect(module.isLowerSnakeCase(lowerKebabCase)).toMatchSnapshot()
95+
expect(module.isLowerSnakeCase(lowerSnakeCase)).toMatchSnapshot()
96+
expect(module.isLowerSnakeCase(pascalCase)).toMatchSnapshot()
97+
expect(module.isLowerSnakeCase(upperKebabCase)).toMatchSnapshot()
98+
expect(module.isLowerSnakeCase(upperSnakeCase)).toMatchSnapshot()
99+
expect(module.isPascalCase(camelCase)).toMatchSnapshot()
100+
expect(module.isPascalCase(lowerKebabCase)).toMatchSnapshot()
101+
expect(module.isPascalCase(lowerSnakeCase)).toMatchSnapshot()
102+
expect(module.isPascalCase(pascalCase)).toMatchSnapshot()
103+
expect(module.isPascalCase(upperKebabCase)).toMatchSnapshot()
104+
expect(module.isPascalCase(upperSnakeCase)).toMatchSnapshot()
105+
expect(module.isUpperKebabCase(camelCase)).toMatchSnapshot()
106+
expect(module.isUpperKebabCase(lowerKebabCase)).toMatchSnapshot()
107+
expect(module.isUpperKebabCase(lowerSnakeCase)).toMatchSnapshot()
108+
expect(module.isUpperKebabCase(pascalCase)).toMatchSnapshot()
109+
expect(module.isUpperKebabCase(upperKebabCase)).toMatchSnapshot()
110+
expect(module.isUpperKebabCase(upperSnakeCase)).toMatchSnapshot()
111+
expect(module.isUpperSnakeCase(camelCase)).toMatchSnapshot()
112+
expect(module.isUpperSnakeCase(lowerKebabCase)).toMatchSnapshot()
113+
expect(module.isUpperSnakeCase(lowerSnakeCase)).toMatchSnapshot()
114+
expect(module.isUpperSnakeCase(pascalCase)).toMatchSnapshot()
115+
expect(module.isUpperSnakeCase(upperKebabCase)).toMatchSnapshot()
116+
expect(module.isUpperSnakeCase(upperSnakeCase)).toMatchSnapshot()
117+
})
73118
})

0 commit comments

Comments
 (0)