In Files

  • rss/maker/base.rb

Class/Module Index [+]

Quicksearch

RSS::Maker::Base

Attributes

maker[R]

Public Class Methods

new(maker) click to toggle source
 
               # File rss/maker/base.rb, line 175
def initialize(maker)
  @maker = maker
  @default_values_are_set = false
  initialize_variables
end
            

Public Instance Methods

add_need_initialize_variable(variable_name, init_value=nil, &init_block) click to toggle source
 
               # 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
            
add_other_element(variable_name) click to toggle source
 
               # File rss/maker/base.rb, line 30
def add_other_element(variable_name)
  self::OTHER_ELEMENTS << variable_name
end
            
def_array_element(name, plural=nil, klass_name=nil) click to toggle source
 
               # 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
            
def_classed_element(name, class_name=nil, attribute_name=nil) click to toggle source
 
               # 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
            
def_classed_element_without_accessor(name, class_name=nil) click to toggle source
 
               # 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
            
def_classed_elements(name, attribute, plural_class_name=nil, plural_name=nil, new_name=nil) click to toggle source
 
               # 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
            
def_csv_element(name, type=nil) click to toggle source
 
               # 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
            
def_other_element(name) click to toggle source
 
               # File rss/maker/base.rb, line 142
def def_other_element(name)
  attr_accessor name
  def_other_element_without_accessor(name)
end
            
def_other_element_without_accessor(name) click to toggle source
 
               # 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
            
have_required_values?() click to toggle source
 
               # File rss/maker/base.rb, line 181
def have_required_values?
  not_set_required_variables.empty?
end
            
inherited(subclass) click to toggle source
 
               # File rss/maker/base.rb, line 25
def inherited(subclass)
  subclass.const_set("OTHER_ELEMENTS", [])
  subclass.const_set("NEED_INITIALIZE_VARIABLES", [])
end
            
inherited_base() click to toggle source
 
               # File rss/maker/base.rb, line 21
def inherited_base
  ::RSS::Maker::Base
end
            
need_initialize_variables() click to toggle source
 
               # File rss/maker/base.rb, line 17
def need_initialize_variables
  inherited_array_reader("NEED_INITIALIZE_VARIABLES")
end
            
other_elements() click to toggle source
 
               # File rss/maker/base.rb, line 14
def other_elements
  inherited_array_reader("OTHER_ELEMENTS")
end
            
variable_is_set?() click to toggle source
 
               # File rss/maker/base.rb, line 185
def variable_is_set?
  variables.any? {|var| not __send__(var).nil?}
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.

blog comments powered by Disqus