ircmsg: Make ircmsg respect emoji in tags
This commit is contained in:
parent
55652e4096
commit
1cb16094f0
@ -10,7 +10,7 @@ var (
|
|||||||
valtoescape = strings.NewReplacer("\\", "\\\\", ";", "\\:", " ", "\\s", "\r", "\\r", "\n", "\\n")
|
valtoescape = strings.NewReplacer("\\", "\\\\", ";", "\\:", " ", "\\s", "\r", "\\r", "\n", "\\n")
|
||||||
|
|
||||||
// escapetoval contains the IRCv3 Tag Escapes and how they map to characters.
|
// escapetoval contains the IRCv3 Tag Escapes and how they map to characters.
|
||||||
escapetoval = map[byte]byte{
|
escapetoval = map[rune]byte{
|
||||||
':': ';',
|
':': ';',
|
||||||
's': ' ',
|
's': ' ',
|
||||||
'\\': '\\',
|
'\\': '\\',
|
||||||
@ -31,10 +31,10 @@ func EscapeTagValue(in string) string {
|
|||||||
//
|
//
|
||||||
// This function is automatically used when lines are interpreted by ParseLine,
|
// This function is automatically used when lines are interpreted by ParseLine,
|
||||||
// so you don't need to call it yourself after parsing a line.
|
// so you don't need to call it yourself after parsing a line.
|
||||||
func UnescapeTagValue(in string) string {
|
func UnescapeTagValue(inString string) string {
|
||||||
out := ""
|
in := []rune(inString)
|
||||||
|
var out string
|
||||||
for len(in) > 0 {
|
for 0 < len(in) {
|
||||||
if in[0] == '\\' && len(in) > 1 {
|
if in[0] == '\\' && len(in) > 1 {
|
||||||
val, exists := escapetoval[in[1]]
|
val, exists := escapetoval[in[1]]
|
||||||
if exists == true {
|
if exists == true {
|
||||||
|
@ -13,12 +13,14 @@ type testcase struct {
|
|||||||
var tests = []testcase{
|
var tests = []testcase{
|
||||||
{"te\\nst", "te\nst"},
|
{"te\\nst", "te\nst"},
|
||||||
{"tes\\\\st", "tes\\st"},
|
{"tes\\\\st", "tes\\st"},
|
||||||
|
{"te😃st", "te😃st"},
|
||||||
}
|
}
|
||||||
|
|
||||||
var unescapeTests = []testcase{
|
var unescapeTests = []testcase{
|
||||||
{"te\\n\\kst", "te\nkst"},
|
{"te\\n\\kst", "te\nkst"},
|
||||||
{"te\\n\\kst\\", "te\nkst"},
|
{"te\\n\\kst\\", "te\nkst"},
|
||||||
{"te\\\\nst", "te\\nst"},
|
{"te\\\\nst", "te\\nst"},
|
||||||
|
{"te😃st", "te😃st"},
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEscape(t *testing.T) {
|
func TestEscape(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user