summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-11 08:26:47 +0000
committerkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-02-11 08:26:47 +0000
commitd7a4285e9df226995469e45246e465783ca9aeca (patch)
tree61250168c1b05ccdcf6eb17340eea61084a2aae4 /lib
parent52273f82e58b0b34815eedfd6e13d996e15311b0 (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.rb8
-rw-r--r--lib/rss/maker/0.9.rb22
-rw-r--r--lib/rss/maker/1.0.rb8
-rw-r--r--lib/rss/maker/2.0.rb15
-rw-r--r--lib/rss/maker/base.rb4
-rw-r--r--lib/rss/maker/entry.rb8
-rw-r--r--lib/rss/maker/feed.rb12
-rw-r--r--lib/rss/rss.rb2
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/"