Methods
- #
- A
- C
- D
- H
- I
- N
- O
- R
- S
- V
Included Modules
Constants
OTHER_ELEMENTS | = | [] |
NEED_INITIALIZE_VARIABLES | = | [] |
Attributes
[R] | maker |
Class Public methods
new(maker)
Link
Instance Public methods
add_need_initialize_variable(variable_name, init_value=nil, &init_block)
Link
add_other_element(variable_name)
Link
def_array_element(name, plural=nil, klass_name=nil)
Link
# File ../ruby/lib/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
def_classed_element(name, class_name=nil, attribute_name=nil)
Link
# File ../ruby/lib/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
def_classed_element_without_accessor(name, class_name=nil)
Link
# File ../ruby/lib/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
def_classed_elements(name, attribute, plural_class_name=nil, plural_name=nil, new_name=nil)
Link
# File ../ruby/lib/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
def_csv_element(name, type=nil)
Link
# File ../ruby/lib/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
def_other_element(name)
Link
def_other_element_without_accessor(name)
Link
# File ../ruby/lib/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
have_required_values?()
Link
inherited(subclass)
Link
inherited_base()
Link
need_initialize_variables()
Link
other_elements()
Link
variable_is_set?()
Link
Instance Private methods
_set_default_values(&block)
Link
current_element(feed)
Link
initialize_variables()
Link
# File ../ruby/lib/rss/maker/base.rb, line 190 def initialize_variables self.class.need_initialize_variables.each do |variable_name, init_value| if init_value.nil? value = nil else if init_value.respond_to?(:call) value = init_value.call(self) elsif init_value.is_a?(String) # just for backward compatibility value = instance_eval(init_value, __FILE__, __LINE__) else value = init_value end end instance_variable_set("@#{variable_name}", value) end end
not_set_required_variables()
Link
required_variables_are_set?()
Link
set_default_values(&block)
Link
set_parent(target, parent)
Link
setup_other_elements(feed, current=nil)
Link
setup_values(target)
Link
# File ../ruby/lib/rss/maker/base.rb, line 234 def setup_values(target) set = false if have_required_values? variables.each do |var| setter = "#{var}=" if target.respond_to?(setter) value = __send__(var) unless value.nil? target.__send__(setter, value) set = true end end end end set end