you can use chat.Message.ClearString()
to output the message without ansi color
This commit is contained in:
@ -67,7 +67,32 @@ var colors = map[string]int{
|
|||||||
"white": 97,
|
"white": 97,
|
||||||
}
|
}
|
||||||
|
|
||||||
// String return the message with escape sequence for ansi color.
|
// ClearString return the message without escape sequence for ansi color.
|
||||||
|
func (m Message) ClearString() string {
|
||||||
|
var msg strings.Builder
|
||||||
|
msg.WriteString(m.Text)
|
||||||
|
|
||||||
|
//handle translate
|
||||||
|
if m.Translate != "" {
|
||||||
|
args := make([]interface{}, len(m.With))
|
||||||
|
for i, v := range m.With {
|
||||||
|
var arg Message
|
||||||
|
arg.UnmarshalJSON(v) //ignore error
|
||||||
|
args[i] = arg.ClearString()
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintf(&msg, data.EnUs[m.Translate], args...)
|
||||||
|
}
|
||||||
|
|
||||||
|
if m.Extra != nil {
|
||||||
|
for i := range m.Extra {
|
||||||
|
msg.WriteString(Message(m.Extra[i]).ClearString())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return msg.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// String return the message string with escape sequence for ansi color.
|
||||||
// On windows, you may want print this string using
|
// On windows, you may want print this string using
|
||||||
// github.com/mattn/go-colorable.
|
// github.com/mattn/go-colorable.
|
||||||
func (m Message) String() string {
|
func (m Message) String() string {
|
||||||
|
@ -39,6 +39,17 @@ var texts = []string{
|
|||||||
"world",
|
"world",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ctexts = []string{
|
||||||
|
"故我依然™ Kun_QwQ: 为什么想要用炼药锅灭火时总是跳不进去",
|
||||||
|
|
||||||
|
"<Xi_Xi_Mi> 好像是这个id。。",
|
||||||
|
"Hello, world!",
|
||||||
|
//"Prefix, str1str2 again str2 and str1 lastly str3 and also str1 again!",
|
||||||
|
"%s %str1 %%s %%str2",
|
||||||
|
"str1 str2",
|
||||||
|
"world",
|
||||||
|
}
|
||||||
|
|
||||||
func TestChatMsgFormatString(t *testing.T) {
|
func TestChatMsgFormatString(t *testing.T) {
|
||||||
for i, v := range jsons {
|
for i, v := range jsons {
|
||||||
var cm Message
|
var cm Message
|
||||||
@ -46,8 +57,21 @@ func TestChatMsgFormatString(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
if cm.String() != texts[i] {
|
if str := cm.String(); str != texts[i] {
|
||||||
t.Errorf("gets %q, wants %q", cm, texts[i])
|
t.Errorf("gets %q, wants %q", str, texts[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestChatMsgClearString(t *testing.T) {
|
||||||
|
for i, v := range jsons {
|
||||||
|
var cm Message
|
||||||
|
err := cm.UnmarshalJSON([]byte(v))
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
if str := cm.ClearString(); str != ctexts[i] {
|
||||||
|
t.Errorf("gets %q, wants %q", str, texts[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user