Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
Object
# File rss/maker/base.rb, line 34 def add_need_initialize_variable(variable_name, init_value=nil, &init_block) init_value ||= init_block self::NEED_INITIALIZE_VARIABLES << [variable_name, init_value] end
# File rss/maker/base.rb, line 30 def add_other_element(variable_name) self::OTHER_ELEMENTS << variable_name end
# File rss/maker/base.rb, line 40 def def_array_element(name, plural=nil, klass_name=nil) include Enumerable extend Forwardable plural ||= "#{name}s" klass_name ||= Utils.to_class_name(name) def_delegators("@#{plural}", :<<, :[], :[]=, :first, :last) def_delegators("@#{plural}", :push, :pop, :shift, :unshift) def_delegators("@#{plural}", :each, :size, :empty?, :clear) add_need_initialize_variable(plural) {[]} module_eval(" def new_#{name} #{name} = self.class::#{klass_name}.new(@maker) @#{plural} << #{name} if block_given? yield #{name} else #{name} end end alias new_child new_#{name} def to_feed(*args) @#{plural}.each do |#{name}| #{name}.to_feed(*args) end end def replace(elements) @#{plural}.replace(elements.to_a) end ", __FILE__, __LINE__ + 1) end
# File rss/maker/base.rb, line 94 def def_classed_element(name, class_name=nil, attribute_name=nil) def_classed_element_without_accessor(name, class_name) if attribute_name module_eval(" def #{name} if block_given? yield(@#{name}) else @#{name}.#{attribute_name} end end def #{name}=(new_value) @#{name}.#{attribute_name} = new_value end ", __FILE__, __LINE__ + 1) else attr_reader name end end
# File rss/maker/base.rb, line 76 def def_classed_element_without_accessor(name, class_name=nil) class_name ||= Utils.to_class_name(name) add_other_element(name) add_need_initialize_variable(name) do |object| object.send("make_#{name}") end module_eval(" private def setup_#{name}(feed, current) @#{name}.to_feed(feed, current) end def make_#{name} self.class::#{class_name}.new(@maker) end ", __FILE__, __LINE__ + 1) end
# File rss/maker/base.rb, line 115 def def_classed_elements(name, attribute, plural_class_name=nil, plural_name=nil, new_name=nil) plural_name ||= "#{name}s" new_name ||= name def_classed_element(plural_name, plural_class_name) local_variable_name = "_#{name}" new_value_variable_name = "new_value" additional_setup_code = nil if block_given? additional_setup_code = yield(local_variable_name, new_value_variable_name) end module_eval(" def #{name} #{local_variable_name} = #{plural_name}.first #{local_variable_name} ? #{local_variable_name}.#{attribute} : nil end def #{name}=(#{new_value_variable_name}) #{local_variable_name} = #{plural_name}.first || #{plural_name}.new_#{new_name} #{additional_setup_code} #{local_variable_name}.#{attribute} = #{new_value_variable_name} end ", __FILE__, __LINE__ + 1) end
# File rss/maker/base.rb, line 159 def def_csv_element(name, type=nil) def_other_element_without_accessor(name) attr_reader(name) converter = "" if type == :integer converter = "{|v| Integer(v)}" end module_eval(" def #{name}=(value) @#{name} = Utils::CSV.parse(value)#{converter} end ", __FILE__, __LINE__ + 1) end
# File rss/maker/base.rb, line 142 def def_other_element(name) attr_accessor name def_other_element_without_accessor(name) end
# File rss/maker/base.rb, line 147 def def_other_element_without_accessor(name) add_need_initialize_variable(name) add_other_element(name) module_eval(" def setup_#{name}(feed, current) if !@#{name}.nil? and current.respond_to?(:#{name}=) current.#{name} = @#{name} end end ", __FILE__, __LINE__ + 1) end
# File rss/maker/base.rb, line 25 def inherited(subclass) subclass.const_set("OTHER_ELEMENTS", []) subclass.const_set("NEED_INITIALIZE_VARIABLES", []) end
# File rss/maker/base.rb, line 21 def inherited_base ::RSS::Maker::Base end
# File rss/maker/base.rb, line 17 def need_initialize_variables inherited_array_reader("NEED_INITIALIZE_VARIABLES") end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.