enumerate_it 0.3.0 → 0.4.0

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 CHANGED
@@ -82,6 +82,8 @@ or not.
82
82
  has_enumeration_for :relationship_status, :with => RelationshipStatus
83
83
  end
84
84
 
85
+ The :with option is not required. If you ommit it, EnumerateIt will try to load an enumeration class based on the camelized attribute name.
86
+
85
87
  This will create:
86
88
 
87
89
  * A humanized description for the values of the enumerated attribute:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
data/enumerate_it.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{enumerate_it}
8
- s.version = "0.3.0"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Cássio Marques"]
12
- s.date = %q{2010-03-22}
11
+ s.authors = ["C\303\241ssio Marques"]
12
+ s.date = %q{2010-04-10}
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 = [
data/lib/enumerate_it.rb CHANGED
@@ -82,6 +82,9 @@
82
82
  # has_enumeration_for :relationship_status, :with => RelationshipStatus
83
83
  # end
84
84
  #
85
+ # The :with option is not required. If you ommit it, EnumerateIt will try to load an
86
+ # enumeration class based on the camelized attribute name.
87
+ #
85
88
  # This will create:
86
89
  #
87
90
  # - A humanized description for the values of the enumerated attribute:
@@ -194,7 +197,8 @@ module EnumerateIt
194
197
  end
195
198
 
196
199
  module ClassMethods
197
- def has_enumeration_for(attribute, options)
200
+ def has_enumeration_for(attribute, options = {})
201
+ define_enumeration_class attribute, options
198
202
  if self.respond_to? :validates_inclusion_of
199
203
  validates_inclusion_of attribute, :in => options[:with].list, :allow_blank => true
200
204
  end
@@ -223,6 +227,12 @@ module EnumerateIt
223
227
  end
224
228
  end
225
229
  end
230
+
231
+ def define_enumeration_class(attribute, options)
232
+ if options[:with].blank?
233
+ options[:with] = attribute.to_s.camelize.constantize
234
+ end
235
+ end
226
236
  end
227
237
 
228
238
  def self.included(receiver)
@@ -60,6 +60,24 @@ describe EnumerateIt do
60
60
  @target.foobar_humanize.should == 'Value Two'
61
61
  end
62
62
  end
63
+
64
+ context "without passing the enumeration class" do
65
+ before :each do
66
+ class FooBar
67
+ include EnumerateIt
68
+ attr_accessor :test_enumeration
69
+ has_enumeration_for :test_enumeration
70
+ def initialize(test_enumeration_value)
71
+ @test_enumeration = test_enumeration_value
72
+ end
73
+ end
74
+ end
75
+
76
+ it "should find out which enumeration class to use" do
77
+ target = FooBar.new(TestEnumeration::VALUE_1)
78
+ target.test_enumeration_humanize.should == 'Hey, I am 1!'
79
+ end
80
+ end
63
81
  end
64
82
 
65
83
  context "using the option :create_helpers option" do
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 3
7
+ - 4
8
8
  - 0
9
- version: 0.3.0
9
+ version: 0.4.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - "C\xC3\xA1ssio Marques"
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-22 00:00:00 -03:00
17
+ date: 2010-04-10 00:00:00 -03:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency