Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
caedes committed Jun 7, 2013
1 parent b089cc7 commit 3494f62
Showing 1 changed file with 37 additions and 20 deletions.
57 changes: 37 additions & 20 deletions lib/act_as_time_as_boolean/base.rb
Expand Up @@ -2,32 +2,49 @@ module ActAsTimeAsBoolean

def self.included(base)
base.define_singleton_method(:time_as_boolean) do |field, options={}|
field = field.to_sym
ActAsTimeAsBoolean.time_as_boolean_method field, options
end
end

self.send :define_method, field do
!send(:"#{field}_at").nil?
end
protected

self.send :alias_method, :"#{field}?", :"#{field}"
def self.time_as_boolean_method(field, options)
field = field.to_sym

self.send :define_method, :"#{field}=" do |value|
if (value && value != 'false' && value != '0' && !self.send(field)) || (!value && self.send(field))
if value && value != 'false' && value != '0'
send :"#{field}_at=", Time.now
true
else
send :"#{field}_at=", nil
end
end
end
ActAsTimeAsBoolean.field_getter_method field
ActAsTimeAsBoolean.field_setter_method field

if options[:opposite]
self.send :define_method, :"#{options[:opposite]}" do
send(:"#{field}_at").nil?
end
if options[:opposite]
ActAsTimeAsBoolean.opposite_getter_method field, options[:opposite]
end
end

self.send :alias_method, :"#{options[:opposite]}?", :"#{options[:opposite]}"
def self.field_getter_method(field)
self.send :define_method, field do
!send(:"#{field}_at").nil?
end

self.send :alias_method, :"#{field}?", :"#{field}"
end

def self.field_setter_method(field)
self.send :define_method, :"#{field}=" do |value|
if (value && value != 'false' && value != '0' && !self.send(field)) || (!value && self.send(field))
if value && value != 'false' && value != '0'
send :"#{field}_at=", Time.now
true
else
send :"#{field}_at=", nil
end
end
end
end

def self.opposite_getter_method(field, opposite)
self.send :define_method, :"#{opposite}" do
send(:"#{field}_at").nil?
end

self.send :alias_method, :"#{opposite}?", :"#{opposite}"
end
end

0 comments on commit 3494f62

Please sign in to comment.