act_as_time_as_boolean 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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