From e495e2d4d0ad20a6f2569d6754c8befc94e74aff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Fri, 13 Oct 2023 00:45:21 +0900 Subject: [PATCH] add helper.UnderlineToCamel --- helper.go | 19 +++++++++++++++++++ helper_test.go | 22 ++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 helper_test.go diff --git a/helper.go b/helper.go index 7af0020..454f8fa 100644 --- a/helper.go +++ b/helper.go @@ -47,3 +47,22 @@ func MessageUnescape(text string) string { text = strings.ReplaceAll(text, ">", ">") return text } + +// UnderlineToCamel convert abc_def to AbcDef +func UnderlineToCamel(s string) string { + sb := strings.Builder{} + isnextupper := true + for _, c := range []byte(strings.ToLower(s)) { + if c == '_' { + isnextupper = true + continue + } + if isnextupper { + sb.WriteString(strings.ToUpper(string(c))) + isnextupper = false + continue + } + sb.WriteByte(c) + } + return sb.String() +} diff --git a/helper_test.go b/helper_test.go new file mode 100644 index 0000000..720ae80 --- /dev/null +++ b/helper_test.go @@ -0,0 +1,22 @@ +package nano + +import "testing" + +func TestUnderlineToCamel(t *testing.T) { + x := UnderlineToCamel("GUILD_CREATE") + if x != "GuildCreate" { + t.Fatal("expected GuildCreate but got", x) + } + x = UnderlineToCamel("GUILD_MEMBER_UPDATE") + if x != "GuildMemberUpdate" { + t.Fatal("expected GuildMemberUpdate but got", x) + } + x = UnderlineToCamel("OPEN_FORUM_THREAD_CREATE") + if x != "OpenForumThreadCreate" { + t.Fatal("expected OpenForumThreadCreate but got", x) + } + x = UnderlineToCamel("AUDIO_OR_LIVE_CHANNEL_MEMBER_ENTER") + if x != "AudioOrLiveChannelMemberEnter" { + t.Fatal("expected AudioOrLiveChannelMemberEnter but got", x) + } +}