| Module | RSS::Maker::Base |
| In: |
lib/rss/maker/base.rb
|
# File lib/rss/maker/base.rb, line 10
10: def self.append_features(klass)
11: super
12:
13: klass.module_eval("\nOTHER_ELEMENTS = []\nNEED_INITIALIZE_VARIABLES = []\n\ndef self.inherited(subclass)\nsubclass.const_set(\"OTHER_ELEMENTS\", [])\nsubclass.const_set(\"NEED_INITIALIZE_VARIABLES\", [])\n\nsubclass.module_eval(<<-EOEOC, __FILE__, __LINE__)\ndef self.other_elements\nOTHER_ELEMENTS + super\nend\n\ndef self.need_initialize_variables\nNEED_INITIALIZE_VARIABLES + super\nend\nEOEOC\nend\n\ndef self.add_other_element(variable_name)\nOTHER_ELEMENTS << variable_name\nend\n\ndef self.other_elements\nOTHER_ELEMENTS\nend\n\ndef self.add_need_initialize_variable(variable_name, init_value=\"nil\")\nNEED_INITIALIZE_VARIABLES << [variable_name, init_value]\nend\n\ndef self.need_initialize_variables\nNEED_INITIALIZE_VARIABLES\nend\n\ndef self.def_array_element(name)\ninclude Enumerable\nextend Forwardable\n\ndef_delegators(\"@\\\#{name}\", :<<, :[], :[]=, :first, :last)\ndef_delegators(\"@\\\#{name}\", :push, :pop, :shift, :unshift)\ndef_delegators(\"@\\\#{name}\", :each, :size)\n\nadd_need_initialize_variable(name, \"[]\")\nend\n", __FILE__, __LINE__)
14: end
# File lib/rss/maker/base.rb, line 63
63: def initialize(maker)
64: @maker = maker
65: initialize_variables
66: end
# File lib/rss/maker/base.rb, line 73
73: def initialize_variables
74: self.class.need_initialize_variables.each do |variable_name, init_value|
75: instance_eval("@#{variable_name} = #{init_value}", __FILE__, __LINE__)
76: end
77: end
# File lib/rss/maker/base.rb, line 118
118: def not_set_required_variables
119: required_variable_names.find_all do |var|
120: __send__(var).nil?
121: end
122: end
# File lib/rss/maker/base.rb, line 124
124: def required_variables_are_set?
125: required_variable_names.each do |var|
126: return false if __send__(var).nil?
127: end
128: true
129: end
# File lib/rss/maker/base.rb, line 79
79: def setup_other_elements(rss)
80: self.class.other_elements.each do |element|
81: __send__("setup_#{element}", rss, current_element(rss))
82: end
83: end
# File lib/rss/maker/base.rb, line 89
89: def setup_values(target)
90: set = false
91: if have_required_values?
92: variables.each do |var|
93: setter = "#{var}="
94: if target.respond_to?(setter)
95: value = __send__(var)
96: if value
97: target.__send__(setter, value)
98: set = true
99: end
100: end
101: end
102: end
103: set
104: end
# File lib/rss/maker/base.rb, line 114
114: def variable_is_set?
115: variables.find {|var| !__send__(var).nil?}
116: end