def define_attribute_methods(attr_names)
return if attribute_methods_generated?
attr_names.each do |attr_name|
attribute_method_matchers.each do |matcher|
unless instance_method_already_implemented?(matcher.method_name(attr_name))
generate_method = "define_method_#{matcher.prefix}attribute#{matcher.suffix}"
if respond_to?(generate_method)
send(generate_method, attr_name)
else
method_name = matcher.method_name(attr_name)
generated_attribute_methods.module_eval "if method_defined?(:\#{method_name})\nundef :\#{method_name}\nend\ndef \#{method_name}(*args)\nsend(:\#{matcher.method_missing_target}, '\#{attr_name}', *args)\nend\n", __FILE__, __LINE__ + 1
end
end
end
end
@attribute_methods_generated = true
end