@@ -105,16 +105,13 @@ func (t *DefaultRSSTranslator) translateFeedLink(rss *rss.Feed) (link string) {
105105}
106106
107107func (t * DefaultRSSTranslator ) translateFeedFeedLink (rss * rss.Feed ) (link string ) {
108- atomExtensions := t .extensionsForKeys ([]string {"atom" , "atom10" , "atom03" }, rss .Extensions )
109- for _ , ex := range atomExtensions {
110- if links , ok := ex ["link" ]; ok {
111- for _ , l := range links {
112- if l .Attrs ["rel" ] == "self" {
113- link = l .Attrs ["href" ]
114- }
115- }
108+ t .atomExtensionsWithKey (rss , "link" , func (l ext.Extension ) bool {
109+ if l .Attrs ["rel" ] == "self" {
110+ link = l .Attrs ["href" ]
111+ return true
116112 }
117- }
113+ return false
114+ })
118115 return
119116}
120117
@@ -462,6 +459,19 @@ func (t *DefaultRSSTranslator) extensionsForKeys(keys []string, extensions ext.E
462459 return
463460}
464461
462+ func (t * DefaultRSSTranslator ) atomExtensionsWithKey (rss * rss.Feed , tag string , f func (ext.Extension ) bool ) {
463+ atomExtensions := t .extensionsForKeys ([]string {"atom" , "atom10" , "atom03" }, rss .Extensions )
464+ for _ , ex := range atomExtensions {
465+ if exts , ok := ex [tag ]; ok {
466+ for _ , e := range exts {
467+ if f (e ) {
468+ return
469+ }
470+ }
471+ }
472+ }
473+ }
474+
465475func (t * DefaultRSSTranslator ) firstEntry (entries []string ) (value string ) {
466476 if entries == nil {
467477 return
0 commit comments