From 277f48de57ce32717ed6de16c4d96900b237fbf8 Mon Sep 17 00:00:00 2001 From: kou Date: Sat, 16 May 2009 09:01:18 +0000 Subject: * lib/rss/maker/base.rb, lib/rss/maker/1.0.rb, lib/rss/maker/feed.rb, test/rss/test_maker_1.0.rb, test/rss/test_maker_atom_feed.rb: RSS 1.0 and Atom feed maker treat maker.channel.language as maker.channel.dc_language. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23445 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ lib/rss/maker/1.0.rb | 1 + lib/rss/maker/base.rb | 19 +++++++++++++++++++ lib/rss/maker/feed.rb | 2 ++ test/rss/test_maker_1.0.rb | 20 ++++++++++++++++++++ test/rss/test_maker_atom_feed.rb | 9 +++++++++ 6 files changed, 58 insertions(+) diff --git a/ChangeLog b/ChangeLog index 84bf7b09dd..7435b7f077 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sat May 16 18:02:16 2009 Kouhei Sutou + + * lib/rss/maker/base.rb, lib/rss/maker/1.0.rb, lib/rss/maker/feed.rb, + test/rss/test_maker_1.0.rb, test/rss/test_maker_atom_feed.rb: + RSS 1.0 and Atom feed maker treat maker.channel.language as + maker.channel.dc_language. + Sat May 16 17:57:39 2009 Nobuyoshi Nakada * ext/dl/lib/dl/callback.rb (DL#remove_callback_internal): ignore diff --git a/lib/rss/maker/1.0.rb b/lib/rss/maker/1.0.rb index 676f662915..0d8075f836 100644 --- a/lib/rss/maker/1.0.rb +++ b/lib/rss/maker/1.0.rb @@ -25,6 +25,7 @@ module RSS end class Channel < ChannelBase + include SetupDefaultLanguage def to_feed(rss) set_default_values do diff --git a/lib/rss/maker/base.rb b/lib/rss/maker/base.rb index 615088f8f7..6b42f11fcb 100644 --- a/lib/rss/maker/base.rb +++ b/lib/rss/maker/base.rb @@ -372,6 +372,25 @@ module RSS end end + module SetupDefaultLanguage + private + def _set_default_values(&block) + keep = { + :dc_languages => dc_languages.to_a.dup, + } + _language = language + if _language and + !dc_languages.any? {|dc_language| dc_language.value == _language} + dc_language = self.class::DublinCoreLanguages::DublinCoreLanguage.new(self) + dc_language.value = _language.dup + dc_languages.unshift(dc_language) + end + super(&block) + ensure + dc_languages.replace(keep[:dc_languages]) + end + end + class RSSBase < Base class << self def make(*args, &block) diff --git a/lib/rss/maker/feed.rb b/lib/rss/maker/feed.rb index 3a30ad4287..fa3a177160 100644 --- a/lib/rss/maker/feed.rb +++ b/lib/rss/maker/feed.rb @@ -22,6 +22,8 @@ module RSS end class Channel < ChannelBase + include SetupDefaultLanguage + def to_feed(feed) set_default_values do setup_values(feed) diff --git a/test/rss/test_maker_1.0.rb b/test/rss/test_maker_1.0.rb index ab6f6ade6b..47bfe99ba2 100644 --- a/test/rss/test_maker_1.0.rb +++ b/test/rss/test_maker_1.0.rb @@ -95,6 +95,26 @@ module RSS assert_equal(rss.textinput.about, channel.textinput.resource) end + def test_channel_language + about = "http://hoge.com" + title = "fugafuga" + link = "http://hoge.com" + description = "fugafugafugafuga" + language = "ja" + + rss = RSS::Maker.make("1.0") do |maker| + maker.channel.about = about + maker.channel.title = title + maker.channel.link = link + maker.channel.description = description + maker.channel.language = language + + setup_dummy_item(maker) + end + channel = rss.channel + assert_equal(language, channel.dc_language) + end + def test_not_valid_channel about = "http://hoge.com" title = "fugafuga" diff --git a/test/rss/test_maker_atom_feed.rb b/test/rss/test_maker_atom_feed.rb index 378cf9ac31..8b32189b9d 100644 --- a/test/rss/test_maker_atom_feed.rb +++ b/test/rss/test_maker_atom_feed.rb @@ -392,5 +392,14 @@ module RSS setup_dummy_item_atom(maker) end end + + def test_language + language = "ja" + feed = Maker.make("atom") do |maker| + setup_dummy_channel_atom(maker) + maker.channel.language = "ja" + end + assert_equal(language, feed.dc_language) + end end end -- cgit v1.2.3