has_enum 0.3.3 → 0.3.4

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.
data/Gemfile CHANGED
@@ -1,7 +1,6 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gem "rails", "~> 3.0.0"
4
- gem "sqlite3-ruby", "~> 1.3.2"
5
4
 
6
5
  # Add dependencies to develop your gem here.
7
6
  # Include everything needed to run rake, tests, features, etc.
@@ -10,5 +9,6 @@ group :development do
10
9
  gem "rails", "~> 3.0.0"
11
10
  gem "bundler", "~> 1.0.0"
12
11
  gem "jeweler", "~> 1.5.1"
12
+ gem "sqlite3-ruby", "~> 1.3.2"
13
13
  gem "rcov", ">= 0"
14
14
  end
data/Rakefile CHANGED
@@ -18,10 +18,6 @@ Jeweler::Tasks.new do |gem|
18
18
  gem.summary = %Q{Gem for Rails to easily handle enumeration attributes in models}
19
19
  gem.email = "kes.eclipse@gmail.com"
20
20
  gem.authors = ["Andreas Korth", "Konstantin Shabanov"]
21
- gem.add_runtime_dependency 'rails', '> 3.0.0'
22
- gem.add_development_dependency 'rspec', '> 2.2.0'
23
- gem.add_development_dependency 'rails', '> 3.0.0'
24
- gem.add_development_dependency 'sqlite3-ruby', '> 1.3.2'
25
21
  end
26
22
  Jeweler::RubygemsDotOrgTasks.new
27
23
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.3
1
+ 0.3.4
data/has_enum.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{has_enum}
8
- s.version = "0.3.3"
8
+ s.version = "0.3.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andreas Korth", "Konstantin Shabanov"]
12
- s.date = %q{2010-12-09}
12
+ s.date = %q{2010-12-10}
13
13
  s.email = %q{kes.eclipse@gmail.com}
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE.txt",
@@ -51,41 +51,29 @@ Gem::Specification.new do |s|
51
51
 
52
52
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
53
  s.add_runtime_dependency(%q<rails>, ["~> 3.0.0"])
54
- s.add_runtime_dependency(%q<sqlite3-ruby>, ["~> 1.3.2"])
55
54
  s.add_development_dependency(%q<rspec>, ["~> 2.2.0"])
56
55
  s.add_development_dependency(%q<rails>, ["~> 3.0.0"])
57
56
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
58
57
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
58
+ s.add_development_dependency(%q<sqlite3-ruby>, ["~> 1.3.2"])
59
59
  s.add_development_dependency(%q<rcov>, [">= 0"])
60
- s.add_runtime_dependency(%q<rails>, ["> 3.0.0"])
61
- s.add_development_dependency(%q<rspec>, ["> 2.2.0"])
62
- s.add_development_dependency(%q<rails>, ["> 3.0.0"])
63
- s.add_development_dependency(%q<sqlite3-ruby>, ["> 1.3.2"])
64
60
  else
65
61
  s.add_dependency(%q<rails>, ["~> 3.0.0"])
66
- s.add_dependency(%q<sqlite3-ruby>, ["~> 1.3.2"])
67
62
  s.add_dependency(%q<rspec>, ["~> 2.2.0"])
68
63
  s.add_dependency(%q<rails>, ["~> 3.0.0"])
69
64
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
70
65
  s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
66
+ s.add_dependency(%q<sqlite3-ruby>, ["~> 1.3.2"])
71
67
  s.add_dependency(%q<rcov>, [">= 0"])
72
- s.add_dependency(%q<rails>, ["> 3.0.0"])
73
- s.add_dependency(%q<rspec>, ["> 2.2.0"])
74
- s.add_dependency(%q<rails>, ["> 3.0.0"])
75
- s.add_dependency(%q<sqlite3-ruby>, ["> 1.3.2"])
76
68
  end
77
69
  else
78
70
  s.add_dependency(%q<rails>, ["~> 3.0.0"])
79
- s.add_dependency(%q<sqlite3-ruby>, ["~> 1.3.2"])
80
71
  s.add_dependency(%q<rspec>, ["~> 2.2.0"])
81
72
  s.add_dependency(%q<rails>, ["~> 3.0.0"])
82
73
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
83
74
  s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
75
+ s.add_dependency(%q<sqlite3-ruby>, ["~> 1.3.2"])
84
76
  s.add_dependency(%q<rcov>, [">= 0"])
85
- s.add_dependency(%q<rails>, ["> 3.0.0"])
86
- s.add_dependency(%q<rspec>, ["> 2.2.0"])
87
- s.add_dependency(%q<rails>, ["> 3.0.0"])
88
- s.add_dependency(%q<sqlite3-ruby>, ["> 1.3.2"])
89
77
  end
90
78
  end
91
79
 
@@ -11,57 +11,38 @@ module HasEnum
11
11
  attribute ? @enum[attribute.to_sym] : @enum
12
12
  end
13
13
 
14
-
15
- def has_enum(attributes, values, options = {})
16
- [*attributes].each do |attribute|
17
- attribute = attribute.to_sym
18
- if values[0].is_a?(Symbol)
19
- symbols = true
14
+ def has_enum(attribute, values, options = {})
15
+ enum[attribute] = values.freeze
16
+
17
+ if options[:query_methods] != false
18
+ values.each do |val|
19
+ define_method(:"#{val}?") { self.send(attribute) == val }
20
20
  end
21
- if symbols
22
- values = values.map{|value| value.to_s.insert(0, ':')}
21
+ end
22
+
23
+ define_method(:"#{attribute}=") do |value|
24
+ if value.nil? or values.find{ |val| val == value }
25
+ set_value = lambda { |value| value.is_a?(Symbol) ? Marshal.dump(value) : value }
26
+ self[:"#{attribute}"] = value.nil? ? nil : set_value.call(value)
23
27
  else
24
- values = values.map(&:to_s)
25
- end
26
- enum[attribute] = values.freeze
27
-
28
- if options[:query_methods] != false
29
- enum[attribute].each do |val|
30
- val = val[1..-1] if symbols
31
- define_method(:"#{val}?") do
32
- self.send(attribute).to_s == val
33
- end
34
- end
35
- end
36
-
37
- define_method(:"#{attribute}=") do |value|
38
- value = value.to_s.insert(0, ':') if symbols and value
39
-
40
- if value.nil? or values.find{ |val| val == value }
41
- write_attribute(attribute, value.blank? ? nil : value.to_s)
42
- else
43
- errors.add(:"#{attribute}", "#{value} is not in enum")
44
- end
45
- end
46
-
47
- define_method(:"#{attribute}") do
48
- if symbols and read_attribute(attribute.to_sym)
49
- read_attribute(attribute.to_sym).tap{|str| str.slice!(0)}.to_sym
50
- else
51
- read_attribute(attribute.to_sym)
52
- end
53
- end
54
-
55
- define_method "human_#{attribute}" do
56
- begin
57
- return nil unless self.send(attribute)
58
- key = "activerecord.attributes.#{self.class.name.underscore}.#{attribute}_enum.#{self.send(attribute)}"
59
- translation = I18n.translate(key, :raise => true)
60
- rescue I18n::MissingTranslationData
61
- self.send(attribute).humanize
62
- end
28
+ errors.add(:"#{attribute}", "#{value} is not in enum")
63
29
  end
30
+ end
64
31
 
32
+ define_method(:"#{attribute}") do
33
+ load_value = lambda { |value| value[0].getbyte(0) == 4 ? Marshal.load(value) : value }
34
+ value = self[:"#{attribute}"]
35
+ value ? load_value.call(value) : nil
36
+ end
37
+
38
+ define_method "human_#{attribute}" do
39
+ begin
40
+ return nil unless self.send(attribute)
41
+ key = "activerecord.attributes.#{self.class.name.underscore}.#{attribute}_enum.#{self.send(attribute)}"
42
+ translation = I18n.translate(key, :raise => true)
43
+ rescue I18n::MissingTranslationData
44
+ self.send(attribute).humanize
45
+ end
65
46
  end
66
47
  end
67
48
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 3
9
- version: 0.3.3
8
+ - 4
9
+ version: 0.3.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Andreas Korth
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-09 00:00:00 +06:00
18
+ date: 2010-12-10 00:00:00 +06:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -33,24 +33,9 @@ dependencies:
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: sqlite3-ruby
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- segments:
44
- - 1
45
- - 3
46
- - 2
47
- version: 1.3.2
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: *id002
51
36
  - !ruby/object:Gem::Dependency
52
37
  name: rspec
53
- requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirement: &id002 !ruby/object:Gem::Requirement
54
39
  none: false
55
40
  requirements:
56
41
  - - ~>
@@ -62,10 +47,10 @@ dependencies:
62
47
  version: 2.2.0
63
48
  type: :development
64
49
  prerelease: false
65
- version_requirements: *id003
50
+ version_requirements: *id002
66
51
  - !ruby/object:Gem::Dependency
67
52
  name: rails
68
- requirement: &id004 !ruby/object:Gem::Requirement
53
+ requirement: &id003 !ruby/object:Gem::Requirement
69
54
  none: false
70
55
  requirements:
71
56
  - - ~>
@@ -77,10 +62,10 @@ dependencies:
77
62
  version: 3.0.0
78
63
  type: :development
79
64
  prerelease: false
80
- version_requirements: *id004
65
+ version_requirements: *id003
81
66
  - !ruby/object:Gem::Dependency
82
67
  name: bundler
83
- requirement: &id005 !ruby/object:Gem::Requirement
68
+ requirement: &id004 !ruby/object:Gem::Requirement
84
69
  none: false
85
70
  requirements:
86
71
  - - ~>
@@ -92,10 +77,10 @@ dependencies:
92
77
  version: 1.0.0
93
78
  type: :development
94
79
  prerelease: false
95
- version_requirements: *id005
80
+ version_requirements: *id004
96
81
  - !ruby/object:Gem::Dependency
97
82
  name: jeweler
98
- requirement: &id006 !ruby/object:Gem::Requirement
83
+ requirement: &id005 !ruby/object:Gem::Requirement
99
84
  none: false
100
85
  requirements:
101
86
  - - ~>
@@ -107,80 +92,35 @@ dependencies:
107
92
  version: 1.5.1
108
93
  type: :development
109
94
  prerelease: false
110
- version_requirements: *id006
111
- - !ruby/object:Gem::Dependency
112
- name: rcov
113
- requirement: &id007 !ruby/object:Gem::Requirement
114
- none: false
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- segments:
119
- - 0
120
- version: "0"
121
- type: :development
122
- prerelease: false
123
- version_requirements: *id007
95
+ version_requirements: *id005
124
96
  - !ruby/object:Gem::Dependency
125
- name: rails
126
- requirement: &id008 !ruby/object:Gem::Requirement
97
+ name: sqlite3-ruby
98
+ requirement: &id006 !ruby/object:Gem::Requirement
127
99
  none: false
128
100
  requirements:
129
- - - ">"
101
+ - - ~>
130
102
  - !ruby/object:Gem::Version
131
103
  segments:
104
+ - 1
132
105
  - 3
133
- - 0
134
- - 0
135
- version: 3.0.0
136
- type: :runtime
137
- prerelease: false
138
- version_requirements: *id008
139
- - !ruby/object:Gem::Dependency
140
- name: rspec
141
- requirement: &id009 !ruby/object:Gem::Requirement
142
- none: false
143
- requirements:
144
- - - ">"
145
- - !ruby/object:Gem::Version
146
- segments:
147
106
  - 2
148
- - 2
149
- - 0
150
- version: 2.2.0
107
+ version: 1.3.2
151
108
  type: :development
152
109
  prerelease: false
153
- version_requirements: *id009
110
+ version_requirements: *id006
154
111
  - !ruby/object:Gem::Dependency
155
- name: rails
156
- requirement: &id010 !ruby/object:Gem::Requirement
112
+ name: rcov
113
+ requirement: &id007 !ruby/object:Gem::Requirement
157
114
  none: false
158
115
  requirements:
159
- - - ">"
116
+ - - ">="
160
117
  - !ruby/object:Gem::Version
161
118
  segments:
162
- - 3
163
- - 0
164
119
  - 0
165
- version: 3.0.0
166
- type: :development
167
- prerelease: false
168
- version_requirements: *id010
169
- - !ruby/object:Gem::Dependency
170
- name: sqlite3-ruby
171
- requirement: &id011 !ruby/object:Gem::Requirement
172
- none: false
173
- requirements:
174
- - - ">"
175
- - !ruby/object:Gem::Version
176
- segments:
177
- - 1
178
- - 3
179
- - 2
180
- version: 1.3.2
120
+ version: "0"
181
121
  type: :development
182
122
  prerelease: false
183
- version_requirements: *id011
123
+ version_requirements: *id007
184
124
  description:
185
125
  email: kes.eclipse@gmail.com
186
126
  executables: []
@@ -221,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
221
161
  requirements:
222
162
  - - ">="
223
163
  - !ruby/object:Gem::Version
224
- hash: 4222407025214625140
164
+ hash: -4461255227335299909
225
165
  segments:
226
166
  - 0
227
167
  version: "0"