lib/feedjira/parser/itunes_rss_item.rb in feedjira-2.0.0 vs lib/feedjira/parser/itunes_rss_item.rb in feedjira-2.1.0
- old
+ new
@@ -1,36 +1,44 @@
module Feedjira
-
module Parser
# iTunes extensions to the standard RSS2.0 item
# Source: http://www.apple.com/itunes/whatson/podcasts/specs.html
class ITunesRSSItem
include SAXMachine
include FeedEntryUtilities
element :author
- element :guid, :as => :entry_id
+ element :guid, as: :entry_id
element :title
- element :link, :as => :url
- element :description, :as => :summary
- element :"content:encoded", :as => :content
- element :pubDate, :as => :published
+ element :link, as: :url
+ element :description, as: :summary
+ element :"content:encoded", as: :content
+ element :pubDate, as: :published
# If author is not present use author tag on the item
- element :"itunes:author", :as => :itunes_author
- element :"itunes:block", :as => :itunes_block
- element :"itunes:duration", :as => :itunes_duration
- element :"itunes:explicit", :as => :itunes_explicit
- element :"itunes:keywords", :as => :itunes_keywords
- element :"itunes:subtitle", :as => :itunes_subtitle
- element :"itunes:image", :value => :href, :as => :itunes_image
- element :"itunes:isClosedCaptioned", :as => :itunes_closed_captioned
- element :"itunes:order", :as => :itunes_order
+ element :"itunes:author", as: :itunes_author
+ element :"itunes:block", as: :itunes_block
+ element :"itunes:duration", as: :itunes_duration
+ element :"itunes:explicit", as: :itunes_explicit
+ element :"itunes:keywords", as: :itunes_keywords
+ element :"itunes:subtitle", as: :itunes_subtitle
+ element :"itunes:image", value: :href, as: :itunes_image
+ element :"itunes:isClosedCaptioned", as: :itunes_closed_captioned
+ element :"itunes:order", as: :itunes_order
+
# If summary is not present, use the description tag
- element :"itunes:summary", :as => :itunes_summary
- element :enclosure, :value => :length, :as => :enclosure_length
- element :enclosure, :value => :type, :as => :enclosure_type
- element :enclosure, :value => :url, :as => :enclosure_url
+ element :"itunes:summary", as: :itunes_summary
+ element :enclosure, value: :length, as: :enclosure_length
+ element :enclosure, value: :type, as: :enclosure_type
+ element :enclosure, value: :url, as: :enclosure_url
+ elements 'psc:chapter', as: :raw_chapters, class: Feedjira::Parser::PodloveChapter # rubocop:disable Metrics/LineLength
+
+ # Podlove requires clients to re-order by start time in the
+ # event the publisher doesn't provide them in that
+ # order. SAXMachine doesn't have any sort capability afaik, so
+ # we have to sort chapters manually.
+ def chapters
+ raw_chapters.sort_by(&:start)
+ end
end
end
-
end