1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/rss/rss.rb (RSS::NotSetError): added.

* lib/rss/maker/{1.0,0.9,2.0}.rb: changed RSS Maker to raise
  RSS::NotSetError if required values of maker.channel are not
  set.
* test/rss/test_maker_{1.0,0.9,2.0}.rb: changed tests to check RSS
  Maker raises or not.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
kou 2004-11-28 06:53:41 +00:00
parent 49d454ea2e
commit b684f87574
10 changed files with 256 additions and 194 deletions

View file

@ -105,6 +105,23 @@ module RSS
name
end
end
def variable_is_set?
variables.find {|var| !__send__(var).nil?}
end
def not_set_required_variables
required_variable_names.find_all do |var|
__send__(var).nil?
end
end
def required_variables_are_set?
required_variable_names.each do |var|
return false if __send__(var).nil?
end
true
end
end
@ -117,9 +134,22 @@ module RSS
end
end
attr_reader :rss_version, :xml_stylesheets
attr_reader :channel, :image, :items, :textinput
%w(xml_stylesheets channel image items textinput).each do |element|
attr_reader element
add_need_initialize_variable(element, "make_#{element}")
module_eval(<<-EOC, __FILE__, __LINE__)
private
def setup_#{element}(rss)
@#{element}.to_rss(rss)
end
def make_#{element}
self.class::#{element[0,1].upcase}#{element[1..-1]}.new(self)
end
EOC
end
attr_reader :rss_version
attr_accessor :version, :encoding, :standalone
def initialize(rss_version)
@ -128,47 +158,39 @@ module RSS
@version = "1.0"
@encoding = "UTF-8"
@standalone = nil
@xml_stylesheets = make_xml_stylesheets
@channel = make_channel
@image = make_image
@items = make_items
@textinput = make_textinput
end
def make(&block)
block.call(self) if block
to_rss
def make
if block_given?
yield(self)
to_rss
else
nil
end
end
def to_rss
rss = make_rss
setup_xml_stylesheets(rss)
setup_elements(rss)
setup_other_elements(rss)
if rss.channel
rss
else
nil
end
end
def current_element(rss)
rss
end
private
undef make_xml_stylesheets
def make_xml_stylesheets
XMLStyleSheets.new(self)
end
def make_channel
self.class::Channel.new(self)
end
def make_image
self.class::Image.new(self)
end
def make_items
self.class::Items.new(self)
end
def make_textinput
self.class::Textinput.new(self)
end
def setup_xml_stylesheets(rss)
@xml_stylesheets.to_rss(rss)
end
end
class XMLStyleSheets