aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rss/maker/trackback.rb
diff options
context:
space:
mode:
authorkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-11-19 08:25:25 +0000
committerkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-11-19 08:25:25 +0000
commit9be1ed43c888249563f32a3df394a9841e4f9601 (patch)
tree4a484468fdf164dca7059a0d0e6ea6155ecd5682 /lib/rss/maker/trackback.rb
parent1c453c06081222e9b75dac428b08ffd26f1ca2a7 (diff)
downloadruby-9be1ed43c888249563f32a3df394a9841e4f9601.tar.gz
* lib/rss/rss.rb (RSS::VERSION): 0.1.0 -> 0.1.1.
* lib/rss: #to_s used #tag. * test/rss/test_to_s.rb: added. * lib/rss/maker.rb (RSS::Maker.make): changed API. It's not received modules which is used as the second argument. * lib/rss/xml-stylesheet.rb (RSS::XMLStyleSheet#alternate): changed return value type which is not String but Boolean. * lib/rss/2.0.rb (RSS::Rss::Channel#ttl): changed return value type which is not String but Integer. * lib/rss/0.9.rb (RSS::Rss::Channel): <skipDays> has <day>s and <skipHours> has <hour>s. * lib/rss/maker/0.9.rb (RSS::Maker::RSS09::Channel): ditto. * lib/rss/0.9.rb (RSS::Rss::Channel::Item): <item> has <category>s. * lib/rss/maker/2.0.rb (RSS::Maker::Rss20::Channel::Item): ditto. * lib/rss/2.0.rb (RSS::Rss::Channel): <channel> has <category>s. * lib/rss/maker/2.0.rb (RSS::Maker::RSS20::Channel): ditto. * lib/rss/trackback.rb: parent element has <trackback:about>s. * lib/rss/maker/trackback.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7319 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/maker/trackback.rb')
-rw-r--r--lib/rss/maker/trackback.rb118
1 files changed, 107 insertions, 11 deletions
diff --git a/lib/rss/maker/trackback.rb b/lib/rss/maker/trackback.rb
index 1ec59ab0b0..ef78bf2f20 100644
--- a/lib/rss/maker/trackback.rb
+++ b/lib/rss/maker/trackback.rb
@@ -1,5 +1,6 @@
require 'rss/trackback'
require 'rss/maker/1.0'
+require 'rss/maker/2.0'
module RSS
module Maker
@@ -7,18 +8,65 @@ module RSS
def self.append_features(klass)
super
- %w(ping about).each do |element|
- name = "#{RSS::TRACKBACK_PREFIX}_#{element}"
- klass.add_need_initialize_variable(name)
- klass.add_other_element(name)
- klass.__send__(:attr_accessor, name)
- klass.module_eval(<<-EOC, __FILE__, __LINE__)
- def setup_#{name}(rss, current)
- if #{name} and current.respond_to?(:#{name}=)
- current.#{name} = @#{name} if @#{name}
- end
+ name = "#{RSS::TRACKBACK_PREFIX}_ping"
+ klass.add_need_initialize_variable(name)
+ klass.add_other_element(name)
+ klass.__send__(:attr_accessor, name)
+ klass.module_eval(<<-EOC, __FILE__, __LINE__)
+ def setup_#{name}(rss, current)
+ if #{name} and current.respond_to?(:#{name}=)
+ current.#{name} = #{name}
end
- EOC
+ end
+ EOC
+
+ name = "#{RSS::TRACKBACK_PREFIX}_abouts"
+ klass.add_need_initialize_variable(name, "make_#{name}")
+ klass.add_other_element(name)
+ klass.__send__(:attr_accessor, name)
+ klass.module_eval(<<-EOC, __FILE__, __LINE__)
+ def make_#{name}
+ self.class::TrackBackAbouts.new(self)
+ end
+
+ def setup_#{name}(rss, current)
+ @#{name}.to_rss(rss, current)
+ end
+ EOC
+ end
+
+ class TrackBackAboutsBase
+ include Base
+
+ def_array_element("abouts")
+
+ def new_about
+ about = self.class::About.new(@maker)
+ @abouts << about
+ about
+ end
+
+ def to_rss(rss, current)
+ @abouts.each do |about|
+ about.to_rss(rss, current)
+ end
+ end
+
+ class AboutBase
+ include Base
+
+ attr_accessor :value
+ add_need_initialize_variable(:value)
+
+ alias_method(:resource, :value)
+ alias_method(:resource=, :value=)
+ alias_method(:content, :value)
+ alias_method(:content=, :value=)
+
+ def have_required_values?
+ @value
+ end
+
end
end
end
@@ -26,5 +74,53 @@ module RSS
class ItemsBase
class ItemBase; include TrackBackModel; end
end
+
+ class RSS10
+ class Items
+ class Item
+ class TrackBackAbouts < TrackBackAboutsBase
+ class About < AboutBase
+ def to_rss(rss, current)
+ if resource
+ about = ::RSS::TrackBackModel10::About.new(resource)
+ current.trackback_abouts << about
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+
+ class RSS09
+ class Items
+ class Item
+ class TrackBackAbouts < TrackBackAboutsBase
+ def to_rss(*args)
+ end
+ class About < AboutBase
+ end
+ end
+ end
+ end
+ end
+
+ class RSS20
+ class Items
+ class Item
+ class TrackBackAbouts < TrackBackAboutsBase
+ class About < AboutBase
+ def to_rss(rss, current)
+ if content
+ about = ::RSS::TrackBackModel20::About.new(content)
+ current.trackback_abouts << about
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+
end
end