lib/feedjira/podcast/channel/apple.rb in feedjira-podcast-0.9.8 vs lib/feedjira/podcast/channel/apple.rb in feedjira-podcast-0.9.9

- old
+ new

@@ -1,38 +1,10 @@ module Feedjira module Podcast module Channel module Apple - def self.included(base) - - base.element :"itunes:author", as: :itunes_author - - base.element :"itunes:block", as: :_itunes_block - - base.elements :"itunes:category", as: :itunes_categories, class: AppleCategory - - base.element :"itunes:image", as: :itunes_image_href, value: :href do |href| - Addressable::URI.parse(href) - end - - base.element :"itunes:explicit", as: :_itunes_explicit - base.element :"itunes:complete", as: :_itunes_complete - - base.element :"itunes:new_feed_url", as: :itunes_new_feed_url do |url| - Addressable::URI.parse(url) - end - - base.element :"itunes:owner", as: :_itunes_owner, class: AppleOwner - base.element :"itunes:subtitle", as: :itunes_subtitle - base.element :"itunes:summary", as: :itunes_summary - - # Legacy support - - base.element :"itunes:keywords", as: :itunes_keywords do |keywords| - keywords.split(',').map(&:strip).select { |k| !k.empty? } - end - + module InstanceMethods def itunes @itunes ||= Struct.new( :author, :block?, :categories, @@ -66,31 +38,65 @@ def itunes_image @itunes_image ||= Struct.new(:href).new(itunes_image_href) end def itunes_block - @itunes_block ||= (_itunes_block == 'yes') + @itunes_block ||= (_itunes_block == "yes") end + def itunes_categories + @itunes_categories ||= _itunes_categories.select(&:valid?) + end + def itunes_complete - @itunes_complete ||= (_itunes_complete == 'yes') + @itunes_complete ||= (_itunes_complete == "yes") end def itunes_explicit - @itunes_explicit ||= (_itunes_explicit == 'yes') + @itunes_explicit ||= (_itunes_explicit == "yes") end def itunes_clean - @itunes_clean ||= (_itunes_explicit == 'clean') + @itunes_clean ||= (_itunes_explicit == "clean") end def itunes_owner @itunes_owner ||= Struct.new(:email, :name).new( _itunes_owner && _itunes_owner.email, _itunes_owner && _itunes_owner.name, ) end + end + def self.included(base) + base.include(InstanceMethods) + + base.element :"itunes:author", as: :itunes_author + + base.element :"itunes:block", as: :_itunes_block + + base.elements :"itunes:category", as: :_itunes_categories, class: AppleCategory + + base.element :"itunes:image", as: :itunes_image_href, value: :href do |href| + Addressable::URI.parse(href) + end + + base.element :"itunes:explicit", as: :_itunes_explicit + base.element :"itunes:complete", as: :_itunes_complete + + base.element :"itunes:new_feed_url", as: :itunes_new_feed_url do |url| + Addressable::URI.parse(url) + end + + base.element :"itunes:owner", as: :_itunes_owner, class: AppleOwner + base.element :"itunes:subtitle", as: :itunes_subtitle + base.element :"itunes:summary", as: :itunes_summary + + # Legacy support + + base.element :"itunes:keywords", as: :itunes_keywords do |keywords| + keywords.split(",").map(&:strip).select { |k| !k.empty? } + end end end end end end