Wrap text
Report abuse
class Module
def attribute(name, default=nil, &block)
return name.each { |name, default| attribute name, default } if name.is_a? Hash
define_method("#{name}=") { |value| instance_variable_set "@#{name}", value }
define_method(name) {
unless instance_variable_defined? "@#{name}"
send "#{name}=", block_given? ? instance_eval(&block) : default
end
instance_variable_get "@#{name}"
}
define_method("#{name}?") { not send(name).nil? }
end
end