Module: MiracleExtensions::Object::ClassMethods

Defined in:
lib/miracle_extensions.rb

Instance Method Summary collapse

Instance Method Details

#boolean_attr_accessor(*names) ⇒ Object



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