From 0fd395ab37aefd2d50854f0556a4311dccc6f45a Mon Sep 17 00:00:00 2001 From: Masaki Yoshida Date: Mon, 25 Jun 2018 14:07:53 +0900 Subject: [PATCH] Fix ToDBName (#1941) Don't place '_' before number. - NG: SHA256Hash -> sha_256_hash - OK: SHA256Hash -> sha256_hash --- utils.go | 12 +++++++----- utils_test.go | 3 +++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/utils.go b/utils.go index dfaae939..99b532c5 100644 --- a/utils.go +++ b/utils.go @@ -78,16 +78,18 @@ func ToDBName(name string) string { } var ( - value = commonInitialismsReplacer.Replace(name) - buf = bytes.NewBufferString("") - lastCase, currCase, nextCase strCase + value = commonInitialismsReplacer.Replace(name) + buf = bytes.NewBufferString("") + lastCase, currCase, nextCase, nextNumber strCase ) for i, v := range value[:len(value)-1] { nextCase = strCase(value[i+1] >= 'A' && value[i+1] <= 'Z') + nextNumber = strCase(value[i+1] >= '0' && value[i+1] <= '9') + if i > 0 { if currCase == upper { - if lastCase == upper && nextCase == upper { + if lastCase == upper && (nextCase == upper || nextNumber == upper) { buf.WriteRune(v) } else { if value[i-1] != '_' && value[i+1] != '_' { @@ -97,7 +99,7 @@ func ToDBName(name string) string { } } else { buf.WriteRune(v) - if i == len(value)-2 && nextCase == upper { + if i == len(value)-2 && (nextCase == upper && nextNumber == lower) { buf.WriteRune('_') } } diff --git a/utils_test.go b/utils_test.go index 152296d2..086c4450 100644 --- a/utils_test.go +++ b/utils_test.go @@ -15,6 +15,9 @@ func TestToDBNameGenerateFriendlyName(t *testing.T) { "AbcAndJkl": "abc_and_jkl", "EmployeeID": "employee_id", "SKU_ID": "sku_id", + "UTF8": "utf8", + "Level1": "level1", + "SHA256Hash": "sha256_hash", "FieldX": "field_x", "HTTPAndSMTP": "http_and_smtp", "HTTPServerHandlerForURLID": "http_server_handler_for_url_id",