enumerate_it 0.7.16 → 0.7.17
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.lock +1 -1
- data/README.rdoc +14 -0
- data/lib/enumerate_it.rb +22 -6
- data/lib/enumerate_it/version.rb +1 -1
- data/spec/enumerate_it_spec.rb +25 -0
- metadata +8 -3
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
= EnumerateIt - Ruby Enumerations
|
2
2
|
|
3
|
+
{<img src="https://secure.travis-ci.org/cassiomarques/enumerate_it.png?branch=master" alt="Build Status" />}[http://travis-ci.org/cassiomarques/enumerate_it]
|
4
|
+
|
3
5
|
Author: Cássio Marques - cassiommc at gmail
|
4
6
|
|
5
7
|
== Description
|
@@ -161,6 +163,18 @@ This will create:
|
|
161
163
|
p.married? #=> true
|
162
164
|
p.divorced? #=> false
|
163
165
|
|
166
|
+
* It's also possible to "namespace" the created helper methods, passing a hash to the :create_helpers option.
|
167
|
+
This can be useful when two or more of the enumerations used share the same constants.
|
168
|
+
|
169
|
+
class Person < ActiveRecord::Base
|
170
|
+
has_enumeration_for :relationship_status, :with => RelationshipStatus, :create_helpers => { :prefix => true }
|
171
|
+
end
|
172
|
+
|
173
|
+
p = Person.new
|
174
|
+
p.relationship_status = RelationshipStatus::MARRIED
|
175
|
+
p.relationship_status_married? #=> true
|
176
|
+
p.relationship_status_divoced? #=> false
|
177
|
+
|
164
178
|
* The :create_helpers also creates some mutator helper methods, that can be used to change the attribute's value.
|
165
179
|
|
166
180
|
class Person < ActiveRecord::Base
|
data/lib/enumerate_it.rb
CHANGED
@@ -158,6 +158,18 @@
|
|
158
158
|
# p.married? #=> true
|
159
159
|
# p.divorced? #=> false
|
160
160
|
#
|
161
|
+
# - It's also possible to "namespace" the created helper methods, passing a hash to the :create_helpers option.
|
162
|
+
# This can be useful when two or more of the enumerations used share the same constants.
|
163
|
+
#
|
164
|
+
# class Person < ActiveRecord::Base
|
165
|
+
# has_enumeration_for :relationship_status, :with => RelationshipStatus, :create_helpers => { :prefix => true }
|
166
|
+
# end
|
167
|
+
#
|
168
|
+
# p = Person.new
|
169
|
+
# p.relationship_status = RelationshipStatus::MARRIED
|
170
|
+
# p.relationship_status_married? #=> true
|
171
|
+
# p.relationship_status_divoced? #=> false
|
172
|
+
#
|
161
173
|
# - If you pass the :create_scopes option as 'true', it will create a scope method for each enumeration option (this option defaults to false):
|
162
174
|
#
|
163
175
|
# class Person < ActiveRecord::Base
|
@@ -305,8 +317,8 @@ module EnumerateIt
|
|
305
317
|
create_enumeration_humanize_method options[:with], attribute
|
306
318
|
store_enumeration options[:with], attribute
|
307
319
|
if options[:create_helpers]
|
308
|
-
create_helper_methods options[:with], attribute
|
309
|
-
create_mutator_methods options[:with], attribute
|
320
|
+
create_helper_methods options[:with], attribute, options[:create_helpers]
|
321
|
+
create_mutator_methods options[:with], attribute, options[:create_helpers]
|
310
322
|
end
|
311
323
|
|
312
324
|
if options[:create_scopes]
|
@@ -329,10 +341,12 @@ module EnumerateIt
|
|
329
341
|
end
|
330
342
|
end
|
331
343
|
|
332
|
-
def create_helper_methods(klass, attribute_name)
|
344
|
+
def create_helper_methods(klass, attribute_name, helpers)
|
345
|
+
prefix_name = "#{attribute_name}_" if helpers.is_a?(Hash) && helpers[:prefix]
|
346
|
+
|
333
347
|
class_eval do
|
334
348
|
klass.enumeration.keys.each do |option|
|
335
|
-
define_method "#{option}?" do
|
349
|
+
define_method "#{prefix_name}#{option}?" do
|
336
350
|
self.send(attribute_name) == klass.enumeration[option].first
|
337
351
|
end
|
338
352
|
end
|
@@ -347,10 +361,12 @@ module EnumerateIt
|
|
347
361
|
end
|
348
362
|
end
|
349
363
|
|
350
|
-
def create_mutator_methods(klass, attribute_name)
|
364
|
+
def create_mutator_methods(klass, attribute_name, helpers)
|
365
|
+
prefix_name = "#{attribute_name}_" if helpers.is_a?(Hash) && helpers[:prefix]
|
366
|
+
|
351
367
|
class_eval do
|
352
368
|
klass.enumeration.each_pair do |key, values|
|
353
|
-
define_method "#{key}!" do
|
369
|
+
define_method "#{prefix_name}#{key}!" do
|
354
370
|
self.send "#{attribute_name}=", values.first
|
355
371
|
end
|
356
372
|
end
|
data/lib/enumerate_it/version.rb
CHANGED
data/spec/enumerate_it_spec.rb
CHANGED
@@ -170,6 +170,31 @@ describe EnumerateIt do
|
|
170
170
|
target.value_3!
|
171
171
|
target.foobar.should == TestEnumeration::VALUE_3
|
172
172
|
end
|
173
|
+
|
174
|
+
context "with :prefix option" do
|
175
|
+
before :each do
|
176
|
+
class TestClass
|
177
|
+
has_enumeration_for :foobar, :with => TestEnumeration, :create_helpers => { :prefix => true }
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
it "creates helpers methods with question marks and prefixes for each enumeration option" do
|
182
|
+
target = TestClass.new(TestEnumeration::VALUE_2)
|
183
|
+
target.should be_foobar_value_2
|
184
|
+
end
|
185
|
+
|
186
|
+
it "creates a mutator method for each enumeration value" do
|
187
|
+
[:value_1, :value_2, :value_3].each do |value|
|
188
|
+
TestClass.new(TestEnumeration::VALUE_1).should respond_to(:"foobar_#{value}!")
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
it "changes the attribute's value through mutator methods" do
|
193
|
+
target = TestClass.new(TestEnumeration::VALUE_2)
|
194
|
+
target.foobar_value_3!
|
195
|
+
target.foobar.should == TestEnumeration::VALUE_3
|
196
|
+
end
|
197
|
+
end
|
173
198
|
end
|
174
199
|
|
175
200
|
describe "using the :create_scopes option" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumerate_it
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.17
|
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: 2012-
|
12
|
+
date: 2012-08-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -117,12 +117,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
117
117
|
- - ! '>='
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: '0'
|
120
|
+
segments:
|
121
|
+
- 0
|
122
|
+
hash: -392427821220719135
|
120
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
124
|
none: false
|
122
125
|
requirements:
|
123
126
|
- - ! '>='
|
124
127
|
- !ruby/object:Gem::Version
|
125
128
|
version: '0'
|
129
|
+
segments:
|
130
|
+
- 0
|
131
|
+
hash: -392427821220719135
|
126
132
|
requirements: []
|
127
133
|
rubyforge_project:
|
128
134
|
rubygems_version: 1.8.24
|
@@ -135,4 +141,3 @@ test_files:
|
|
135
141
|
- spec/i18n/pt.yml
|
136
142
|
- spec/spec.opts
|
137
143
|
- spec/spec_helper.rb
|
138
|
-
has_rdoc:
|