act_as_time_as_boolean 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,4 +16,5 @@ Gem::Specification.new do |s|
16
16
  s.add_development_dependency 'rake'
17
17
  s.add_development_dependency 'rspec', '~> 2.13'
18
18
  s.add_development_dependency 'coveralls', '~> 0.6'
19
+ s.add_development_dependency 'json', '~> 1.7.7'
19
20
  end
@@ -2,32 +2,49 @@ module ActAsTimeAsBoolean
2
2
 
3
3
  def self.included(base)
4
4
  base.define_singleton_method(:time_as_boolean) do |field, options={}|
5
- field = field.to_sym
5
+ ActAsTimeAsBoolean.time_as_boolean_method field, options
6
+ end
7
+ end
6
8
 
7
- self.send :define_method, field do
8
- !send(:"#{field}_at").nil?
9
- end
9
+ protected
10
10
 
11
- self.send :alias_method, :"#{field}?", :"#{field}"
11
+ def self.time_as_boolean_method(field, options)
12
+ field = field.to_sym
12
13
 
13
- self.send :define_method, :"#{field}=" do |value|
14
- if (value && value != 'false' && value != '0' && !self.send(field)) || (!value && self.send(field))
15
- if value && value != 'false' && value != '0'
16
- send :"#{field}_at=", Time.now
17
- true
18
- else
19
- send :"#{field}_at=", nil
20
- end
21
- end
22
- end
14
+ ActAsTimeAsBoolean.field_getter_method field
15
+ ActAsTimeAsBoolean.field_setter_method field
23
16
 
24
- if options[:opposite]
25
- self.send :define_method, :"#{options[:opposite]}" do
26
- send(:"#{field}_at").nil?
27
- end
17
+ if options[:opposite]
18
+ ActAsTimeAsBoolean.opposite_getter_method field, options[:opposite]
19
+ end
20
+ end
28
21
 
29
- self.send :alias_method, :"#{options[:opposite]}?", :"#{options[:opposite]}"
22
+ def self.field_getter_method(field)
23
+ self.send :define_method, field do
24
+ !send(:"#{field}_at").nil?
25
+ end
26
+
27
+ self.send :alias_method, :"#{field}?", :"#{field}"
28
+ end
29
+
30
+ def self.field_setter_method(field)
31
+ self.send :define_method, :"#{field}=" do |value|
32
+ if (value && value != 'false' && value != '0' && !self.send(field)) || (!value && self.send(field))
33
+ if value && value != 'false' && value != '0'
34
+ send :"#{field}_at=", Time.now
35
+ true
36
+ else
37
+ send :"#{field}_at=", nil
38
+ end
30
39
  end
31
40
  end
32
41
  end
42
+
43
+ def self.opposite_getter_method(field, opposite)
44
+ self.send :define_method, :"#{opposite}" do
45
+ send(:"#{field}_at").nil?
46
+ end
47
+
48
+ self.send :alias_method, :"#{opposite}?", :"#{opposite}"
49
+ end
33
50
  end
@@ -1,3 +1,3 @@
1
1
  module ActAsTimeAsBoolean
2
- VERSION = '0.1.2'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: act_as_time_as_boolean
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-21 00:00:00.000000000 Z
12
+ date: 2013-06-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -59,6 +59,22 @@ dependencies:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0.6'
62
+ - !ruby/object:Gem::Dependency
63
+ name: json
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.7.7
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.7.7
62
78
  description: Add time_as_boolean feature to your ruby classes
63
79
  email:
64
80
  - laurentromain@gmail.com
@@ -99,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
115
  version: '0'
100
116
  requirements: []
101
117
  rubyforge_project:
102
- rubygems_version: 1.8.25
118
+ rubygems_version: 1.8.23
103
119
  signing_key:
104
120
  specification_version: 3
105
121
  summary: Add time_as_boolean feature to your ruby classes