def self.package(rss, loose)
feed = Feed.new(self)
feed_mapping = {
:generator => :generator,
:title => :title,
:urls => :link,
:description => :description,
:copyright => :copyright,
:authors => :managingEditor,
:last_updated => [:lastBuildDate, :pubDate, :dc_date],
:id => :guid,
:ttl => :ttl
}
map_functions!(feed_mapping, rss, feed)
map_functions!(feed_mapping, rss.channel, feed)
feed.image = rss.image ? rss.image.url : nil
feed.skip_hours = skip(rss, :skipHours)
feed.skip_days = skip(rss, :skipDays)
item_mapping = {
:date_published => [:pubDate, :dc_date],
:urls => :link,
:enclosures => :enclosure,
:description => :description,
:content => [:content_encoded, :description],
:title => :title,
:authors => [:author, :dc_creator],
:last_updated => [:pubDate, :dc_date]
}
rss.items.each do |rss_item|
feed_entry = Entry.new
map_functions!(item_mapping, rss_item, feed_entry)
feed_entry.id = rss_item.guid.content if rss_item.respond_to?(:guid) && rss_item.guid
feed_entry.copyright = rss.copyright if rss_item.respond_to? :copyright
feed_entry.categories = loose ?
rss_item.categories.collect{|c|c.content} :
[rss_item.categories.first.content] rescue []
feed.entries << feed_entry
end
feed
end