From c2d8185ba63818aee5457b178aa2e85a9e81b053 Mon Sep 17 00:00:00 2001 From: kou Date: Mon, 1 Nov 2004 13:30:08 +0000 Subject: * lib/rss/maker/base.rb: changed xml-stylesheet's API of RSS Maker to 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7173 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 11 +++++++++++ lib/rss/maker/base.rb | 37 ++++++++++++++++++++++++++--------- lib/rss/xml-stylesheet.rb | 2 +- test/rss/test_maker_xml-stylesheet.rb | 29 +++++++++++++++++++-------- 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 + + * 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 * 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 -- cgit v1.2.3