enumerate_it 0.7.8 → 0.7.9

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 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: