enumerate_it 0.7.0 → 0.7.1
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/README.rdoc +5 -5
- data/VERSION +1 -1
- data/enumerate_it.gemspec +16 -18
- data/lib/enumerate_it.rb +16 -1
- data/spec/enumerate_it_spec.rb +18 -0
- metadata +6 -7
- data/.gitignore +0 -22
data/README.rdoc
CHANGED
@@ -55,7 +55,7 @@ This will create some nice stuff:
|
|
55
55
|
|
56
56
|
* Each enumeration's value will turn into a constant:
|
57
57
|
|
58
|
-
|
58
|
+
RelationshipStatus::SINGLE # returns 1
|
59
59
|
RelationshipStatus::MARRIED # returns 2 and so on...
|
60
60
|
|
61
61
|
* You can retrieve a list with all the enumeration codes:
|
@@ -66,9 +66,9 @@ This will create some nice stuff:
|
|
66
66
|
|
67
67
|
RelationshipStatus.to_a # [["Divorced", 4],["Married", 2],["Single", 1],["Widow", 3]]
|
68
68
|
|
69
|
-
* You can
|
69
|
+
* You can retrieve a list with values for a group of enumeration constants.
|
70
70
|
|
71
|
-
RelationshipStatus.
|
71
|
+
RelationshipStatus.values_for %w(MARRIED SINGLE) # [2, 1]
|
72
72
|
|
73
73
|
* You can manipulate the hash used to create the enumeration:
|
74
74
|
|
@@ -161,7 +161,7 @@ located on enumerations.'enumeration_name'.'key' :
|
|
161
161
|
pt:
|
162
162
|
enumerations:
|
163
163
|
relationship_status:
|
164
|
-
|
164
|
+
married: Casado
|
165
165
|
|
166
166
|
p = Person.new
|
167
167
|
p.relationship_status = RelationshipStatus::MARRIED
|
@@ -195,7 +195,7 @@ An interesting approach to use it in Rails apps is to create an app/models/enume
|
|
195
195
|
|
196
196
|
== Ruby 1.9
|
197
197
|
|
198
|
-
EnumerateIt is fully compatible with Ruby 1.9.1 (all tests pass)
|
198
|
+
EnumerateIt is fully compatible with Ruby 1.9.1 and 1.9.2 (all tests pass)
|
199
199
|
|
200
200
|
== Why did you reinvent the wheel?
|
201
201
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.1
|
data/enumerate_it.gemspec
CHANGED
@@ -1,44 +1,42 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{enumerate_it}
|
8
|
-
s.version = "0.7.
|
8
|
+
s.version = "0.7.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["C\303\241ssio Marques"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-12-16}
|
13
13
|
s.description = %q{Have a legacy database and need some enumerations in your models to match those stupid '4 rows/2 columns' tables with foreign keys and stop doing joins just to fetch a simple description? Or maybe use some integers instead of strings as the code for each value of your enumerations? Here's EnumerateIt.}
|
14
14
|
s.email = %q{cassiommc@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
|
17
|
+
"README.rdoc"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
"spec/spec_helper.rb"
|
21
|
+
"LICENSE",
|
22
|
+
"README.rdoc",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"enumerate_it.gemspec",
|
26
|
+
"lib/enumerate_it.rb",
|
27
|
+
"spec/enumerate_it_spec.rb",
|
28
|
+
"spec/i18n/en.yml",
|
29
|
+
"spec/i18n/pt.yml",
|
30
|
+
"spec/spec.opts",
|
31
|
+
"spec/spec_helper.rb"
|
33
32
|
]
|
34
33
|
s.homepage = %q{http://github.com/cassiomarques/enumerate_it}
|
35
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
36
34
|
s.require_paths = ["lib"]
|
37
35
|
s.rubygems_version = %q{1.3.7}
|
38
36
|
s.summary = %q{Ruby Enumerations}
|
39
37
|
s.test_files = [
|
40
38
|
"spec/enumerate_it_spec.rb",
|
41
|
-
|
39
|
+
"spec/spec_helper.rb"
|
42
40
|
]
|
43
41
|
|
44
42
|
if s.respond_to? :specification_version then
|
data/lib/enumerate_it.rb
CHANGED
@@ -205,6 +205,10 @@ module EnumerateIt
|
|
205
205
|
@@registered_enumerations[self].values.map {|value| [translate(value[1]), value[0]] }.sort_by { |value| value[0] }
|
206
206
|
end
|
207
207
|
|
208
|
+
def self.to_range
|
209
|
+
(list.min..list.max)
|
210
|
+
end
|
211
|
+
|
208
212
|
def self.values_for(values)
|
209
213
|
values.map { |v| self.const_get(v.to_sym) }
|
210
214
|
end
|
@@ -224,7 +228,8 @@ module EnumerateIt
|
|
224
228
|
set_validations attribute, options
|
225
229
|
create_enumeration_humanize_method options[:with], attribute
|
226
230
|
if options[:create_helpers]
|
227
|
-
create_helper_methods
|
231
|
+
create_helper_methods(options[:with], attribute)
|
232
|
+
create_mutator_methods(options[:with], attribute)
|
228
233
|
end
|
229
234
|
end
|
230
235
|
|
@@ -249,6 +254,16 @@ module EnumerateIt
|
|
249
254
|
end
|
250
255
|
end
|
251
256
|
|
257
|
+
def create_mutator_methods(klass, attribute_name)
|
258
|
+
class_eval do
|
259
|
+
klass.enumeration.each_pair do |key, values|
|
260
|
+
define_method "#{key}!" do
|
261
|
+
self.send "#{attribute_name}=", values.first
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
252
267
|
def define_enumeration_class(attribute, options)
|
253
268
|
if options[:with].blank?
|
254
269
|
options[:with] = attribute.to_s.camelize.constantize
|
data/spec/enumerate_it_spec.rb
CHANGED
@@ -102,6 +102,18 @@ describe EnumerateIt do
|
|
102
102
|
target.should be_value_2
|
103
103
|
target.should_not be_value_1
|
104
104
|
end
|
105
|
+
|
106
|
+
it "creates a mutator method for each enumeration value" do
|
107
|
+
[:value_1, :value_2, :value_3].each do |value|
|
108
|
+
TestClass.new(TestEnumeration::VALUE_1).should respond_to(:"#{value}!")
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
it "changes the attribute's value through mutator methods" do
|
113
|
+
target = TestClass.new(TestEnumeration::VALUE_2)
|
114
|
+
target.value_3!
|
115
|
+
target.foobar.should == TestEnumeration::VALUE_3
|
116
|
+
end
|
105
117
|
end
|
106
118
|
|
107
119
|
describe EnumerateIt::Base do
|
@@ -135,6 +147,12 @@ describe EnumerateIt do
|
|
135
147
|
end
|
136
148
|
end
|
137
149
|
|
150
|
+
describe "#to_range" do
|
151
|
+
it "returns a Range object containing the enumeration's value interval" do
|
152
|
+
TestEnumeration.to_range.should == ("1".."3")
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
138
156
|
describe ".values_for" do
|
139
157
|
it "returns an array with the corresponding values for a string array representing some of the enumeration's values" do
|
140
158
|
TestEnumeration.values_for(%w(VALUE_1 VALUE_2)).should == [TestEnumeration::VALUE_1, TestEnumeration::VALUE_2]
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumerate_it
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 0.7.
|
9
|
+
- 1
|
10
|
+
version: 0.7.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- "C\xC3\xA1ssio Marques"
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-12-16 00:00:00 -02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -45,7 +45,6 @@ extra_rdoc_files:
|
|
45
45
|
- README.rdoc
|
46
46
|
files:
|
47
47
|
- .document
|
48
|
-
- .gitignore
|
49
48
|
- LICENSE
|
50
49
|
- README.rdoc
|
51
50
|
- Rakefile
|
@@ -62,8 +61,8 @@ homepage: http://github.com/cassiomarques/enumerate_it
|
|
62
61
|
licenses: []
|
63
62
|
|
64
63
|
post_install_message:
|
65
|
-
rdoc_options:
|
66
|
-
|
64
|
+
rdoc_options: []
|
65
|
+
|
67
66
|
require_paths:
|
68
67
|
- lib
|
69
68
|
required_ruby_version: !ruby/object:Gem::Requirement
|
data/.gitignore
DELETED