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