diff --git a/src/parser/atom.go b/src/parser/atom.go index 361c747..f59bd4a 100644 --- a/src/parser/atom.go +++ b/src/parser/atom.go @@ -47,6 +47,8 @@ type atomLinks []atomLink func (a *atomText) Text() string { if a.Type == "html" { return htmlutil.ExtractText(a.Data) + } else if a.Type == "xhtml" { + return htmlutil.ExtractText(a.XML) } return a.Data } diff --git a/src/parser/atom_test.go b/src/parser/atom_test.go index 1b81a49..f47594e 100644 --- a/src/parser/atom_test.go +++ b/src/parser/atom_test.go @@ -94,6 +94,44 @@ func TestAtomHTMLTitle(t *testing.T) { } } +func TestAtomXHTMLTitle(t *testing.T) { + feed, _ := Parse(strings.NewReader(` + + + say <code>what</code>?</entry> + </feed> + `)) + have := feed.Items[0].Title + want := "say what?" + if !reflect.DeepEqual(want, have) { + t.Logf("want: %#v", want) + t.Logf("have: %#v", have) + t.FailNow() + } +} + +func TestAtomXHTMLNestedTitle(t *testing.T) { + feed, _ := Parse(strings.NewReader(` + <?xml version="1.0" encoding="utf-8"?> + <feed xmlns="http://www.w3.org/2005/Atom"> + <entry> + <title type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> + <a href="https://example.com">Link to Example</a> + </div> + + + + `)) + have := feed.Items[0].Title + want := "Link to Example" + if !reflect.DeepEqual(want, have) { + t.Logf("want: %#v", want) + t.Logf("have: %#v", have) + t.FailNow() + } +} + func TestAtomImageLink(t *testing.T) { feed, _ := Parse(strings.NewReader(`