summaryrefslogtreecommitdiff
path: root/lib/rss/maker/image.rb
diff options
context:
space:
mode:
author(no author) <(no author)@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-02-03 15:31:58 +0000
committer(no author) <(no author)@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-02-03 15:31:58 +0000
commit73c9ac28d42dae5c8dd1fc68baa83422733581ea (patch)
treedca405bb64ac64608df40f6c7ee664eeb89febd1 /lib/rss/maker/image.rb
parentca1f8939daaf49f0ae4c6a0fc9a378bc095c99a7 (diff)
This commit was manufactured by cvs2svn to create branch 'ruby_1_8'.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@7877 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/maker/image.rb')
-rw-r--r--lib/rss/maker/image.rb136
1 files changed, 136 insertions, 0 deletions
diff --git a/lib/rss/maker/image.rb b/lib/rss/maker/image.rb
new file mode 100644
index 0000000000..98d59f733c
--- /dev/null
+++ b/lib/rss/maker/image.rb
@@ -0,0 +1,136 @@
+require 'rss/image'
+require 'rss/maker/1.0'
+require 'rss/maker/dublincore'
+
+module RSS
+ module Maker
+ module ImageItemModel
+ def self.append_features(klass)
+ super
+
+ name = "#{RSS::IMAGE_PREFIX}_item"
+ klass.add_need_initialize_variable(name, "make_#{name}")
+ klass.add_other_element(name)
+ klass.__send__(:attr_reader, name)
+ klass.module_eval(<<-EOC, __FILE__, __LINE__)
+ def setup_#{name}(rss, current)
+ if @#{name}
+ @#{name}.to_rss(rss, current)
+ end
+ end
+
+ def make_#{name}
+ self.class::#{Utils.to_class_name(name)}.new(@maker)
+ end
+EOC
+ end
+
+ class ImageItemBase
+ include Base
+ include Maker::DublinCoreModel
+
+ attr_accessor :about, :resource, :image_width, :image_height
+ add_need_initialize_variable(:about, :resource)
+ add_need_initialize_variable(:image_width, :image_height)
+ alias width= image_width=
+ alias width image_width
+ alias height= image_height=
+ alias height image_height
+
+ def have_required_values?
+ @about
+ end
+ end
+ end
+
+ module ImageFaviconModel
+ def self.append_features(klass)
+ super
+
+ name = "#{RSS::IMAGE_PREFIX}_favicon"
+ klass.add_need_initialize_variable(name, "make_#{name}")
+ klass.add_other_element(name)
+ klass.__send__(:attr_reader, name)
+ klass.module_eval(<<-EOC, __FILE__, __LINE__)
+ def setup_#{name}(rss, current)
+ if @#{name}
+ @#{name}.to_rss(rss, current)
+ end
+ end
+
+ def make_#{name}
+ self.class::#{Utils.to_class_name(name)}.new(@maker)
+ end
+EOC
+ end
+
+ class ImageFaviconBase
+ include Base
+ include Maker::DublinCoreModel
+
+ attr_accessor :about, :image_size
+ add_need_initialize_variable(:about, :image_size)
+ alias size image_size
+ alias size= image_size=
+
+ def have_required_values?
+ @about and @image_size
+ end
+ end
+ end
+
+ class ChannelBase; include Maker::ImageFaviconModel; end
+
+ class ItemsBase
+ class ItemBase; include Maker::ImageItemModel; end
+ end
+
+ class RSS10
+ class Items
+ class Item
+ class ImageItem < ImageItemBase
+ def to_rss(rss, current)
+ if @about
+ item = ::RSS::ImageItemModel::Item.new(@about, @resource)
+ setup_values(item)
+ current.image_item = item
+ end
+ end
+ end
+ end
+ end
+
+ class Channel
+ class ImageFavicon < ImageFaviconBase
+ def to_rss(rss, current)
+ if @about and @image_size
+ args = [@about, @image_size]
+ favicon = ::RSS::ImageFaviconModel::Favicon.new(*args)
+ setup_values(favicon)
+ current.image_favicon = favicon
+ end
+ end
+ end
+ end
+ end
+
+ class RSS09
+ class Items
+ class Item
+ class ImageItem < ImageItemBase
+ def to_rss(*args)
+ end
+ end
+ end
+ end
+
+ class Channel
+ class ImageFavicon < ImageFaviconBase
+ def to_rss(*args)
+ end
+ end
+ end
+ end
+
+ end
+end