17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/miracle_extensions.rb', line 17
def boolean_attr_accessor(*names)
names.each do |name|
name = name.to_s
class_eval %{
def #{name}
@#{name} == true
end
alias_method :#{name}?, :#{name}
def #{name}=(v)
if v.is_a?(TrueClass) || v.is_a?(FalseClass)
@#{name} = v
elsif v.is_a? String
v = v.downcase.strip
@#{name} = (v == '1' || v == 'true')
elsif v.is_a? Integer
@#{name} = (v == 1)
else
raise "You must pass a boolean (true,false), or string ('1','0','true','false'), or integer (1,0)."
end
end
}
end
end
|