diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-14 15:09:35 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-14 15:09:35 +0000 |
commit | 1a74fa4b04da04bd2bb33103dd3cf431438df38e (patch) | |
tree | f4a1d6c2961339e0c1d653c0f8427a53315080f0 /ruby_2_2/lib/rss/maker.rb | |
parent | a5b755e50e2d9aabf28ba24bf58644ca22b01a4f (diff) |
add tag v2_2_9
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v2_2_9@61257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_2_2/lib/rss/maker.rb')
-rw-r--r-- | ruby_2_2/lib/rss/maker.rb | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/ruby_2_2/lib/rss/maker.rb b/ruby_2_2/lib/rss/maker.rb new file mode 100644 index 0000000000..824b2b2dcd --- /dev/null +++ b/ruby_2_2/lib/rss/maker.rb @@ -0,0 +1,78 @@ +require "rss/rss" + +module RSS + ## + # + # Provides a set of builders for various RSS objects + # + # * Feeds + # * RSS 0.91 + # * RSS 1.0 + # * RSS 2.0 + # * Atom 1.0 + # + # * Elements + # * Atom::Entry + + module Maker + + # Collection of supported makers + MAKERS = {} + + class << self + # Builder for an RSS object + # Creates an object of the type passed in +args+ + # + # Executes the +block+ to populate elements of the created RSS object + def make(version, &block) + self[version].make(&block) + end + + # Returns the maker for the +version+ + def [](version) + maker_info = maker(version) + raise UnsupportedMakerVersionError.new(version) if maker_info.nil? + maker_info[:maker] + end + + # Adds a maker to the set of supported makers + def add_maker(version, normalized_version, maker) + MAKERS[version] = {:maker => maker, :version => normalized_version} + end + + # Returns collection of supported maker versions + def versions + MAKERS.keys.uniq.sort + end + + # Returns collection of supported makers + def makers + MAKERS.values.collect { |info| info[:maker] }.uniq + end + + # Returns true if the version is supported + def supported?(version) + versions.include?(version) + end + + private + # Can I remove this method? + def maker(version) + MAKERS[version] + end + end + end +end + +require "rss/maker/1.0" +require "rss/maker/2.0" +require "rss/maker/feed" +require "rss/maker/entry" +require "rss/maker/content" +require "rss/maker/dublincore" +require "rss/maker/slash" +require "rss/maker/syndication" +require "rss/maker/taxonomy" +require "rss/maker/trackback" +require "rss/maker/image" +require "rss/maker/itunes" |