From 198ca931c72a4aae00d03776eb6dec677e0f23b1 Mon Sep 17 00:00:00 2001 From: Ian Coleman Date: Wed, 13 Nov 2019 09:25:14 +1100 Subject: [PATCH] Fix acronyms for camel case --- acronyms.go | 5 +++++ camel.go | 6 ++++++ camel_test.go | 2 ++ 3 files changed, 13 insertions(+) create mode 100644 acronyms.go diff --git a/acronyms.go b/acronyms.go new file mode 100644 index 0000000..3b06064 --- /dev/null +++ b/acronyms.go @@ -0,0 +1,5 @@ +package strcase + +var uppercaseAcronym = map[string]bool{ + "ID": true, +} diff --git a/camel.go b/camel.go index c2f01b1..4aab39a 100644 --- a/camel.go +++ b/camel.go @@ -60,6 +60,9 @@ func toCamelInitCase(s string, initCase bool) string { // ToCamel converts a string to CamelCase func ToCamel(s string) string { + if uppercaseAcronym[s] { + s = strings.ToLower(s) + } return toCamelInitCase(s, true) } @@ -68,6 +71,9 @@ func ToLowerCamel(s string) string { if s == "" { return s } + if uppercaseAcronym[s] { + s = strings.ToLower(s) + } if r := rune(s[0]); r >= 'A' && r <= 'Z' { s = strings.ToLower(string(r)) + s[1:] } diff --git a/camel_test.go b/camel_test.go index f1f71ba..e82e53d 100644 --- a/camel_test.go +++ b/camel_test.go @@ -40,6 +40,7 @@ func TestToCamel(t *testing.T) { {"AnyKind of_string", "AnyKindOfString"}, {"odd-fix", "OddFix"}, {"numbers2And55with000", "Numbers2And55With000"}, + {"ID", "Id"}, } for _, i := range cases { in := i[0] @@ -58,6 +59,7 @@ func TestToLowerCamel(t *testing.T) { {"", ""}, {"AnyKind of_string", "anyKindOfString"}, {"AnyKind.of-string", "anyKindOfString"}, + {"ID", "id"}, } for _, i := range cases { in := i[0]