From 7bbe88f99fd1835eaa3f4fa044133b8051a19e1f Mon Sep 17 00:00:00 2001 From: "s.kamardin" Date: Fri, 1 Apr 2016 14:44:31 +0300 Subject: [PATCH 1/2] fix to camelToSnake function to handle properly Some_Snake_Case --- gen/generator.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 } From 1abb7f5e217fccf1859362b0bfb4b5409ea7b3b3 Mon Sep 17 00:00:00 2001 From: "s.kamardin" Date: Fri, 1 Apr 2016 15:00:19 +0300 Subject: [PATCH 2/2] add test for mixed case --- gen/generator_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gen/generator_test.go b/gen/generator_test.go index 2e98b64..7388bec 100644 --- a/gen/generator_test.go +++ b/gen/generator_test.go @@ -16,6 +16,8 @@ func TestCamelToSnake(t *testing.T) { {"SomeHTTPStuff", "some_http_stuff"}, {"WriteJSON", "write_json"}, {"HTTP2Server", "http2_server"}, + {"Some_Mixed_Case", "some_mixed_case"}, + {"do_nothing", "do_nothing"}, {"JSONHTTPRPCServer", "jsonhttprpc_server"}, // nothing can be done here without a dictionary } {