summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--lib/rss/maker/base.rb37
-rw-r--r--lib/rss/xml-stylesheet.rb2
-rw-r--r--test/rss/test_maker_xml-stylesheet.rb29
4 files changed, 61 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index f798034264..d3e445e9ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Mon Nov 1 22:25:56 2004 Kouhei Sutou <kou@cozmixng.org>
+
+ * lib/rss/maker/base.rb: changed xml-stylesheet's API of RSS Maker
+ like item's one.
+
+ * lib/rss/xml-stylesheet.rb (RSS::XMLStyleSheet#guess_type): fixed
+ regular expression bug.
+
+ * test/rss/test_maker_xml-stylesheet.rb: updated tests for
+ xml-stylesheet.
+
Mon Nov 1 13:59:28 2004 WATANABE Hirofumi <eban@ruby-lang.org>
* ext/extmk.rb (MANIFEST): do not use anymore, use extconf.rb instead.
diff --git a/lib/rss/maker/base.rb b/lib/rss/maker/base.rb
index a9f1639503..eb61f37ee2 100644
--- a/lib/rss/maker/base.rb
+++ b/lib/rss/maker/base.rb
@@ -143,7 +143,7 @@ module RSS
end
def setup_xml_stylesheets(rss)
- rss.xml_stylesheets = @xml_stylesheets.normalize
+ @xml_stylesheets.to_rss(rss)
end
end
@@ -153,22 +153,41 @@ module RSS
extend Forwardable
- def_delegators(:@xml_stylesheets, :<<, :[], :[]=)
+ def_delegators(:@xml_stylesheets, :<<, :[], :[]=, :first, :last)
+ def_delegators(:@xml_stylesheets, :push, :pop, :shift, :unshift)
def initialize(maker)
super
@xml_stylesheets = []
end
-
- def normalize
- @xml_stylesheets.collect do |info|
- make_xml_stylesheet(info)
+
+ def to_rss(rss)
+ @xml_stylesheets.each do |xss|
+ xss.to_rss(rss)
end
end
- private
- def make_xml_stylesheet(info)
- RSS::XMLStyleSheet.new(*info)
+ def new_xml_stylesheet
+ xss = XMLStyleSheet.new(@maker)
+ @xml_stylesheets << xss
+ xss
+ end
+
+ class XMLStyleSheet
+ include Base
+
+ ::RSS::XMLStyleSheet::ATTRIBUTES.each do |attribute|
+ attr_accessor attribute
+ add_need_initialize_variable(attribute)
+ end
+
+ def to_rss(rss)
+ xss = ::RSS::XMLStyleSheet.new
+ set = setup_values(xss)
+ if set
+ rss.xml_stylesheets << xss
+ end
+ end
end
end
diff --git a/lib/rss/xml-stylesheet.rb b/lib/rss/xml-stylesheet.rb
index 726899ed88..c51c0dc71a 100644
--- a/lib/rss/xml-stylesheet.rb
+++ b/lib/rss/xml-stylesheet.rb
@@ -86,7 +86,7 @@ module RSS
private
def guess_type(filename)
- /\.([^.]+)/ =~ filename
+ /\.([^.]+)$/ =~ filename
GUESS_TABLE[$1]
end
diff --git a/test/rss/test_maker_xml-stylesheet.rb b/test/rss/test_maker_xml-stylesheet.rb
index 13ab0daf8e..b959073554 100644
--- a/test/rss/test_maker_xml-stylesheet.rb
+++ b/test/rss/test_maker_xml-stylesheet.rb
@@ -14,14 +14,13 @@ module RSS
alternate = 'yes'
rss = RSS::Maker.make("1.0") do |maker|
- maker.xml_stylesheets << {
- :href => href,
- :type => type,
- :title => title,
- :media => media,
- :charset => charset,
- :alternate => alternate,
- }
+ xss = maker.xml_stylesheets.new_xml_stylesheet
+ xss.href = href
+ xss.type = type
+ xss.title = title
+ xss.media = media
+ xss.charset = charset
+ xss.alternate = alternate
setup_dummy_channel(maker)
end
@@ -33,6 +32,20 @@ module RSS
assert_equal(media, xss.media)
assert_equal(charset, xss.charset)
assert_equal(alternate, xss.alternate)
+
+
+ href = 'http://example.com/index.xsl'
+ type = 'text/xsl'
+ rss = RSS::Maker.make("1.0") do |maker|
+ xss = maker.xml_stylesheets.new_xml_stylesheet
+ xss.href = href
+
+ setup_dummy_channel(maker)
+ end
+
+ xss = rss.xml_stylesheets.first
+ assert_equal(href, xss.href)
+ assert_equal(type, xss.type)
end
end