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.
@@ -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
|
5
|
+
ActAsTimeAsBoolean.time_as_boolean_method field, options
|
6
|
+
end
|
7
|
+
end
|
6
8
|
|
7
|
-
|
8
|
-
!send(:"#{field}_at").nil?
|
9
|
-
end
|
9
|
+
protected
|
10
10
|
|
11
|
-
|
11
|
+
def self.time_as_boolean_method(field, options)
|
12
|
+
field = field.to_sym
|
12
13
|
|
13
|
-
|
14
|
-
|
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
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
17
|
+
if options[:opposite]
|
18
|
+
ActAsTimeAsBoolean.opposite_getter_method field, options[:opposite]
|
19
|
+
end
|
20
|
+
end
|
28
21
|
|
29
|
-
|
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
|
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.
|
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-
|
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.
|
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
|