diff --git a/internal/reader/json/adapter.go b/internal/reader/json/adapter.go index 846f7094d57..460d945a04b 100644 --- a/internal/reader/json/adapter.go +++ b/internal/reader/json/adapter.go @@ -83,11 +83,12 @@ func (j *JSONAdapter) BuildFeed(baseURL string) *model.Feed { // The entry title is optional, so we need to find a fallback. if entry.Title == "" { for _, value := range []string{item.Summary, item.ContentText, item.ContentHTML} { - value = strings.TrimSpace(value) - if value != "" { - entry.Title = sanitizer.TruncateHTML(value, 100) - break + if value = sanitizer.TruncateHTML(value, 100); value == "" { + continue } + + entry.Title = value + break } } diff --git a/internal/reader/rdf/adapter.go b/internal/reader/rdf/adapter.go index 7464403f93c..d2385b1c927 100644 --- a/internal/reader/rdf/adapter.go +++ b/internal/reader/rdf/adapter.go @@ -22,7 +22,7 @@ type rdfAdapter struct { func (r *rdfAdapter) buildFeed(baseURL string) *model.Feed { feed := &model.Feed{ - Title: stripTags(r.rdf.Channel.Title), + Title: sanitizer.StripTags(r.rdf.Channel.Title), FeedURL: strings.TrimSpace(baseURL), SiteURL: strings.TrimSpace(r.rdf.Channel.Link), Description: strings.TrimSpace(r.rdf.Channel.Description), @@ -95,9 +95,9 @@ func (r *rdfAdapter) buildFeed(baseURL string) *model.Feed { // Populate the entry author. switch { case item.DublinCoreCreator != "": - entry.Author = stripTags(item.DublinCoreCreator) + entry.Author = sanitizer.StripTags(item.DublinCoreCreator) case r.rdf.Channel.DublinCoreCreator != "": - entry.Author = stripTags(r.rdf.Channel.DublinCoreCreator) + entry.Author = sanitizer.StripTags(r.rdf.Channel.DublinCoreCreator) } feed.Entries = append(feed.Entries, entry) @@ -105,7 +105,3 @@ func (r *rdfAdapter) buildFeed(baseURL string) *model.Feed { return feed } - -func stripTags(value string) string { - return strings.TrimSpace(sanitizer.StripTags(value)) -} diff --git a/internal/reader/rss/adapter.go b/internal/reader/rss/adapter.go index a33d72c17f9..2315a205dbb 100644 --- a/internal/reader/rss/adapter.go +++ b/internal/reader/rss/adapter.go @@ -177,7 +177,7 @@ func findFeedAuthor(rssChannel *rssChannel) string { return "" } - return strings.TrimSpace(sanitizer.StripTags(author)) + return sanitizer.StripTags(author) } func findFeedTags(rssChannel *rssChannel) []string { @@ -296,7 +296,7 @@ func findEntryAuthor(rssItem *rssItem) string { return "" } - return strings.TrimSpace(sanitizer.StripTags(author)) + return sanitizer.StripTags(author) } func findEntryTags(rssItem *rssItem) []string { diff --git a/internal/reader/sanitizer/strip_tags.go b/internal/reader/sanitizer/strip_tags.go index 25012226473..8c75e557692 100644 --- a/internal/reader/sanitizer/strip_tags.go +++ b/internal/reader/sanitizer/strip_tags.go @@ -25,7 +25,7 @@ func StripTags(input string) string { return "" } - return dst.String() + return strings.TrimSpace(dst.String()) } // stripIter iterates over the input [io.Reader] and calls the yield function for each [html.TextToken]. diff --git a/internal/reader/sanitizer/strip_tags_test.go b/internal/reader/sanitizer/strip_tags_test.go index ee0d7b1e145..f81081df341 100644 --- a/internal/reader/sanitizer/strip_tags_test.go +++ b/internal/reader/sanitizer/strip_tags_test.go @@ -7,7 +7,7 @@ import "testing" func TestStripTags(t *testing.T) { input := `This link is relative and this image: ` - expected := `This link is relative and this image: ` + expected := `This link is relative and this image:` output := StripTags(input) if expected != output {