diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-06-17 00:26:41 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-06-17 00:26:41 +0000 |
commit | 4a396a8b7a1d806b9f3893ffd065536695245b1c (patch) | |
tree | 88c0ae0648d8f16759a9bb51d2ef1ae900c083ca /lib/rss | |
parent | f1c37d2bf90986beddfc6fa60f45c1c55a6de94f (diff) |
* lib/rss, test/rss: backported from trunk. (2005-11-16 - now)
* lib/rss/maker/taxonomy.rb: implemented taxonomy module for RSS
Maker.
* lib/rss/taxonomy.rb: supported RSS Maker.
* lib/rss/maker.rb: added taxonomy module support.
* lib/rss/rss.rb: adjusted to other element API.
* lib/rss/1.0.rb: adjusted to other element API but backward
compatibility is reserved.
* lib/rss/0.9.rb: ditto.
* test/rss/test_maker_taxo.rb: added test case for taxonomy module
for RSS Maker.
* test/rss/test_setup_maker_1.0.rb: added tests for taxo:topic.
* test/rss/test_setup_maker_1.0.rb: added backward compatibility
test.
* test/rss/test_setup_maker_0.9.rb: ditto.
* test/rss/test_setup_maker_2.0.rb: ditto.
* test/rss/rss-testcase.rb: added convenience method for setting
up taxo:topic.
* test/rss/rss-assertions.rb: added assertion for taxo:topic.
* sample/rss/blend.rb: followed new API.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10291 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss')
-rw-r--r-- | lib/rss/0.9.rb | 8 | ||||
-rw-r--r-- | lib/rss/1.0.rb | 20 | ||||
-rw-r--r-- | lib/rss/maker.rb | 1 | ||||
-rw-r--r-- | lib/rss/maker/taxonomy.rb | 50 | ||||
-rw-r--r-- | lib/rss/rss.rb | 5 | ||||
-rw-r--r-- | lib/rss/taxonomy.rb | 10 |
6 files changed, 60 insertions, 34 deletions
diff --git a/lib/rss/0.9.rb b/lib/rss/0.9.rb index 3bbf67be05..41b8fced73 100644 --- a/lib/rss/0.9.rb +++ b/lib/rss/0.9.rb @@ -472,8 +472,12 @@ module RSS rv end - def maker_target(maker) - maker.items.new_item + def maker_target(items) + if items.respond_to?("items") + # For backward compatibility + items = items.items + end + items.new_item end def setup_maker_element(item) diff --git a/lib/rss/1.0.rb b/lib/rss/1.0.rb index 5c7e3f5e62..00d8c3abdb 100644 --- a/lib/rss/1.0.rb +++ b/lib/rss/1.0.rb @@ -170,6 +170,12 @@ module RSS tag_name_with_prefix(PREFIX) end + def setup_maker(target) + lis.each do |li| + target << li.resource + end + end + private def children @li @@ -224,6 +230,12 @@ module RSS tag_name_with_prefix(PREFIX) end + def setup_maker(target) + lis.each do |li| + target << li.resource + end + end + private def children @li @@ -600,8 +612,12 @@ module RSS ] end - def maker_target(maker) - maker.items.new_item + def maker_target(items) + if items.respond_to?("items") + # For backward compatibility + items = items.items + end + items.new_item end end diff --git a/lib/rss/maker.rb b/lib/rss/maker.rb index d248711aa2..9ed799ac7f 100644 --- a/lib/rss/maker.rb +++ b/lib/rss/maker.rb @@ -32,5 +32,6 @@ require "rss/maker/2.0" require "rss/maker/content" require "rss/maker/dublincore" require "rss/maker/syndication" +require "rss/maker/taxonomy" require "rss/maker/trackback" require "rss/maker/image" diff --git a/lib/rss/maker/taxonomy.rb b/lib/rss/maker/taxonomy.rb index 2e54ea66eb..0249afc2f2 100644 --- a/lib/rss/maker/taxonomy.rb +++ b/lib/rss/maker/taxonomy.rb @@ -4,7 +4,7 @@ require 'rss/maker/dublincore' module RSS module Maker - module TaxonomyTopicsModel + module TaxoTopicsModel def self.append_features(klass) super @@ -13,7 +13,7 @@ module RSS klass.module_eval(<<-EOC, __FILE__, __LINE__ + 1) attr_reader :taxo_topics def make_taxo_topics - self.class::TaxonomyTopics.new(@maker) + self.class::TaxoTopics.new(@maker) end def setup_taxo_topics(rss, current) @@ -24,10 +24,10 @@ EOC def self.install_taxo_topics(klass) klass.module_eval(<<-EOC, *Utils.get_file_and_line_from_caller(1)) - class TaxonomyTopics < TaxonomyTopicsBase + class TaxoTopics < TaxoTopicsBase def to_rss(rss, current) if current.respond_to?(:taxo_topics) - topics = current.class::TaxonomyTopics.new + topics = current.class::TaxoTopics.new bag = topics.Bag @resources.each do |resource| bag.lis << RDF::Bag::Li.new(resource) @@ -39,7 +39,7 @@ EOC EOC end - class TaxonomyTopicsBase + class TaxoTopicsBase include Base attr_reader :resources @@ -47,7 +47,7 @@ EOC end end - module TaxonomyTopicModel + module TaxoTopicModel def self.append_features(klass) super @@ -56,7 +56,7 @@ EOC klass.module_eval(<<-EOC, __FILE__, __LINE__ + 1) attr_reader :taxo_topics def make_taxo_topics - self.class::TaxonomyTopics.new(@maker) + self.class::TaxoTopics.new(@maker) end def setup_taxo_topics(rss, current) @@ -68,7 +68,7 @@ EOC end def taxo_topic=(new_value) - @taxo_topic[0] = self.class::TaxonomyTopic.new(self) + @taxo_topic[0] = self.class::TaxoTopic.new(self) @taxo_topic[0].value = new_value end EOC @@ -76,14 +76,14 @@ EOC def self.install_taxo_topic(klass) klass.module_eval(<<-EOC, *Utils.get_file_and_line_from_caller(1)) - class TaxonomyTopics < TaxonomyTopicsBase - class TaxonomyTopic < TaxonomyTopicBase + class TaxoTopics < TaxoTopicsBase + class TaxoTopic < TaxoTopicBase DublinCoreModel.install_dublin_core(self) - TaxonomyTopicsModel.install_taxo_topics(self) + TaxoTopicsModel.install_taxo_topics(self) def to_rss(rss, current) if current.respond_to?(:taxo_topics) - topic = current.class::TaxonomyTopic.new(value) + topic = current.class::TaxoTopic.new(value) topic.taxo_link = value taxo_topics.to_rss(rss, topic) if taxo_topics current.taxo_topics << topic @@ -99,13 +99,13 @@ EOC EOC end - class TaxonomyTopicsBase + class TaxoTopicsBase include Base def_array_element("taxo_topics") def new_taxo_topic - taxo_topic = self.class::TaxonomyTopic.new(self) + taxo_topic = self.class::TaxoTopic.new(self) @taxo_topics << taxo_topic taxo_topic end @@ -116,10 +116,10 @@ EOC end end - class TaxonomyTopicBase + class TaxoTopicBase include Base include DublinCoreModel - include TaxonomyTopicsModel + include TaxoTopicsModel attr_accessor :value add_need_initialize_variable("value") @@ -134,43 +134,43 @@ EOC end class RSSBase - include TaxonomyTopicModel + include TaxoTopicModel end class ChannelBase - include TaxonomyTopicsModel + include TaxoTopicsModel end class ItemsBase class ItemBase - include TaxonomyTopicsModel + include TaxoTopicsModel end end class RSS10 - TaxonomyTopicModel.install_taxo_topic(self) + TaxoTopicModel.install_taxo_topic(self) class Channel - TaxonomyTopicsModel.install_taxo_topics(self) + TaxoTopicsModel.install_taxo_topics(self) end class Items class Item - TaxonomyTopicsModel.install_taxo_topics(self) + TaxoTopicsModel.install_taxo_topics(self) end end end class RSS09 - TaxonomyTopicModel.install_taxo_topic(self) + TaxoTopicModel.install_taxo_topic(self) class Channel - TaxonomyTopicsModel.install_taxo_topics(self) + TaxoTopicsModel.install_taxo_topics(self) end class Items class Item - TaxonomyTopicsModel.install_taxo_topics(self) + TaxoTopicsModel.install_taxo_topics(self) end end end diff --git a/lib/rss/rss.rb b/lib/rss/rss.rb index 7ccf1aefa1..7acbef275d 100644 --- a/lib/rss/rss.rb +++ b/lib/rss/rss.rb @@ -655,7 +655,6 @@ EOC def setup_maker_elements(parent) self.class.have_children_elements.each do |name, plural_name| - real_name = name.sub(/^[^_]+_/, '') if parent.respond_to?(plural_name) target = parent.__send__(plural_name) __send__(plural_name).each do |elem| @@ -894,9 +893,7 @@ EOC channel.setup_maker(maker) if channel image.setup_maker(maker) if image textinput.setup_maker(maker) if textinput - items.each do |item| - item.setup_maker(maker) - end + super(maker) end end diff --git a/lib/rss/taxonomy.rb b/lib/rss/taxonomy.rb index 3eb5b893aa..d2ab7df854 100644 --- a/lib/rss/taxonomy.rb +++ b/lib/rss/taxonomy.rb @@ -76,6 +76,10 @@ module RSS def full_name tag_name_with_prefix(TAXO_PREFIX) end + + def maker_target(target) + target.taxo_topics + end def to_s(need_convert=true, indent=calc_indent) rv = tag(indent) do |next_indent| @@ -95,7 +99,7 @@ module RSS [] end end - + private def children [@Bag] @@ -183,6 +187,10 @@ module RSS end end + def maker_target(target) + target.new_taxo_topic + end + private def children [@taxo_link, @taxo_topics] |