summaryrefslogtreecommitdiff
path: root/ruby_2_2/lib/rss/maker.rb
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-14 15:09:35 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-14 15:09:35 +0000
commit1a74fa4b04da04bd2bb33103dd3cf431438df38e (patch)
treef4a1d6c2961339e0c1d653c0f8427a53315080f0 /ruby_2_2/lib/rss/maker.rb
parenta5b755e50e2d9aabf28ba24bf58644ca22b01a4f (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.rb78
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"