enumerate_it 0.7.8 → 0.7.9

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- enumerate_it (0.7.7)
4
+ enumerate_it (0.7.9)
5
5
  activesupport (>= 2.3.2)
6
6
 
7
7
  GEM
data/README.rdoc CHANGED
@@ -74,6 +74,23 @@ This will create some nice stuff:
74
74
 
75
75
  RelationshipStatus.enumeration # returns the exact hash used to define the enumeration
76
76
 
77
+ You can also create enumerations in the following ways:
78
+
79
+ * Passing an array of symbols, so that the respective value for each symbol will be the stringified version of the symbol itself:
80
+
81
+ class RelationshipStatus < EnumerateIt::Base
82
+ associate_values :married, :single
83
+ end
84
+
85
+ RelationshipStatus::MARRIED # returns "married" and so on
86
+
87
+ * Passing hashes where the value for each key/pair does not include a translation. In this case, the I18n feature will be used (more on this below):
88
+
89
+ class RelationshipStatus < EnumerateIt::Base
90
+ associate_values :married => 1, :single => 2
91
+ end
92
+
93
+
77
94
  == Using enumerations
78
95
 
79
96
  The cool part is that you can use these enumerations with any class, be it an ActiveRecord instance
@@ -111,7 +128,7 @@ This will create:
111
128
 
112
129
  * The associated enumerations can be retrieved with the 'enumerations' class method.
113
130
 
114
- Person.enumerations[:relationship_status] # => RelationshipStatus
131
+ Person.enumerations[:relationship_status] # => RelationshipStatus
115
132
 
116
133
  * If you pass the :create_helpers option as 'true', it will create a helper method for each enumeration option (this option defaults to false):
117
134
 
data/lib/enumerate_it.rb CHANGED
@@ -70,10 +70,26 @@
70
70
  #
71
71
  # RelationshipStatus.valus_for %w(MARRIED SINGLE) # [2, 1]
72
72
  #
73
- # - You can manipulate the has used to create the enumeration:
73
+ # - You can manipulate the hash used to create the enumeration:
74
74
  #
75
75
  # RelationshipStatus.enumeration # returns the exact hash used to define the enumeration
76
76
  #
77
+ # You can also create enumerations in the following ways:
78
+ #
79
+ # * Passing an array of symbols, so that the respective value for each symbol will be the stringified version of the symbol itself:
80
+ #
81
+ # class RelationshipStatus < EnumerateIt::Base
82
+ # associate_values :married, :single
83
+ # end
84
+ #
85
+ # RelationshipStatus::MARRIED # returns "married" and so on
86
+ #
87
+ # * Passing hashes where the value for each key/pair does not include a translation. In this case, the I18n feature will be used (more on this below):
88
+ #
89
+ # class RelationshipStatus < EnumerateIt::Base
90
+ # associate_values :married => 1, :single => 2
91
+ # end
92
+ #
77
93
  # = Using enumerations
78
94
  #
79
95
  # The cool part is that you can use these enumerations with any class, be it an ActiveRecord instance
@@ -181,7 +197,9 @@ module EnumerateIt
181
197
  class Base
182
198
  @@registered_enumerations = {}
183
199
 
184
- def self.associate_values(values_hash)
200
+ def self.associate_values(*args)
201
+ values_hash = args.first.is_a?(Hash) ? args.first : args.inject({}) { |h, v| h[v] = v.to_s; h }
202
+
185
203
  register_enumeration normalize_enumeration(values_hash)
186
204
  values_hash.each_pair { |value_name, attributes| define_enumeration_constant value_name, attributes[0] }
187
205
  end
data/lib/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module EnumerateIt
2
- VERSION = "0.7.8"
2
+ VERSION = "0.7.9"
3
3
  end
4
4
 
@@ -26,15 +26,21 @@ class TestEnumerationWithExtendedBehaviour < EnumerateIt::Base
26
26
  end
27
27
  end
28
28
 
29
+ class TestEnumerationWithList < EnumerateIt::Base
30
+ associate_values :first, :second
31
+ end
32
+
29
33
  class Foobar < EnumerateIt::Base
30
34
  associate_values(
31
35
  :bar => 'foo'
32
36
  )
33
37
  end
38
+
34
39
  class BaseClass
35
40
  include EnumerateIt
36
41
  has_enumeration_for :foobar, :with => TestEnumeration
37
42
  end
43
+
38
44
  describe EnumerateIt do
39
45
  before :each do
40
46
  class TestClass
@@ -66,6 +72,7 @@ describe EnumerateIt do
66
72
  it "stores the enumeration class in a class-level hash" do
67
73
  TestClass.enumerations[:foobar].should == TestEnumeration
68
74
  end
75
+
69
76
  context 'declaring a simple enum on an inherited class' do
70
77
  before do
71
78
  class SomeClass < BaseClass
@@ -104,7 +111,6 @@ describe EnumerateIt do
104
111
 
105
112
  @target.foobar_humanize.should == 'Primeiro Valor'
106
113
  end
107
-
108
114
  end
109
115
 
110
116
  context "without passing the enumeration class" do
@@ -245,6 +251,17 @@ describe EnumerateIt::Base do
245
251
  end
246
252
  end
247
253
 
254
+ context 'associate values with a list' do
255
+ it "creates constants for each enumeration value" do
256
+ TestEnumerationWithList::FIRST.should == "first"
257
+ TestEnumerationWithList::SECOND.should == "second"
258
+ end
259
+
260
+ it "returns an array with the values and human representations" do
261
+ TestEnumerationWithList.to_a.should == [['First', 'first'], ['Second', 'second']]
262
+ end
263
+ end
264
+
248
265
  context "when included in ActiveRecord::Base" do
249
266
  before :each do
250
267
  class ActiveRecordStub
metadata CHANGED
@@ -1,61 +1,60 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: enumerate_it
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.9
4
5
  prerelease:
5
- version: 0.7.8
6
6
  platform: ruby
7
- authors:
8
- - "C\xC3\xA1ssio Marques"
7
+ authors:
8
+ - Cássio Marques
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-05-10 00:00:00 -03:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: rspec
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2168378640 !ruby/object:Gem::Requirement
20
17
  none: false
21
- requirements:
22
- - - "="
23
- - !ruby/object:Gem::Version
18
+ requirements:
19
+ - - =
20
+ - !ruby/object:Gem::Version
24
21
  version: 2.5.0
25
22
  type: :development
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: activerecord
29
23
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2168378640
25
+ - !ruby/object:Gem::Dependency
26
+ name: activerecord
27
+ requirement: &2168378140 !ruby/object:Gem::Requirement
31
28
  none: false
32
- requirements:
33
- - - "="
34
- - !ruby/object:Gem::Version
29
+ requirements:
30
+ - - =
31
+ - !ruby/object:Gem::Version
35
32
  version: 3.0.5
36
33
  type: :development
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: activesupport
40
34
  prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2168378140
36
+ - !ruby/object:Gem::Dependency
37
+ name: activesupport
38
+ requirement: &2168377680 !ruby/object:Gem::Requirement
42
39
  none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
46
43
  version: 2.3.2
47
44
  type: :runtime
48
- version_requirements: *id003
49
- description: 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.
45
+ prerelease: false
46
+ version_requirements: *2168377680
47
+ description: Have a legacy database and need some enumerations in your models to match
48
+ those stupid '4 rows/2 columns' tables with foreign keys and stop doing joins just
49
+ to fetch a simple description? Or maybe use some integers instead of strings as
50
+ the code for each value of your enumerations? Here's EnumerateIt.
50
51
  email: cassiommc@gmail.com
51
52
  executables: []
52
-
53
53
  extensions: []
54
-
55
- extra_rdoc_files:
54
+ extra_rdoc_files:
56
55
  - LICENSE
57
56
  - README.rdoc
58
- files:
57
+ files:
59
58
  - .document
60
59
  - .gitignore
61
60
  - Gemfile
@@ -71,34 +70,31 @@ files:
71
70
  - spec/i18n/pt.yml
72
71
  - spec/spec.opts
73
72
  - spec/spec_helper.rb
74
- has_rdoc: true
75
73
  homepage: http://github.com/cassiomarques/enumerate_it
76
74
  licenses: []
77
-
78
75
  post_install_message:
79
76
  rdoc_options: []
80
-
81
- require_paths:
77
+ require_paths:
82
78
  - lib
83
- required_ruby_version: !ruby/object:Gem::Requirement
79
+ required_ruby_version: !ruby/object:Gem::Requirement
84
80
  none: false
85
- requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: "0"
89
- required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
86
  none: false
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: "0"
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
95
91
  requirements: []
96
-
97
92
  rubyforge_project:
98
- rubygems_version: 1.6.1
93
+ rubygems_version: 1.8.10
99
94
  signing_key:
100
95
  specification_version: 3
101
96
  summary: Ruby Enumerations
102
- test_files:
97
+ test_files:
103
98
  - spec/enumerate_it_spec.rb
104
99
  - spec/spec_helper.rb
100
+ has_rdoc: