Skip to content

Commit

Permalink
fix:解决多种消息元素的错误编码
Browse files Browse the repository at this point in the history
增加单元测试
  • Loading branch information
dezhishen committed Apr 6, 2024
1 parent 9a032b2 commit 086f66e
Show file tree
Hide file tree
Showing 8 changed files with 819 additions and 368 deletions.
18 changes: 18 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "TestMessageParser",
"type": "go",
"request": "launch",
"mode": "test",
"program": "${workspaceFolder}/pkg/message",
"env": {},
"args": [],
"showLog": true
}
]
}
16 changes: 11 additions & 5 deletions pkg/message/message_element.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,27 @@ func (e *noAliasMessageElement) Alias() []string {
return nil
}

type childrenMessageElement struct {
type ChildrenMessageElement struct {
Children []MessageElement
}

func (e *childrenMessageElement) stringifyChildren() string {
func (e *ChildrenMessageElement) stringifyChildren() string {
if e == nil {
return ""
}
if len(e.Children) == 0 {
return ""
}
var result string
for _, e := range e.Children {
result += e.Stringify()
}
return result
}

func (e *childrenMessageElement) stringifyByTag(tag string) string {
if len(e.Children) == 0 {
return "<" + tag + "/>"
func (e *ChildrenMessageElement) stringifyByTag(tag string) string {
if e == nil || len(e.Children) == 0 {
return "<" + tag + " />"
}
return "<" + tag + ">" + e.stringifyChildren() + "</" + tag + ">"
}
34 changes: 17 additions & 17 deletions pkg/message/message_element_decorative.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
)

type MessageElementStrong struct {
*childrenMessageElement
*ChildrenMessageElement
}

func (e *MessageElementStrong) Tag() string {
Expand All @@ -28,14 +28,14 @@ func (e *MessageElementStrong) Parse(n *html.Node) (MessageElement, error) {
return nil, err
}
return &MessageElementStrong{
&childrenMessageElement{
&ChildrenMessageElement{
Children: children,
},
}, nil
}

type MessageElementEm struct {
*childrenMessageElement
*ChildrenMessageElement
}

func (e *MessageElementEm) Tag() string {
Expand All @@ -58,18 +58,18 @@ func (e *MessageElementEm) Parse(n *html.Node) (MessageElement, error) {
return nil, err
}
return &MessageElementEm{
&childrenMessageElement{
&ChildrenMessageElement{
Children: children,
},
}, nil
}

type MessageElementIns struct {
*childrenMessageElement
*ChildrenMessageElement
}

func (e *MessageElementIns) Tag() string {
return "s"
return "u"
}

func (e *MessageElementIns) Alias() []string {
Expand All @@ -89,14 +89,14 @@ func (e *MessageElementIns) Parse(n *html.Node) (MessageElement, error) {
return nil, err
}
return &MessageElementIns{
&childrenMessageElement{
&ChildrenMessageElement{
Children: children,
},
}, nil
}

type MessageElementDel struct {
*childrenMessageElement
*ChildrenMessageElement
}

func (e *MessageElementDel) Tag() string {
Expand All @@ -120,15 +120,15 @@ func (e *MessageElementDel) Parse(n *html.Node) (MessageElement, error) {
return nil, err
}
return &MessageElementDel{
childrenMessageElement: &childrenMessageElement{
ChildrenMessageElement: &ChildrenMessageElement{
Children: children,
},
}, nil
}

type MessageElementSpl struct {
*noAliasMessageElement
*childrenMessageElement
*ChildrenMessageElement
}

func (e *MessageElementSpl) Tag() string {
Expand All @@ -148,14 +148,14 @@ func (e *MessageElementSpl) Parse(n *html.Node) (MessageElement, error) {
return nil, err
}
return &MessageElementSpl{
childrenMessageElement: &childrenMessageElement{
ChildrenMessageElement: &ChildrenMessageElement{
Children: children,
},
}, nil
}

type MessageElementCode struct {
*childrenMessageElement
*ChildrenMessageElement
*noAliasMessageElement
}

Expand All @@ -176,14 +176,14 @@ func (e *MessageElementCode) Parse(n *html.Node) (MessageElement, error) {
return nil, err
}
return &MessageElementCode{
childrenMessageElement: &childrenMessageElement{
ChildrenMessageElement: &ChildrenMessageElement{
Children: children,
},
}, nil
}

type MessageElementSup struct {
*childrenMessageElement
*ChildrenMessageElement
*noAliasMessageElement
}

Expand All @@ -204,14 +204,14 @@ func (e *MessageElementSup) Parse(n *html.Node) (MessageElement, error) {
return nil, err
}
return &MessageElementSup{
childrenMessageElement: &childrenMessageElement{
ChildrenMessageElement: &ChildrenMessageElement{
Children: children,
},
}, nil
}

type MessageElementSub struct {
*childrenMessageElement
*ChildrenMessageElement
*noAliasMessageElement
}

Expand All @@ -232,7 +232,7 @@ func (e *MessageElementSub) Parse(n *html.Node) (MessageElement, error) {
return nil, err
}
return &MessageElementSub{
childrenMessageElement: &childrenMessageElement{
ChildrenMessageElement: &ChildrenMessageElement{
Children: children,
},
}, nil
Expand Down
14 changes: 7 additions & 7 deletions pkg/message/message_element_meta.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import "golang.org/x/net/html"

type MessageElementQuote struct {
*noAliasMessageElement
*childrenMessageElement
*ChildrenMessageElement
}

func (e *MessageElementQuote) Tag() string {
Expand All @@ -24,15 +24,15 @@ func (e *MessageElementQuote) Parse(n *html.Node) (MessageElement, error) {
return nil, err
}
return &MessageElementQuote{
childrenMessageElement: &childrenMessageElement{
ChildrenMessageElement: &ChildrenMessageElement{
Children: children,
},
}, nil
}

type MessageElementAuthor struct {
*noAliasMessageElement
*childrenMessageElement
*ChildrenMessageElement
Id string
Name string
Avatar string
Expand All @@ -53,12 +53,12 @@ func (e *MessageElementAuthor) Stringify() string {
if e.Avatar != "" {
result += ` avatar="` + e.Avatar + `"`
}
result += ">"
// result += ">"
childrenStr := e.stringifyChildren()
if childrenStr != "" {
result += childrenStr
if childrenStr == "" {
return result + ` />`
}
return result + "</" + e.Tag() + ">"
return result + ` >` + childrenStr + `</` + e.Tag() + `>`
}

func (e *MessageElementAuthor) Parse(n *html.Node) (MessageElement, error) {
Expand Down
Loading

0 comments on commit 086f66e

Please sign in to comment.