-9
modules/util/truncate.go
-9
modules/util/truncate.go
···
54
54
55
55
return stringList
56
56
}
57
-
58
-
// TruncateRunes returns a truncated string with given rune limit,
59
-
// it returns input string if its rune length doesn't exceed the limit.
60
-
func TruncateRunes(str string, limit int) string {
61
-
if utf8.RuneCountInString(str) < limit {
62
-
return str
63
-
}
64
-
return string([]rune(str)[:limit])
65
-
}
-15
modules/util/truncate_test.go
-15
modules/util/truncate_test.go
···
44
44
}
45
45
test(tc, SplitStringAtByteN)
46
46
}
47
-
48
-
func TestTruncateRunes(t *testing.T) {
49
-
assert.Empty(t, TruncateRunes("", 0))
50
-
assert.Empty(t, TruncateRunes("", 1))
51
-
52
-
assert.Empty(t, TruncateRunes("ab", 0))
53
-
assert.Equal(t, "a", TruncateRunes("ab", 1))
54
-
assert.Equal(t, "ab", TruncateRunes("ab", 2))
55
-
assert.Equal(t, "ab", TruncateRunes("ab", 3))
56
-
57
-
assert.Empty(t, TruncateRunes("测试", 0))
58
-
assert.Equal(t, "测", TruncateRunes("测试", 1))
59
-
assert.Equal(t, "测试", TruncateRunes("测试", 2))
60
-
assert.Equal(t, "测试", TruncateRunes("测试", 3))
61
-
}
+2
-1
services/webhook/discord.go
+2
-1
services/webhook/discord.go
···
16
16
"unicode/utf8"
17
17
18
18
webhook_model "forgejo.org/models/webhook"
19
+
"forgejo.org/modules/base"
19
20
"forgejo.org/modules/git"
20
21
"forgejo.org/modules/json"
21
22
"forgejo.org/modules/log"
···
364
365
Embeds: []DiscordEmbed{
365
366
{
366
367
Title: title,
367
-
Description: util.TruncateRunes(text, discordDescriptionCharactersLimit),
368
+
Description: base.TruncateString(text, discordDescriptionCharactersLimit),
368
369
URL: url,
369
370
Color: color,
370
371
Author: DiscordEmbedAuthor{