* lib/rss/rss.rb (RSS::VERSION), test/rss/test_version.rb:
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/trunk@15431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
bd5a15f76d
commit
9d968bc221
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
Mon Feb 11 17:21:18 2008 Kouhei Sutou <kou@cozmixng.org>
|
||||||
|
|
||||||
|
* lib/rss/rss.rb (RSS::VERSION), test/rss/test_version.rb:
|
||||||
|
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.
|
||||||
|
|
||||||
Mon Feb 11 10:43:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
|
Mon Feb 11 10:43:31 2008 NARUSE, Yui <naruse@ruby-lang.org>
|
||||||
|
|
||||||
* ruby.c (load_file): the encoding of DATA follows the source
|
* ruby.c (load_file): the encoding of DATA follows the source
|
||||||
|
@ -8,15 +8,15 @@ module RSS
|
|||||||
def make(version, &block)
|
def make(version, &block)
|
||||||
m = maker(version)
|
m = maker(version)
|
||||||
raise UnsupportedMakerVersionError.new(version) if m.nil?
|
raise UnsupportedMakerVersionError.new(version) if m.nil?
|
||||||
m.make(&block)
|
m[:maker].make(m[:version], &block)
|
||||||
end
|
end
|
||||||
|
|
||||||
def maker(version)
|
def maker(version)
|
||||||
MAKERS[version]
|
MAKERS[version]
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_maker(version, maker)
|
def add_maker(version, normalized_version, maker)
|
||||||
MAKERS[version] = maker
|
MAKERS[version] = {:maker => maker, :version => normalized_version}
|
||||||
end
|
end
|
||||||
|
|
||||||
def versions
|
def versions
|
||||||
@ -24,7 +24,7 @@ module RSS
|
|||||||
end
|
end
|
||||||
|
|
||||||
def makers
|
def makers
|
||||||
MAKERS.values.uniq
|
MAKERS.values.collect {|info| info[:maker]}.uniq
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -7,7 +7,7 @@ module RSS
|
|||||||
|
|
||||||
class RSS09 < RSSBase
|
class RSS09 < RSSBase
|
||||||
|
|
||||||
def initialize(feed_version="0.91")
|
def initialize(feed_version="0.92")
|
||||||
super
|
super
|
||||||
@feed_type = "rss"
|
@feed_type = "rss"
|
||||||
end
|
end
|
||||||
@ -258,23 +258,27 @@ module RSS
|
|||||||
def to_feed(rss)
|
def to_feed(rss)
|
||||||
item = Rss::Channel::Item.new
|
item = Rss::Channel::Item.new
|
||||||
set = setup_values(item)
|
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
|
rss.items << item
|
||||||
set_parent(item, rss.channel)
|
set_parent(item, rss.channel)
|
||||||
setup_other_elements(rss, item)
|
setup_other_elements(rss, item)
|
||||||
elsif variable_is_set?
|
elsif variable_is_set?
|
||||||
raise NotSetError.new("maker.items", not_set_required_variables)
|
raise NotSetError.new("maker.items", _not_set_required_variables)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def required_variable_names
|
def required_variable_names
|
||||||
%w(link)
|
[]
|
||||||
end
|
end
|
||||||
|
|
||||||
def not_set_required_variables
|
def not_set_required_variables
|
||||||
vars = super
|
vars = super
|
||||||
|
if @maker.feed_version == "0.91"
|
||||||
vars << "title" unless title {|t| t.have_required_values?}
|
vars << "title" unless title {|t| t.have_required_values?}
|
||||||
|
vars << "link" unless link {|l| l.have_required_values?}
|
||||||
|
end
|
||||||
vars
|
vars
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -454,8 +458,10 @@ module RSS
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
add_maker("0.9", RSS09)
|
add_maker("0.9", "0.92", RSS09)
|
||||||
add_maker("0.91", RSS09)
|
add_maker("0.91", "0.91", RSS09)
|
||||||
add_maker("rss0.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
|
||||||
end
|
end
|
||||||
|
@ -7,8 +7,8 @@ module RSS
|
|||||||
|
|
||||||
class RSS10 < RSSBase
|
class RSS10 < RSSBase
|
||||||
|
|
||||||
def initialize
|
def initialize(feed_version="1.0")
|
||||||
super("1.0")
|
super
|
||||||
@feed_type = "rss"
|
@feed_type = "rss"
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -428,7 +428,7 @@ module RSS
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
add_maker("1.0", RSS10)
|
add_maker("1.0", "1.0", RSS10)
|
||||||
add_maker("rss1.0", RSS10)
|
add_maker("rss1.0", "1.0", RSS10)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -93,7 +93,16 @@ module RSS
|
|||||||
class Item < RSS09::Items::Item
|
class Item < RSS09::Items::Item
|
||||||
private
|
private
|
||||||
def required_variable_names
|
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
|
end
|
||||||
|
|
||||||
def variables
|
def variables
|
||||||
@ -208,7 +217,7 @@ module RSS
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
add_maker("2.0", RSS20)
|
add_maker("2.0", "2.0", RSS20)
|
||||||
add_maker("rss2.0", RSS20)
|
add_maker("rss2.0", "2.0", RSS20)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -357,8 +357,8 @@ module RSS
|
|||||||
|
|
||||||
class RSSBase < Base
|
class RSSBase < Base
|
||||||
class << self
|
class << self
|
||||||
def make(&block)
|
def make(version, &block)
|
||||||
new.make(&block)
|
new(version).make(&block)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -5,8 +5,8 @@ module RSS
|
|||||||
module Maker
|
module Maker
|
||||||
module Atom
|
module Atom
|
||||||
class Entry < RSSBase
|
class Entry < RSSBase
|
||||||
def initialize
|
def initialize(feed_version="1.0")
|
||||||
super("1.0")
|
super
|
||||||
@feed_type = "atom"
|
@feed_type = "atom"
|
||||||
@feed_subtype = "entry"
|
@feed_subtype = "entry"
|
||||||
end
|
end
|
||||||
@ -157,7 +157,7 @@ module RSS
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
add_maker("atom:entry", Atom::Entry)
|
add_maker("atom:entry", "1.0", Atom::Entry)
|
||||||
add_maker("atom1.0:entry", Atom::Entry)
|
add_maker("atom1.0:entry", "1.0", Atom::Entry)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -4,8 +4,8 @@ module RSS
|
|||||||
module Maker
|
module Maker
|
||||||
module Atom
|
module Atom
|
||||||
class Feed < RSSBase
|
class Feed < RSSBase
|
||||||
def initialize
|
def initialize(feed_version="1.0")
|
||||||
super("1.0")
|
super
|
||||||
@feed_type = "atom"
|
@feed_type = "atom"
|
||||||
@feed_subtype = "feed"
|
@feed_subtype = "feed"
|
||||||
end
|
end
|
||||||
@ -421,9 +421,9 @@ module RSS
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
add_maker("atom", Atom::Feed)
|
add_maker("atom", "1.0", Atom::Feed)
|
||||||
add_maker("atom:feed", Atom::Feed)
|
add_maker("atom:feed", "1.0", Atom::Feed)
|
||||||
add_maker("atom1.0", Atom::Feed)
|
add_maker("atom1.0", "1.0", Atom::Feed)
|
||||||
add_maker("atom1.0:feed", Atom::Feed)
|
add_maker("atom1.0:feed", "1.0", Atom::Feed)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -53,7 +53,7 @@ require "rss/xml-stylesheet"
|
|||||||
|
|
||||||
module RSS
|
module RSS
|
||||||
|
|
||||||
VERSION = "0.2.3"
|
VERSION = "0.2.4"
|
||||||
|
|
||||||
URI = "http://purl.org/rss/1.0/"
|
URI = "http://purl.org/rss/1.0/"
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ module RSS
|
|||||||
setup_dummy_channel(maker)
|
setup_dummy_channel(maker)
|
||||||
setup_dummy_image(maker)
|
setup_dummy_image(maker)
|
||||||
end
|
end
|
||||||
assert_equal("0.91", rss.rss_version)
|
assert_equal("0.92", rss.rss_version)
|
||||||
|
|
||||||
rss = RSS::Maker.make("0.91") do |maker|
|
rss = RSS::Maker.make("0.91") do |maker|
|
||||||
setup_dummy_channel(maker)
|
setup_dummy_channel(maker)
|
||||||
|
@ -430,6 +430,35 @@ module RSS
|
|||||||
test_items(false)
|
test_items(false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_pubDate_without_description
|
||||||
|
title = "TITLE"
|
||||||
|
link = "http://hoge.com/"
|
||||||
|
description = "text hoge fuga"
|
||||||
|
author = "oprah@oxygen.net"
|
||||||
|
pubDate = Time.now
|
||||||
|
|
||||||
|
rss = RSS::Maker.make("2.0") do |maker|
|
||||||
|
setup_dummy_channel(maker)
|
||||||
|
|
||||||
|
maker.items.new_item do |item|
|
||||||
|
item.title = title
|
||||||
|
item.link = link
|
||||||
|
# item.description = description
|
||||||
|
item.author = author
|
||||||
|
item.pubDate = pubDate
|
||||||
|
end
|
||||||
|
end
|
||||||
|
assert_equal(1, rss.items.size)
|
||||||
|
rss.channel.items.each_with_index do |item, i|
|
||||||
|
assert_equal(title, item.title)
|
||||||
|
assert_equal(link, item.link)
|
||||||
|
# assert_equal(description, item.description)
|
||||||
|
assert_equal(author, item.author)
|
||||||
|
assert_equal(pubDate, item.pubDate)
|
||||||
|
assert_equal(pubDate, item.date)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_guid
|
def test_guid
|
||||||
isPermaLink = "true"
|
isPermaLink = "true"
|
||||||
content = "http://inessential.com/2002/09/01.php#a2"
|
content = "http://inessential.com/2002/09/01.php#a2"
|
||||||
|
@ -3,7 +3,7 @@ require "rss-testcase"
|
|||||||
module RSS
|
module RSS
|
||||||
class TestVersion < TestCase
|
class TestVersion < TestCase
|
||||||
def test_version
|
def test_version
|
||||||
assert_equal("0.2.3", ::RSS::VERSION)
|
assert_equal("0.2.4", ::RSS::VERSION)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user