Module: RSS::Utils::InheritedReader

Included in:
Element, Maker::Base
Defined in:
lib/rss/utils.rb

Instance Method Summary collapse

Instance Method Details

#inherited_array_reader(constant_name) ⇒ Object



98
99
100
101
102
# File 'lib/rss/utils.rb', line 98

def inherited_array_reader(constant_name)
  inherited_reader(constant_name) do |result, current|
    current + result
  end
end

#inherited_hash_reader(constant_name) ⇒ Object



104
105
106
107
108
# File 'lib/rss/utils.rb', line 104

def inherited_hash_reader(constant_name)
  inherited_reader(constant_name) do |result, current|
    result.merge(current)
  end
end

#inherited_reader(constant_name) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/rss/utils.rb', line 82

def inherited_reader(constant_name)
  base_class = inherited_base
  result = base_class.const_get(constant_name)
  found_base_class = false
  ancestors.reverse_each do |klass|
    if found_base_class
      if klass.const_defined?(constant_name)
        result = yield(result, klass.const_get(constant_name))
      end
    else
      found_base_class = klass == base_class
    end
  end
  result
end