diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-11 08:26:47 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-11 08:26:47 +0000 |
commit | d7a4285e9df226995469e45246e465783ca9aeca (patch) | |
tree | 61250168c1b05ccdcf6eb17340eea61084a2aae4 /lib | |
parent | 52273f82e58b0b34815eedfd6e13d996e15311b0 (diff) |
* lib/rss/rss.rb (RSS::VERSION), test/rss/test_version.rb, NEWS:
0.2.3 -> 0.2.4.
* lib/rss/maker.rb, lib/rss/maker/, test/rss/test_maker_2.0.rb:
fixed a bug that RSS::Maker.make("0.9")'s item doesn't make some
elements if description is missed.
Reported by Michael Auzenne. Thanks!!!
* lib/rss/maker/0.9.rb, test/rss/test_maker_0.9.rb:
RSS::Maker.make("0.9") generates RSS 0.92 not RSS 0.91.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15432 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rss/maker.rb | 8 | ||||
-rw-r--r-- | lib/rss/maker/0.9.rb | 22 | ||||
-rw-r--r-- | lib/rss/maker/1.0.rb | 8 | ||||
-rw-r--r-- | lib/rss/maker/2.0.rb | 15 | ||||
-rw-r--r-- | lib/rss/maker/base.rb | 4 | ||||
-rw-r--r-- | lib/rss/maker/entry.rb | 8 | ||||
-rw-r--r-- | lib/rss/maker/feed.rb | 12 | ||||
-rw-r--r-- | lib/rss/rss.rb | 2 |
8 files changed, 47 insertions, 32 deletions
diff --git a/lib/rss/maker.rb b/lib/rss/maker.rb index 666dfa872d..bcba1aaff3 100644 --- a/lib/rss/maker.rb +++ b/lib/rss/maker.rb @@ -8,15 +8,15 @@ module RSS def make(version, &block) m = maker(version) raise UnsupportedMakerVersionError.new(version) if m.nil? - m.make(&block) + m[:maker].make(m[:version], &block) end def maker(version) MAKERS[version] end - def add_maker(version, maker) - MAKERS[version] = maker + def add_maker(version, normalized_version, maker) + MAKERS[version] = {:maker => maker, :version => normalized_version} end def versions @@ -24,7 +24,7 @@ module RSS end def makers - MAKERS.values.uniq + MAKERS.values.collect {|info| info[:maker]}.uniq end end end diff --git a/lib/rss/maker/0.9.rb b/lib/rss/maker/0.9.rb index c83597dfd5..72b14dc977 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.91") + def initialize(feed_version="0.92") super @feed_type = "rss" end @@ -258,23 +258,27 @@ module RSS def to_feed(rss) item = Rss::Channel::Item.new set = setup_values(item) - if set or title {|t| t.have_required_values?} + _not_set_required_variables = not_set_required_variables + if _not_set_required_variables.empty? rss.items << item set_parent(item, rss.channel) setup_other_elements(rss, item) elsif variable_is_set? - raise NotSetError.new("maker.items", not_set_required_variables) + raise NotSetError.new("maker.items", _not_set_required_variables) end end private def required_variable_names - %w(link) + [] end def not_set_required_variables vars = super - vars << "title" unless title {|t| t.have_required_values?} + if @maker.feed_version == "0.91" + vars << "title" unless title {|t| t.have_required_values?} + vars << "link" unless link {|l| l.have_required_values?} + end vars end @@ -454,8 +458,10 @@ module RSS end end - add_maker("0.9", RSS09) - add_maker("0.91", RSS09) - add_maker("rss0.91", RSS09) + 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) end end diff --git a/lib/rss/maker/1.0.rb b/lib/rss/maker/1.0.rb index c4af6e9b2e..a1e2594f70 100644 --- a/lib/rss/maker/1.0.rb +++ b/lib/rss/maker/1.0.rb @@ -7,8 +7,8 @@ module RSS class RSS10 < RSSBase - def initialize - super("1.0") + def initialize(feed_version="1.0") + super @feed_type = "rss" end @@ -428,7 +428,7 @@ module RSS end end - add_maker("1.0", RSS10) - add_maker("rss1.0", RSS10) + add_maker("1.0", "1.0", RSS10) + add_maker("rss1.0", "1.0", RSS10) end end diff --git a/lib/rss/maker/2.0.rb b/lib/rss/maker/2.0.rb index 9149c0e24b..67d68126ac 100644 --- a/lib/rss/maker/2.0.rb +++ b/lib/rss/maker/2.0.rb @@ -93,7 +93,16 @@ module RSS class Item < RSS09::Items::Item private def required_variable_names - %w(title description) + [] + end + + def not_set_required_variables + vars = super + if !title {|t| t.have_required_values?} and + !description {|d| d.have_required_values?} + vars << "title or description" + end + vars end def variables @@ -208,7 +217,7 @@ module RSS end end - add_maker("2.0", RSS20) - add_maker("rss2.0", RSS20) + add_maker("2.0", "2.0", RSS20) + add_maker("rss2.0", "2.0", RSS20) end end diff --git a/lib/rss/maker/base.rb b/lib/rss/maker/base.rb index fdb8946efc..56bf04657e 100644 --- a/lib/rss/maker/base.rb +++ b/lib/rss/maker/base.rb @@ -357,8 +357,8 @@ module RSS class RSSBase < Base class << self - def make(&block) - new.make(&block) + def make(version, &block) + new(version).make(&block) end end diff --git a/lib/rss/maker/entry.rb b/lib/rss/maker/entry.rb index be648832c3..edaa31ec06 100644 --- a/lib/rss/maker/entry.rb +++ b/lib/rss/maker/entry.rb @@ -5,8 +5,8 @@ module RSS module Maker module Atom class Entry < RSSBase - def initialize - super("1.0") + def initialize(feed_version="1.0") + super @feed_type = "atom" @feed_subtype = "entry" end @@ -157,7 +157,7 @@ module RSS end end - add_maker("atom:entry", Atom::Entry) - add_maker("atom1.0:entry", Atom::Entry) + add_maker("atom:entry", "1.0", Atom::Entry) + add_maker("atom1.0:entry", "1.0", Atom::Entry) end end diff --git a/lib/rss/maker/feed.rb b/lib/rss/maker/feed.rb index 95ae735c6b..3a30ad4287 100644 --- a/lib/rss/maker/feed.rb +++ b/lib/rss/maker/feed.rb @@ -4,8 +4,8 @@ module RSS module Maker module Atom class Feed < RSSBase - def initialize - super("1.0") + def initialize(feed_version="1.0") + super @feed_type = "atom" @feed_subtype = "feed" end @@ -421,9 +421,9 @@ module RSS end end - add_maker("atom", Atom::Feed) - add_maker("atom:feed", Atom::Feed) - add_maker("atom1.0", Atom::Feed) - add_maker("atom1.0:feed", Atom::Feed) + add_maker("atom", "1.0", Atom::Feed) + add_maker("atom:feed", "1.0", Atom::Feed) + add_maker("atom1.0", "1.0", Atom::Feed) + add_maker("atom1.0:feed", "1.0", Atom::Feed) end end diff --git a/lib/rss/rss.rb b/lib/rss/rss.rb index 04dfdf8052..5aa4a2cedd 100644 --- a/lib/rss/rss.rb +++ b/lib/rss/rss.rb @@ -52,7 +52,7 @@ require "rss/xml-stylesheet" module RSS - VERSION = "0.2.3" + VERSION = "0.2.4" URI = "http://purl.org/rss/1.0/" |