From 6171690b000af4fb495fc9d2930dfa988800ee3f Mon Sep 17 00:00:00 2001 From: Ryooooooga Date: Sat, 23 Oct 2021 20:46:37 +0900 Subject: [PATCH] Fix multibyte initial characters --- pkg/gui/presentation/commits.go | 10 +++++----- pkg/utils/slice.go | 8 ++++++-- pkg/utils/slice_test.go | 10 ++++++++++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/pkg/gui/presentation/commits.go b/pkg/gui/presentation/commits.go index 1524734f2..2531f7b81 100644 --- a/pkg/gui/presentation/commits.go +++ b/pkg/gui/presentation/commits.go @@ -124,8 +124,8 @@ var authorInitialCache = make(map[string]string) var authorNameCache = make(map[string]string) func shortAuthor(authorName string) string { - if _, ok := authorInitialCache[authorName]; ok { - return authorInitialCache[authorName] + if value, ok := authorInitialCache[authorName]; ok { + return value } initials := getInitials(authorName) @@ -140,8 +140,8 @@ func shortAuthor(authorName string) string { } func longAuthor(authorName string) string { - if _, ok := authorNameCache[authorName]; ok { - return authorNameCache[authorName] + if value, ok := authorNameCache[authorName]; ok { + return value } truncatedName := utils.TruncateWithEllipsis(authorName, 17) @@ -184,7 +184,7 @@ func getInitials(authorName string) string { return utils.LimitStr(authorName, 2) } - return split[0][0:1] + split[1][0:1] + return utils.LimitStr(split[0], 1) + utils.LimitStr(split[1], 1) } func actionColorMap(str string) style.TextStyle { diff --git a/pkg/utils/slice.go b/pkg/utils/slice.go index 0ee8dec66..dc3e85069 100644 --- a/pkg/utils/slice.go +++ b/pkg/utils/slice.go @@ -146,8 +146,12 @@ func Reverse(values []string) []string { } func LimitStr(value string, limit int) string { - if len(value) > limit { - return value[:limit] + n := 0 + for i := range value { + if n >= limit { + return value[:i] + } + n++ } return value } diff --git a/pkg/utils/slice_test.go b/pkg/utils/slice_test.go index b5919b3e6..67dcd00bf 100644 --- a/pkg/utils/slice_test.go +++ b/pkg/utils/slice_test.go @@ -290,6 +290,16 @@ func TestLimitStr(t *testing.T) { limit: 3, want: "abc", }, + { + values: "あいう", + limit: 1, + want: "あ", + }, + { + values: "あいう", + limit: 2, + want: "あい", + }, } { if got := LimitStr(test.values, test.limit); !assert.EqualValues(t, got, test.want) { t.Errorf("LimitString(%v, %d) = %v; want %v", test.values, test.limit, got, test.want)