summaryrefslogtreecommitdiffstats
path: root/lib/rss/maker/trackback.rb
diff options
context:
space:
mode:
authorkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-08 12:58:36 +0000
committerkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-08 12:58:36 +0000
commit2fa78a09f7d3c35640f261cc427944a5011401cc (patch)
treea54da3329420c04614c460c3b45388951a790aa2 /lib/rss/maker/trackback.rb
parent1fc7f84ed05d1a457040d9be92e753ceb6cc66ce (diff)
downloadruby-2fa78a09f7d3c35640f261cc427944a5011401cc.tar.gz
ruby-2fa78a09f7d3c35640f261cc427944a5011401cc.tar.xz
ruby-2fa78a09f7d3c35640f261cc427944a5011401cc.zip
* lib/rss, test/rss, sample/rss: backported from CVS HEAD.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@7509 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 1ec59ab0b..ef78bf2f2 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