1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-16 18:52:27 +08:00

clean code

This commit is contained in:
dudaodong
2022-12-13 19:52:37 +08:00
parent 76bdec2b54
commit d0576e028f
2 changed files with 44 additions and 31 deletions

View File

@@ -12,8 +12,6 @@ import (
// CamelCase covert string to camelCase string. // CamelCase covert string to camelCase string.
func CamelCase(s string) string { func CamelCase(s string) string {
s = strings.ReplaceAll(s, " ", "")
var runes [][]rune var runes [][]rune
lastCharType := 0 lastCharType := 0
charType := 0 charType := 0
@@ -39,8 +37,6 @@ func CamelCase(s string) string {
lastCharType = charType lastCharType = charType
} }
result := ""
for i := 0; i < len(runes)-1; i++ { for i := 0; i < len(runes)-1; i++ {
if unicode.IsUpper(runes[i][0]) && unicode.IsLower(runes[i+1][0]) { if unicode.IsUpper(runes[i][0]) && unicode.IsLower(runes[i+1][0]) {
runes[i+1] = append([]rune{runes[i][len(runes[i])-1]}, runes[i+1]...) runes[i+1] = append([]rune{runes[i][len(runes[i])-1]}, runes[i+1]...)
@@ -59,6 +55,8 @@ func CamelCase(s string) string {
} }
} }
result := ""
// capitalize // capitalize
for i, r := range filterRunes { for i, r := range filterRunes {
if i == 0 { if i == 0 {
@@ -160,14 +158,10 @@ func PadStart(source string, size int, padStr string) string {
// KebabCase covert string to kebab-case // KebabCase covert string to kebab-case
func KebabCase(s string) string { func KebabCase(s string) string {
if len(s) == 0 { re := regexp.MustCompile(`[\W|_]+`)
return "" space := " "
} match := re.ReplaceAllString(s, space)
rs := strings.Split(match, space)
regex := regexp.MustCompile(`[\W|_]+`)
blankSpace := " "
match := regex.ReplaceAllString(s, blankSpace)
rs := strings.Split(match, blankSpace)
var result []string var result []string
for _, v := range rs { for _, v := range rs {
@@ -175,6 +169,9 @@ func KebabCase(s string) string {
if len(splitWords) > 0 { if len(splitWords) > 0 {
result = append(result, splitWords...) result = append(result, splitWords...)
} }
// if v != "" {
// result = append(result, strings.ToLower(v))
// }
} }
return strings.Join(result, "-") return strings.Join(result, "-")
@@ -182,14 +179,10 @@ func KebabCase(s string) string {
// SnakeCase covert string to snake_case // SnakeCase covert string to snake_case
func SnakeCase(s string) string { func SnakeCase(s string) string {
if len(s) == 0 { re := regexp.MustCompile(`[\W|_]+`)
return "" space := " "
} match := re.ReplaceAllString(s, space)
rs := strings.Split(match, space)
regex := regexp.MustCompile(`[\W|_]+`)
blankSpace := " "
match := regex.ReplaceAllString(s, blankSpace)
rs := strings.Split(match, blankSpace)
var result []string var result []string
for _, v := range rs { for _, v := range rs {

View File

@@ -48,24 +48,44 @@ func TestCapitalize(t *testing.T) {
func TestKebabCase(t *testing.T) { func TestKebabCase(t *testing.T) {
assert := internal.NewAssert(t, "TestKebabCase") assert := internal.NewAssert(t, "TestKebabCase")
assert.Equal("foo-bar", KebabCase("Foo Bar-")) cases := map[string]string{
assert.Equal("foo-bar", KebabCase("foo_Bar")) "Foo Bar-": "foo-bar",
assert.Equal("foo-bar", KebabCase("fooBar")) "foo_Bar": "foo-bar",
assert.Equal("f-o-o-b-a-r", KebabCase("__FOO_BAR__")) "fooBar": "foo-bar",
"FOOBAR": "f-o-o-b-a-r",
"FOO_BAR": "f-o-o-b-a-r",
"__FOO_BAR__": "f-o-o-b-a-r",
"$foo@Bar": "foo-bar",
" $#$Foo 22 bar ": "foo-22-bar",
}
assert.NotEqual("foo_bar", KebabCase("fooBar")) for k, v := range cases {
assert.Equal(v, KebabCase(k))
}
assert.Equal("", KebabCase(""))
// assert.Equal("foo-1-1bar", KebabCase("Foo-#1😄$_%^&*(1bar"))
} }
func TestSnakeCase(t *testing.T) { func TestSnakeCase(t *testing.T) {
assert := internal.NewAssert(t, "TestSnakeCase") assert := internal.NewAssert(t, "TestSnakeCase")
assert.Equal("foo_bar", SnakeCase("Foo Bar-")) cases := map[string]string{
assert.Equal("foo_bar", SnakeCase("foo_Bar")) "Foo Bar-": "foo_bar",
assert.Equal("foo_bar", SnakeCase("fooBar")) "foo_Bar": "foo_bar",
assert.Equal("f_o_o_b_a_r", SnakeCase("__FOO_BAR__")) "fooBar": "foo_bar",
assert.Equal("a_bbc_s_a_b_b_c", SnakeCase("aBbc-s$@a&%_B.B^C")) "__FOO_BAR__": "f_o_o_b_a_r",
"$foo@Bar": "foo_bar",
" $#$Foo 22 bar ": "foo_22_bar",
"aBbc-s$@a&%_B.B^C": "a_bbc_s_a_b_b_c",
}
assert.NotEqual("foo-bar", SnakeCase("foo_Bar")) for k, v := range cases {
assert.Equal(v, SnakeCase(k))
}
assert.Equal("", SnakeCase(""))
} }
func TestUpperFirst(t *testing.T) { func TestUpperFirst(t *testing.T) {