Create correct xhtml constructs

This commit is contained in:
Jason Streifling 2024-10-15 16:02:13 +02:00
parent 2cbc604d85
commit 2a4adec6bd
2 changed files with 20 additions and 5 deletions

View File

@ -17,7 +17,13 @@ func NewText(textType, content string) (Text, error) {
case "html": case "html":
return &PlainText{Type: textType, Text: html.EscapeString(content)}, nil return &PlainText{Type: textType, Text: html.EscapeString(content)}, nil
case "xhtml": case "xhtml":
return &XHTMLText{Type: textType, XHTMLDiv: content}, nil return &XHTMLText{
Type: textType,
XHTMLDiv: XHTMLDiv{
XMLNS: "http://www.w3.org/1999/xhtml",
Content: content,
},
}, nil
case "": case "":
return &PlainText{Type: "text", Text: content}, nil return &PlainText{Type: "text", Text: content}, nil
default: default:

View File

@ -1,11 +1,20 @@
package atomfeed package atomfeed
import "errors" import (
"encoding/xml"
"errors"
)
type XHTMLDiv struct {
XMLName xml.Name `xml:"div"`
XMLNS string `xml:"xmlns,attr"`
Content string `xml:",innerxml"`
}
type XHTMLText struct { type XHTMLText struct {
*CommonAttributes *CommonAttributes
Type string `xml:"type,attr"` // Must be xhtml Type string `xml:"type,attr"` // Must be xhtml
XHTMLDiv string `xml:"div"` XHTMLDiv XHTMLDiv
} }
func (x *XHTMLText) IsText() bool { return true } func (x *XHTMLText) IsText() bool { return true }
@ -15,8 +24,8 @@ func (x *XHTMLText) Check() error {
return errors.New("type attribute of xhtml text must be xhtml") return errors.New("type attribute of xhtml text must be xhtml")
} }
if x.XHTMLDiv == "" { if x.XHTMLDiv.XMLNS != "http://www.w3.org/1999/xhtml" {
return errors.New("xhtmlDiv element of xhtml text empty") return errors.New("xmlns attribute of xhtml text must be http://www.w3.org/1999/xhtml")
} }
return nil return nil