@@ -102,16 +102,13 @@ func (t *DefaultRSSTranslator) translateFeedLink(rss *rss.Feed) (link string) {
102102}
103103
104104func (t * DefaultRSSTranslator ) translateFeedFeedLink (rss * rss.Feed ) (link string ) {
105- atomExtensions := t .extensionsForKeys ([]string {"atom" , "atom10" , "atom03" }, rss .Extensions )
106- for _ , ex := range atomExtensions {
107- if links , ok := ex ["link" ]; ok {
108- for _ , l := range links {
109- if l .Attrs ["rel" ] == "self" {
110- link = l .Attrs ["href" ]
111- }
112- }
105+ t .atomExtensionsWithKey (rss , "link" , func (l ext.Extension ) bool {
106+ if l .Attrs ["rel" ] == "self" {
107+ link = l .Attrs ["href" ]
108+ return true
113109 }
114- }
110+ return false
111+ })
115112 return
116113}
117114
@@ -433,6 +430,19 @@ func (t *DefaultRSSTranslator) extensionsForKeys(keys []string, extensions ext.E
433430 return
434431}
435432
433+ func (t * DefaultRSSTranslator ) atomExtensionsWithKey (rss * rss.Feed , tag string , f func (ext.Extension ) bool ) {
434+ atomExtensions := t .extensionsForKeys ([]string {"atom" , "atom10" , "atom03" }, rss .Extensions )
435+ for _ , ex := range atomExtensions {
436+ if exts , ok := ex [tag ]; ok {
437+ for _ , e := range exts {
438+ if f (e ) {
439+ return
440+ }
441+ }
442+ }
443+ }
444+ }
445+
436446func (t * DefaultRSSTranslator ) firstEntry (entries []string ) (value string ) {
437447 if entries == nil {
438448 return
0 commit comments