This commit is contained in:
Ashour Badine 2026-02-02 09:50:56 +08:00 committed by GitHub
commit b4da89bab1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 0 deletions

View File

@ -47,6 +47,17 @@ func isValidTagRune(r rune) bool {
return true
}
// Allow marks (non-spacing, spacing combining, enclosing)
// This covers variation selectors (e.g. VS16 \uFE0F) and combining marks (e.g. Keycap \u20E3, accents)
if unicode.IsMark(r) {
return true
}
// Allow Zero Width Joiner (ZWJ) for emoji sequences
if r == '\u200D' {
return true
}
// Allow specific ASCII symbols for tag structure
// Underscore: word separation (snake_case)
// Hyphen: word separation (kebab-case)

View File

@ -168,6 +168,18 @@ func TestTagParser(t *testing.T) {
expectedTag: "test🚀",
shouldParse: true,
},
{
name: "emoji with VS16",
input: "#test👁", // Eye + VS16
expectedTag: "test👁",
shouldParse: true,
},
{
name: "emoji with ZWJ sequence",
input: "#family👨👩👧👦", // Family ZWJ sequence
expectedTag: "family👨👩👧👦",
shouldParse: true,
},
}
for _, tt := range tests {