aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rss/maker/0.9.rb
diff options
context:
space:
mode:
authorkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-10-31 14:14:21 +0000
committerkou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-10-31 14:14:21 +0000
commitd58d59b0a4fa6859a3d3efd1a9d40832c3007ecf (patch)
treef9ae1db068b4fe971550f6cb2afda5a2c399f2bd /lib/rss/maker/0.9.rb
parentc6cf2e24fe9895b84308374017100cb77900d6db (diff)
downloadruby-d58d59b0a4fa6859a3d3efd1a9d40832c3007ecf.tar.gz
* lib/rss/maker/*.rb: added RSS Maker.
* test/rss/test_maker_*.rb: added tests for RSS Maker. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/maker/0.9.rb')
-rw-r--r--lib/rss/maker/0.9.rb163
1 files changed, 163 insertions, 0 deletions
diff --git a/lib/rss/maker/0.9.rb b/lib/rss/maker/0.9.rb
new file mode 100644
index 0000000000..7223246647
--- /dev/null
+++ b/lib/rss/maker/0.9.rb
@@ -0,0 +1,163 @@
+require "rss/0.9"
+
+require "rss/maker/base"
+
+module RSS
+ module Maker
+
+ class RSS09 < RSSBase
+
+ def initialize(rss_version="0.91")
+ super
+ end
+
+ def to_rss
+ rss = Rss.new(@rss_version, @version, @encoding, @standalone)
+ setup_xml_stylesheets(rss)
+ setup_channel(rss)
+ setup_other_elements(rss)
+ if rss.channel
+ rss
+ else
+ nil
+ end
+ end
+
+ private
+ def setup_channel(rss)
+ @channel.to_rss(rss)
+ end
+
+ class Channel < ChannelBase
+
+ alias_method(:pubDate, :date)
+ alias_method(:pubDate=, :date=)
+
+ def to_rss(rss)
+ channel = Rss::Channel.new
+ set = setup_values(channel)
+ if set
+ rss.channel = channel
+ setup_items(rss)
+ setup_image(rss)
+ setup_textinput(rss)
+ setup_other_elements(rss)
+ if rss.channel.image
+ rss
+ else
+ nil
+ end
+ end
+ end
+
+ def have_required_values?
+ @title and @link and @description and @language and
+ @maker.image.have_required_values?
+ end
+
+ private
+ def setup_items(rss)
+ @maker.items.to_rss(rss)
+ end
+
+ def setup_image(rss)
+ @maker.image.to_rss(rss)
+ end
+
+ def setup_textinput(rss)
+ @maker.textinput.to_rss(rss)
+ end
+
+ def variables
+ super + ["pubDate"]
+ end
+
+ class Cloud < CloudBase
+ end
+
+ end
+
+ class Image < ImageBase
+ def to_rss(rss)
+ image = Rss::Channel::Image.new
+ set = setup_values(image)
+ if set
+ image.link = link
+ rss.channel.image = image
+ setup_other_elements(rss)
+ end
+ end
+
+ def have_required_values?
+ @url and @title and link
+ end
+ end
+
+ class Items < ItemsBase
+ def to_rss(rss)
+ if rss.channel
+ normalize.each do |item|
+ item.to_rss(rss)
+ end
+ setup_other_elements(rss)
+ end
+ end
+
+ class Item < ItemBase
+ def to_rss(rss)
+ item = Rss::Channel::Item.new
+ set = setup_values(item)
+ if set
+ rss.items << item
+ setup_other_elements(rss)
+ end
+ end
+
+ private
+ def have_required_values?
+ @title and @link
+ end
+
+ class Guid < GuidBase
+ def to_rss(*args)
+ end
+ end
+
+ class Enclosure < EnclosureBase
+ def to_rss(*args)
+ end
+ end
+
+ class Source < SourceBase
+ def to_rss(*args)
+ end
+ end
+
+ class Category < CategoryBase
+ def to_rss(*args)
+ end
+ end
+
+ end
+ end
+
+ class Textinput < TextinputBase
+ def to_rss(rss)
+ textInput = Rss::Channel::TextInput.new
+ set = setup_values(textInput)
+ if set
+ rss.channel.textInput = textInput
+ setup_other_elements(rss)
+ end
+ end
+
+ private
+ def have_required_values?
+ @title and @description and @name and @link
+ end
+ end
+ end
+
+ add_maker(filename_to_version(__FILE__), RSS09)
+ end
+end