Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
diamondburned
GitHub Repository: diamondburned/gtkcord4
Path: blob/main/internal/gtkcord/emoji.go
365 views
1
package gtkcord
2
3
// SanitizeEmoji checks if provided emoji doesn't contain extraneous variation selector codepoint
4
// NOTE: This sanitizer covers ~70% of emojis
5
func SanitizeEmoji(emoji string) string {
6
emojiRune := []rune(emoji)
7
runesAmount := len(emojiRune)
8
9
// Flags from \u1f1e6 to \u1f1ff
10
if runesAmount == 3 {
11
if (emojiRune[0] >= 127462) && (emojiRune[0] <= 127487) {
12
if (emojiRune[1] >= 127464) && (emojiRune[1] <= 127484) {
13
return string(emojiRune[:runesAmount-1])
14
}
15
}
16
}
17
18
// Flags in \u1f3f4
19
if runesAmount == 8 {
20
if (emojiRune[0] == 127988) && (emojiRune[6] == 917631) {
21
return string(emojiRune[:runesAmount-1])
22
}
23
}
24
25
// Keycaps from \u0023 to \u0039
26
if runesAmount == 4 {
27
if (emojiRune[0] >= 35) && (emojiRune[2] >= 57) {
28
return string(emojiRune[:runesAmount-1])
29
}
30
}
31
32
if runesAmount == 2 {
33
if emojiRune[runesAmount-1] == rune(65039) {
34
return string(emojiRune[:runesAmount-1])
35
}
36
}
37
38
return emoji
39
}
40
41