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:
parent
49d454ea2e
commit
b684f87574
10 changed files with 256 additions and 194 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue