From 876e1b87e7c0f2175932d7814c4ffbd272e01471 Mon Sep 17 00:00:00 2001 From: kou Date: Thu, 11 Dec 2008 12:06:26 +0000 Subject: * lib/rss/maker.rb, lib/rss/maker/0.9.rb, lib/rss/maker/base.rb: RSS::Maker.[] returns a maker class corresponds to passed version. * test/rss/test_maker_*.rb: add tests for RSS::Maker.[]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20643 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rss/maker/0.9.rb | 54 ++++++++++++++++++++++++++++++++++++++++++++------- lib/rss/maker/base.rb | 6 +++--- 2 files changed, 50 insertions(+), 10 deletions(-) (limited to 'lib/rss/maker') diff --git a/lib/rss/maker/0.9.rb b/lib/rss/maker/0.9.rb index 72b14dc977..cc7db8c638 100644 --- a/lib/rss/maker/0.9.rb +++ b/lib/rss/maker/0.9.rb @@ -7,7 +7,7 @@ module RSS class RSS09 < RSSBase - def initialize(feed_version="0.92") + def initialize(feed_version) super @feed_type = "rss" end @@ -457,11 +457,51 @@ module RSS end end end - - add_maker("0.9", "0.92", RSS09) - add_maker("0.91", "0.91", RSS09) - add_maker("0.92", "0.92", RSS09) - add_maker("rss0.91", "0.91", RSS09) - add_maker("rss0.92", "0.92", RSS09) + + class RSS091 < RSS09 + def initialize(feed_version="0.91") + super + end + + class Channel < RSS09::Channel + end + + class Items < RSS09::Items + class Item < RSS09::Items::Item + end + end + + class Image < RSS09::Image + end + + class Textinput < RSS09::Textinput + end + end + + class RSS092 < RSS09 + def initialize(feed_version="0.92") + super + end + + class Channel < RSS09::Channel + end + + class Items < RSS09::Items + class Item < RSS09::Items::Item + end + end + + class Image < RSS09::Image + end + + class Textinput < RSS09::Textinput + end + end + + add_maker("0.9", "0.92", RSS092) + add_maker("0.91", "0.91", RSS091) + add_maker("0.92", "0.92", RSS092) + add_maker("rss0.91", "0.91", RSS091) + add_maker("rss0.92", "0.92", RSS092) end end diff --git a/lib/rss/maker/base.rb b/lib/rss/maker/base.rb index 2262a764ec..3a7d255ae9 100644 --- a/lib/rss/maker/base.rb +++ b/lib/rss/maker/base.rb @@ -374,8 +374,8 @@ module RSS class RSSBase < Base class << self - def make(version, &block) - new(version).make(&block) + def make(*args, &block) + new(*args).make(&block) end end @@ -384,7 +384,7 @@ module RSS add_need_initialize_variable(element) do |object| object.send("make_#{element}") end - module_eval(<<-EOC, __FILE__, __LINE__) + module_eval(<<-EOC, __FILE__, __LINE__ + 1) private def setup_#{element}(feed) @#{element}.to_feed(feed) -- cgit v1.2.3