From c4fe39376cba7a27388b7c9b2cce1e8b0bb3baa4 Mon Sep 17 00:00:00 2001 From: Dane Strandboge <136023093+DStrand1@users.noreply.github.com> Date: Mon, 24 Feb 2025 08:51:00 -0600 Subject: [PATCH] fix(internal): Fix plural acronyms in SnakeCase function (#16530) --- internal/internal.go | 11 +++++++++-- internal/internal_test.go | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/internal/internal.go b/internal/internal.go index 9344593b2..aa50ddaad 100644 --- a/internal/internal.go +++ b/internal/internal.go @@ -112,8 +112,15 @@ func SnakeCase(in string) string { var out []rune for i := 0; i < length; i++ { - if i > 0 && unicode.IsUpper(runes[i]) && ((i+1 < length && unicode.IsLower(runes[i+1])) || unicode.IsLower(runes[i-1])) { - out = append(out, '_') + if i > 0 && unicode.IsUpper(runes[i]) { + prevLower := unicode.IsLower(runes[i-1]) + nextLower := i+1 < length && unicode.IsLower(runes[i+1]) + // Special case for plural acronyms + nextPlural := i+1 < length && runes[i+1] == 's' + + if prevLower || (nextLower && !nextPlural) { + out = append(out, '_') + } } out = append(out, unicode.ToLower(runes[i])) } diff --git a/internal/internal_test.go b/internal/internal_test.go index f75f9b010..9834f66ea 100644 --- a/internal/internal_test.go +++ b/internal/internal_test.go @@ -34,6 +34,7 @@ var tests = []SnakeTest{ {"LinuxMOTD", "linux_motd"}, {"OMGWTFBBQ", "omgwtfbbq"}, {"omg_wtf_bbq", "omg_wtf_bbq"}, + {"ConsumedLCUs", "consumed_lcus"}, } func TestSnakeCase(t *testing.T) {