diff --git a/gen/generator.go b/gen/generator.go index 068cf73..4158c02 100644 --- a/gen/generator.go +++ b/gen/generator.go @@ -299,6 +299,7 @@ func camelToSnake(name string) string { multipleUpper := false var lastUpper rune + var beforeUpper rune for _, c := range name { // Non-lowercase character after uppercase is considered to be uppercase too. @@ -312,7 +313,7 @@ func camelToSnake(name string) string { firstInRow := !multipleUpper lastInRow := !isUpper - if ret.Len() > 0 && (firstInRow || lastInRow) { + if ret.Len() > 0 && (firstInRow || lastInRow) && beforeUpper != '_' { ret.WriteByte('_') } ret.WriteRune(unicode.ToLower(lastUpper)) @@ -328,6 +329,7 @@ func camelToSnake(name string) string { ret.WriteRune(c) lastUpper = 0 + beforeUpper = c multipleUpper = false }