symbolize 4.0.2 → 4.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,6 +1,7 @@
1
1
  = Symbolize attribute values
2
2
 
3
- This plugin introduces an easy way to use symbols for values of attributes. Symbolized attributes return a ruby symbol (or nil) as their value
3
+ This plugin introduces an easy way to use symbols for values of attributes.
4
+ Symbolized attributes return a ruby symbol (or nil) as their value
4
5
  and can be set using :symbols or "strings".
5
6
 
6
7
  == Install
@@ -23,28 +24,21 @@ and can be set using :symbols or "strings".
23
24
 
24
25
  == About
25
26
 
26
- Simply add "symbolize :attr_name" to your model class, and the specified
27
- attribute will return symbol values and can be set using smbols (setting
28
- string values will still work, which is important when using forms).
29
-
30
- On SQL-based DBs, an attribute to symbolize should be a string (varchar) column in the database.
27
+ Just use "symbolize :attribute" in your model, and the specified
28
+ attribute will return symbol values and can be set using symbols
29
+ (setting string values works, which is important when using forms).
31
30
 
31
+ On schema DBs, the attribute should be a string (varchar) column.
32
32
 
33
33
 
34
34
  == Usage
35
35
 
36
- Add "symbolize :attr_name" to your model class. You may also want to add
37
- validates_inclusion_of to restrict the possible values (just like an enum).
38
36
 
39
- # ActiveRecord
40
37
  class User < ActiveRecord::Base
41
-
42
- # Mongoid
43
- class User
44
- include Mongoid::Document
45
- include Mongoid::Symbolize
38
+ or Mongoid::Document
46
39
 
47
40
  symbolize :gender, :in => [:female, :male], :scopes => true
41
+
48
42
  symbolize :so, :in => {
49
43
  :linux => "Linux",
50
44
  :mac => "Mac OS X"
@@ -60,17 +54,18 @@ validates_inclusion_of to restrict the possible values (just like an enum).
60
54
  symbolize :angry, :in => [true, false], :scopes => true
61
55
 
62
56
  # Don`t validate
63
- symbolize :lang, :in => [:ruby, :c, :erlang], :validate => false
57
+ symbolize :lang, :in => [:ruby, :js, :c, :erlang], :validate => false
64
58
 
65
59
  # Default
66
- symbolize :kind, :in => [:admin, :manager, :user], :default => :admin
67
- end
60
+ symbolize :kind, :in => [:admin, :manager, :user], :default => :user
61
+
62
+ end
68
63
 
69
64
 
70
65
  === in/within
71
66
 
72
- The values allowed on the enum field, you can provide a hash with
73
- {:value => "Human text"} or an array of keys to be i18n eval (or not).
67
+ The values allowed on the enum field, you can provide a hash like
68
+ {:value => "Human text"} or an array of keys to run i18n on.
74
69
  Booleans are also supported. See below.
75
70
 
76
71
  allow_(blank|nil): What you expect.
@@ -108,6 +103,8 @@ Its possible to use boolean fields also.
108
103
  If you don`t provide a hash with values, it will try i18n:
109
104
 
110
105
  activerecord:
106
+ or
107
+ mongoid:
111
108
  attributes:
112
109
  user:
113
110
  enums:
@@ -119,20 +116,27 @@ If you don`t provide a hash with values, it will try i18n:
119
116
  female: Girl
120
117
  male: Boy
121
118
 
119
+
122
120
  You can skip i18n lookup with :i18n => false
123
- symbolize :gender, :in => [:female, :male], :i18n => false
124
121
 
122
+ symbolize :style, :in => [:rock, :punk, :funk, :jazz], :i18n => false
125
123
 
126
- === scopes (BETA)
124
+
125
+ === scopes
127
126
 
128
127
  If you provide the scopes option, some fancy named scopes will be added:
129
- In our User example, gender has this option, so you can do:
128
+ In our User example, gender has male/female options, so you can do:
129
+
130
+ # AR
131
+ User.male # => User.all(:conditions => { :gender => :male })
132
+
133
+ # Mongoid
134
+ User.female # => User.where({ :gender => :female })
130
135
 
131
- User.female => User.find(:all, :conditions => { :gender => :female })
132
136
 
133
137
  You can chain named scopes as well:
134
138
 
135
- User.female.mac => User.find(:all, :conditions => { :gender => :female, :so => :mac })
139
+ User.female.mac => User.all :conditions => { :gender => :female, :so => :mac }
136
140
 
137
141
  For boolean colums you can use
138
142
 
@@ -142,50 +146,36 @@ For boolean colums you can use
142
146
  ( or with_[attribute] and without_[attribute] )
143
147
 
144
148
 
145
- === default (BETA)
146
-
147
- As the name suggest, the symbol you choose as default will be set in new objects automatically.
148
-
149
- User.new.kind # Will print :admin
150
-
149
+ === default
151
150
 
152
- == Examples
151
+ As the name suggest, the symbol you choose as default will be set
152
+ in new objects automatically. Mongoid only for now.
153
153
 
154
- u = User.find_by_name('Anna') # => #<User Anna>
155
- u.gender # => :female
154
+ symbolize :mood, :in => [:happy, :sad, :euphoric], :default => (MarvinDay ? :sad : :happy)
156
155
 
157
- u = User.find_by_gender(:male) # => #<User Bob>
158
- u.gender # => :male
156
+ User.new.kind # It may print :happy
159
157
 
160
- u = User.find(:all, :conditions => { :gender => :female })
161
- u = User.female
162
-
163
- u = User.new(:name => 'ET', :gender => :unknown)
164
- u.save # => validation fails
165
158
 
166
159
  == Rails Form Example
167
160
 
161
+ You may call `Class.get_<attribute>_values` anywhere to get a nice array.
162
+ Works nice with dropdowns. Examples:
163
+
168
164
  class Coffee
169
165
  symbolize :genetic, :in => [:arabica, :robusta, :blend]
170
166
  end
171
167
 
172
- form_for(@coffee) do |f|
168
+ - form_for(@coffee) do |f|
173
169
  = f.label :genetic
174
170
  = f.select :genetic, Coffee.get_genetic_values
175
171
 
176
- == Model Helpers
177
-
178
-
179
- You may call `Class.get_attr_values` anywhere to get a nice array.
180
- Works nice with dropdowns. Examples:
181
-
182
-
183
172
  Somewhere on a view:
184
173
 
185
174
  = select_tag :kind, Coffee.get_genetic_values
186
175
 
187
176
 
188
- == View Helpers
177
+ == View Helpers (DEPRECATED)
178
+
189
179
 
190
180
  <% form_for @user do |f| %>
191
181
  <%= f.radio_sym "gender" %>
@@ -193,40 +183,7 @@ Somewhere on a view:
193
183
  <%= f.select_sym "so" %>
194
184
  <!-- Fixed order -->
195
185
  <%= f.select_sym "office" %>
196
- <% end %>
197
-
198
- output:
199
-
200
- <form action="users/1" method="post">
201
- <div style="margin:0;padding:0">...</div>
202
- <label>Female <input id="user_gender_female" name="user[gender]" type="radio" value="female"></label>
203
- <label>Male <input checked="checked" id="user_gender_male" name="user[gender]" type="radio" value="male" ></label>
204
- <!-- Alphabetic order -->
205
- <select id="user_so" name="post[so]">
206
- <option value="linux" selected="selected">Linux</option>
207
- <option value="mac">Mac OS X</option>
208
- <option value="windows">Windows XP</option>
209
- </select>
210
- <!-- Fixed order -->
211
- <select id="user_office" name="post[office]">
212
- <option value="kde" selected="selected">Koffice</option>
213
- <option value="ms">Microsoft Office</option>
214
- <option value="open">Open Office</option>
215
- </select>
216
- </form>
217
-
218
-
219
-
220
- === Plugin:
221
-
222
- Try at your own risk.
223
-
224
- rails plugin install git://github.com/nofxx/symbolize.git
225
-
226
-
227
- == Rails 3.1 (beta)
228
-
229
- Specs pass with rails 3, but a scope :public == fail.
186
+ <%end>
230
187
 
231
188
 
232
189
  == Specs
data/Rakefile CHANGED
@@ -1,24 +1,33 @@
1
- require 'rubygems'
2
- require 'rake'
3
- #require 'spec/rake/spectask'
4
-
5
- begin
6
- require 'jeweler'
7
- Jeweler::Tasks.new do |gem|
8
- gem.name = "symbolize"
9
- gem.summary = "Object enums with i18n in AR or Mongoid"
10
- gem.description = "ActiveRecord/Mongoid enums with i18n"
11
- gem.email = "x@nofxx.com"
12
- gem.homepage = "http://github.com/nofxx/symbolize"
13
- gem.authors = ["Marcos Piccinini"]
14
- gem.add_development_dependency "rspec"
15
- gem.add_development_dependency "sqlite3"
16
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
- end
18
- rescue LoadError
19
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
1
+ require "rspec"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec) do |spec|
5
+ spec.pattern = "spec/**/*_spec.rb"
20
6
  end
21
7
 
8
+ task :default => [:spec]
9
+
10
+ # require 'rubygems'
11
+ # require 'rake'
12
+ # #require 'spec/rake/spectask'
13
+
14
+ # begin
15
+ # require 'jeweler'
16
+ # Jeweler::Tasks.new do |gem|
17
+ # gem.name = "symbolize"
18
+ # gem.summary = "Object enums with i18n in AR or Mongoid"
19
+ # gem.description = "ActiveRecord/Mongoid enums with i18n"
20
+ # gem.email = "x@nofxx.com"
21
+ # gem.homepage = "http://github.com/nofxx/symbolize"
22
+ # gem.authors = ["Marcos Piccinini"]
23
+ # gem.add_development_dependency "rspec"
24
+ # gem.add_development_dependency "sqlite3"
25
+ # # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
26
+ # end
27
+ # rescue LoadError
28
+ # puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
29
+ # end
30
+
22
31
  # Spec::Rake::SpecTask.new(:spec) do |spec|
23
32
  # spec.libs << 'lib' << 'spec'
24
33
  # spec.spec_files = FileList['spec/**/*_spec.rb']
@@ -39,17 +48,17 @@ end
39
48
  # rdoc.rdoc_files.include('README')
40
49
  # rdoc.rdoc_files.include('lib/**/*.rb')
41
50
  # end
42
- require 'rdoc/task'
43
- Rake::RDocTask.new do |rdoc|
44
- if File.exist?('VERSION.yml')
45
- config = YAML.load(File.read('VERSION.yml'))
46
- version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
47
- else
48
- version = ""
49
- end
50
-
51
- rdoc.rdoc_dir = 'rdoc'
52
- rdoc.title = "symbolize #{version}"
53
- rdoc.rdoc_files.include('README*')
54
- rdoc.rdoc_files.include('lib/**/*.rb')
55
- end
51
+ # require 'rdoc/task'
52
+ # Rake::RDocTask.new do |rdoc|
53
+ # if File.exist?('VERSION.yml')
54
+ # config = YAML.load(File.read('VERSION.yml'))
55
+ # version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
56
+ # else
57
+ # version = ""
58
+ # end
59
+
60
+ # rdoc.rdoc_dir = 'rdoc'
61
+ # rdoc.title = "symbolize #{version}"
62
+ # rdoc.rdoc_files.include('README*')
63
+ # rdoc.rdoc_files.include('lib/**/*.rb')
64
+ # end
@@ -89,8 +89,9 @@ module Symbolize
89
89
 
90
90
  if methods
91
91
  values.each do |value|
92
- define_method("#{value[0]}?") do
93
- self.send(attr_name) == value[0]
92
+ key = value[0]
93
+ define_method("#{key}?") do
94
+ self[attr_name] == key
94
95
  end
95
96
  end
96
97
  end
@@ -111,10 +112,14 @@ module Symbolize
111
112
  end
112
113
  end
113
114
  end
114
- end
115
115
 
116
- if validation
117
- class_eval "validates_inclusion_of :#{attr_names.join(', :')}, #{configuration.inspect}"
116
+ if validation
117
+ validation = "validates_inclusion_of :#{attr_names.join(', :')}"
118
+ validation += ", :in => #{values.keys.inspect}"
119
+ validation += ", :allow_nil => true" if configuration[:allow_nil]
120
+ validation += ", :allow_blank => true" if configuration[:allow_blank]
121
+ class_eval validation
122
+ end
118
123
  end
119
124
  end
120
125
 
@@ -170,25 +175,4 @@ module Symbolize
170
175
  end
171
176
  end
172
177
 
173
- # The Symbol class is extended by method quoted_id which returns a string.
174
- # The idea behind this is, that symbols are converted to plain strings
175
- # when being quoted by ActiveRecord::ConnectionAdapters::Quoting#quote.
176
- # This makes it possible to work with symbolized attibutes in sql conditions.
177
- # E.g. validates_uniqueness_of could not use :scope with a symbolized
178
- # attribute, because AR quotes it to YAML:
179
- # "... AND status = '--- :active\n'"
180
- # Having support for quoted_id in Symbol, makes AR quoting symbols correctly:
181
- # "... AND status = 'active'"
182
- # NOTE: Normally quoted_id should be implemented as a singleton method
183
- # only used on symbols returned by read_and_symbolize_attribute,
184
- # but unfortunately this is not possible since Symbol is an immediate
185
- # value and therefore does not support singleton methods.
186
- # class Symbol
187
- # def quoted_id
188
- # # A symbol can contain almost every character (even a backslash or an
189
- # # apostrophe), so make sure to properly quote the string value here.
190
- # "'#{ActiveRecord::Base.connection.quote_string(self.to_s)}'"
191
- # end
192
- # end
193
-
194
- ActiveRecord::Base.send(:include, Symbolize) if ActiveRecord::VERSION::MAJOR >= 3
178
+ ActiveRecord::Base.send(:include, Symbolize)
@@ -63,16 +63,16 @@ module Mongoid
63
63
  default_opt = configuration.delete :default
64
64
 
65
65
  unless enum.nil?
66
- # Little monkeypatching, <1.8 Hashes aren't ordered.
67
- # hsh = RUBY_VERSION > '1.9' || !defined?("ActiveSupport") ? Hash : ActiveSupport::OrderedHash
68
66
 
69
67
  attr_names.each do |attr_name|
70
- attr_name = attr_name.to_s
68
+ # attr_name = attr_name.to_s
71
69
 
72
- # Builds Mongoid 'field :name, type: type, :default
73
- type = ", type: Symbol"
74
- default = ", default: :#{default_opt}" if default_opt
75
- class_eval("field :#{attr_name} #{type} #{default}")
70
+ #
71
+ # Builds Mongoid 'field :name, type: type, :default'
72
+ #
73
+ mongo_opts = ", :type => Symbol"
74
+ mongo_opts += ", :default => :#{default_opt}" if default_opt
75
+ class_eval("field :#{attr_name} #{mongo_opts}")
76
76
 
77
77
  const = "#{attr_name}_values"
78
78
  if enum.is_a?(Hash)
@@ -108,65 +108,39 @@ module Mongoid
108
108
  scope_comm = lambda { |*args| scope(*args)}
109
109
  values.each do |value|
110
110
  if value[0].respond_to?(:to_sym)
111
- scope_comm.call value[0].to_sym, :conditions => { attr_name => value[0].to_sym }
111
+ scope_comm.call value[0].to_sym, where({ attr_name => value[0].to_sym })
112
112
  end
113
113
  end
114
114
  end
115
115
 
116
116
  if validation
117
- class_eval "validates_inclusion_of :#{attr_names.join(', :')}, #{configuration.inspect}"
117
+ validation = "validates_inclusion_of :#{attr_names.join(', :')}"
118
+ validation += ", :in => #{values.keys.inspect}"
119
+ validation += ", :allow_nil => true" if configuration[:allow_nil]
120
+ validation += ", :allow_blank => true" if configuration[:allow_blank]
121
+ class_eval validation
118
122
  end
119
123
  end
120
124
  end
121
125
 
126
+ #
127
+ # Creates <attribute>_text helper, human text for attribute.
128
+ #
122
129
  attr_names.each do |attr_name|
123
-
124
- # if default_option
125
- # class_eval("def #{attr_name}; read_and_symbolize_attribute('#{attr_name}') || :#{default_option}; end")
126
- # class_eval("def #{attr_name}= (value); write_symbolized_attribute('#{attr_name}', value); end")
127
- # class_eval("def set_default_for_attr_#{attr_name}; self[:#{attr_name}] ||= :#{default_option}; end")
128
- # class_eval("before_save :set_default_for_attr_#{attr_name}")
129
- # else
130
- # class_eval("def #{attr_name}; read_and_symbolize_attribute('#{attr_name}'); end")
131
- # class_eval("def #{attr_name}= (value); write_symbolized_attribute('#{attr_name}', value); end")
132
- # end
133
- if i18n
134
- class_eval("def #{attr_name}_text; read_i18n_attribute('#{attr_name}'); end")
130
+ if i18n # memoize call to translate... good idea?
131
+ define_method "#{attr_name}_text" do
132
+ return nil unless attr = read_attribute(attr_name)
133
+ I18n.t("mongoid.attributes.#{ActiveSupport::Inflector.underscore(self.class)}.enums.#{attr_name}.#{attr}")
134
+ end
135
135
  elsif enum
136
136
  class_eval("def #{attr_name}_text; #{attr_name.to_s.upcase}_VALUES[#{attr_name}]; end")
137
137
  else
138
138
  class_eval("def #{attr_name}_text; #{attr_name}.to_s; end")
139
139
  end
140
140
  end
141
- end
142
- end
143
-
144
- # String becomes symbol, booleans string and nil nil.
145
- # def symbolize_attribute attr
146
- # case attr
147
- # when String then attr.empty? ? nil : attr.to_sym
148
- # when Symbol, TrueClass, FalseClass, Numeric then attr
149
- # else nil
150
- # end
151
- # end
152
-
153
- # # Return an attribute's value as a symbol or nil
154
- # def read_and_symbolize_attribute attr_name
155
- # symbolize_attribute self[attr_name]
156
- # end
157
141
 
158
- # Return an attribute's i18n
159
- def read_i18n_attribute attr_name
160
- return nil unless attr = read_attribute(attr_name)
161
- I18n.translate("mongoid.attributes.#{ActiveSupport::Inflector.underscore(self.class)}.enums.#{attr_name}.#{attr}") #.to_sym rescue nila
162
- end
163
-
164
- # # Write a symbolized value. Watch out for booleans.
165
- # def write_symbolized_attribute attr_name, value
166
- # val = { "true" => true, "false" => false }[value]
167
- # val = symbolize_attribute(value) if val.nil?
142
+ end
168
143
 
169
- # self[attr_name] = val #.to_s # rails 3.1 fix
170
- # end
171
- end
172
- end
144
+ end # ClassMethods
145
+ end # Symbolize
146
+ end # Mongoid
@@ -0,0 +1,3 @@
1
+ module Symbolize
2
+ VERSION = '4.0.3'
3
+ end
data/spec/locales/pt.yml CHANGED
@@ -14,9 +14,9 @@ pt:
14
14
  kind:
15
15
  magic: Mágica
16
16
  agility: Agilidade
17
- models:
17
+ mongoid:
18
18
  attributes:
19
- user:
19
+ person:
20
20
  enums:
21
21
  language:
22
22
  pt: Português
@@ -24,7 +24,7 @@ pt:
24
24
  sex:
25
25
  "true": Feminino
26
26
  "false": Masculino
27
- user_skill:
27
+ person_skill:
28
28
  enums:
29
29
  kind:
30
30
  magic: Mágica
data/spec/spec_helper.rb CHANGED
@@ -8,8 +8,7 @@ require 'pry'
8
8
 
9
9
  $LOAD_PATH.unshift(File.dirname(__FILE__))
10
10
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
11
- require 'action_controller'
12
- require 'action_view'
11
+ require 'i18n'
13
12
 
14
13
 
15
14
  I18n.load_path += Dir[File.join(File.dirname(__FILE__), "locales", "*.{rb,yml}")]
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
2
2
  require 'mongoid'
3
3
 
4
4
  Mongoid.configure do |config|
5
- config.master = Mongo::Connection.new.db("symboliz")
5
+ config.master = Mongo::Connection.new.db("symbolize_#{Time.now.to_i}")
6
6
  end
7
7
 
8
8
  require 'symbolize/mongoid'
@@ -177,43 +177,6 @@ describe "Symbolize" do
177
177
  new_extra.should_not be_valid
178
178
  end
179
179
 
180
-
181
-
182
- describe "View helpers" do
183
- include ActionView::Helpers::FormHelper
184
- include ActionView::Helpers::FormOptionsHelper
185
-
186
- before(:each) do
187
- @options_status = [['Active', :active], ['Inactive', :inactive]]
188
- @options_gui = [["cocoa", :cocoa], ["qt", :qt], ["gtk", :gtk]]
189
- @options_so = [["Linux", :linux] , ["Mac OS X", :mac], ["Videogame", :win]]
190
- end
191
-
192
- it "test_helper_select_sym" do
193
- @user.status = :inactive
194
- output = "<select id=\"user_status\" name=\"user[status]\">#{options_for_select(@options_status, @user.status)}</select>"
195
- output.should eql(select_sym("user", "status", nil))
196
-
197
-
198
- output = "<select id=\"user_status\" name=\"user[status]\">#{options_for_select(@options_status, @user.status)}</select>"
199
- output.should eql(select_sym("user", "status", nil))
200
- end
201
-
202
- def test_helper_select_sym_order
203
- output_so = "<select id=\"user_so\" name=\"user[so]\">#{options_for_select(@options_so, @user.so)}</select>"
204
- output_office = "<select id=\"user_office\" name=\"user[office]\">#{options_for_select(@options_office, @user.office)}</select>"
205
-
206
- assert_equal output_so, select_sym("user", "so", nil)
207
- assert_equal output_office, select_sym("user", "office", nil)
208
- end
209
-
210
- def test_helper_radio_sym
211
- output = radio_sym("user", "status", nil)
212
- assert_equal("<label>Active: <input checked=\"checked\" id=\"user_status_active\" name=\"user[status]\" type=\"radio\" value=\"active\" /></label><label>Inactive: <input id=\"user_status_inactive\" name=\"user[status]\" type=\"radio\" value=\"inactive\" /></label>", output)
213
- end
214
-
215
- end
216
-
217
180
  describe "i18n" do
218
181
 
219
182
  it "should test i18n ones" do
@@ -387,13 +350,12 @@ describe "Symbolize" do
387
350
  @anna.language_changed?.should be_true
388
351
  end
389
352
 
390
- it "is not dirty if you set the attribute value to the same value it was originally" do
353
+ it "is not dirty if you set the attribute value to the same value" do
391
354
  @anna.language.should == :pt
392
355
  @anna.language_changed?.should be_false
393
356
 
394
357
  return_value = @anna.language = :pt
395
358
  return_value.should == :pt
396
- p @anna.changes
397
359
  @anna.language_changed?.should be_false
398
360
  end
399
361
  end
@@ -1,9 +1,9 @@
1
1
  # -*- coding: utf-8 -*-
2
- require File.dirname(__FILE__) + '/../spec_helper_mongoid'
2
+ require 'spec_helper_mongoid'
3
3
 
4
4
  #
5
5
  # Test model
6
- class User
6
+ class Person
7
7
  include Mongoid::Document
8
8
  include Mongoid::Symbolize
9
9
 
@@ -17,28 +17,32 @@ class User
17
17
  :win => 'Videogame'
18
18
  }, :scopes => true
19
19
  symbolize :gui, :allow_blank => true, :in => [:cocoa, :qt, :gtk], :i18n => false
20
- symbolize :karma, :in => %w{ good bad ugly}, :methods => true, :i18n => false, :allow_nil => true
20
+ symbolize :karma, :in => %w{good bad ugly}, :methods => true, :i18n => false, :allow_nil => true
21
+ symbolize :planet, :in => %w{earth centauri tatooine}, :default => :earth
21
22
  # symbolize :cool, :in => [true, false], :scopes => true
22
23
 
23
- has_many :extras, :dependent => :destroy, :class_name => "UserExtra"
24
- embeds_many :skills, :class_name => "UserSkill"
24
+ has_many :rights, :dependent => :destroy
25
+ has_many :extras, :dependent => :destroy, :class_name => "PersonExtra"
26
+ embeds_many :skills, :class_name => "PersonSkill"
25
27
  end
26
28
 
27
- class UserSkill
29
+ class PersonSkill
28
30
  include Mongoid::Document
29
31
  include Mongoid::Symbolize
32
+ embedded_in :person, :inverse_of => :skills
30
33
 
31
34
  symbolize :kind, :in => [:agility, :magic]
32
35
  end
33
36
 
34
- class UserExtra
37
+ class PersonExtra
35
38
  include Mongoid::Document
36
39
  include Mongoid::Symbolize
40
+ belongs_to :person, :inverse_of => :extras
37
41
 
38
42
  symbolize :key, :in => [:one, :another]
39
43
  end
40
44
 
41
- class Permission
45
+ class Right
42
46
  include Mongoid::Document
43
47
  include Mongoid::Symbolize
44
48
 
@@ -46,208 +50,177 @@ class Permission
46
50
  symbolize :kind, :in => [:temp, :perm], :default => :perm
47
51
  end
48
52
 
49
- [User, UserExtra, UserSkill, Permission].each { |k| k.destroy_all }
50
-
51
- # Test records
52
- User.create(:name => 'Anna', :other => :fo, :status => :active , :so => :linux, :gui => :qt, :language => :pt, :sex => true, :cool => true)
53
- User.create!(:name => 'Bob' , :other => :bar,:status => :inactive, :so => :mac, :gui => :gtk, :language => :en, :sex => false, :cool => false)
54
-
55
-
56
53
  describe "Symbolize" do
57
54
 
58
55
  it "should be a module" do
59
56
  Mongoid.const_defined?("Symbolize").should be_true
60
57
  end
61
58
 
62
- describe "User Instantiated" do
63
- before(:each) do
64
- @user = User.first
65
- end
59
+ it "should instantiate" do
60
+ anna = Person.create(:name => 'Anna', :so => :mac, :gui => :cocoa, :language => :pt, :status => :active)
61
+ anna.should be_valid
62
+ # anna.errors.messages.should eql({})
63
+ end
64
+
65
+ describe "Person Instantiated" do
66
+ let(:person) { Person.create(:name => 'Anna', :other => :fo, :status => :active , :so => :linux, :gui => :qt, :language => :pt, :sex => true, :cool => true) }
66
67
 
67
68
  it "test_symbolize_string" do
68
- @user.status = 'inactive'
69
- @user.status.should eql(:inactive)
70
- # @user.status_before_type_cast.should eql(:inactive)
71
- # @user.read_attribute(:status).should eql('inactive')
69
+ person.status = 'inactive'
70
+ person.status.should eql(:inactive)
71
+ person.read_attribute(:status).should eql(:inactive)
72
72
  end
73
73
 
74
74
  it "test_symbolize_symbol" do
75
- @user.status = :active
76
- @user.status.should eql(:active)
77
- @user.save
78
- @user.status.should eql(:active)
79
- @user[:status].should eql(:active)
75
+ person.status = :active
76
+ person.status.should eql(:active)
77
+ person.save
78
+ person.status.should eql(:active)
79
+ person[:status].should eql(:active)
80
80
  end
81
81
 
82
82
  # it "should work nice with numbers" do
83
83
  # pending
84
- # @user.status = 43
85
- # @user.status.should_not be_nil
86
- # # @user.status_before_type_cast.should be_nil
87
- # # @user.read_attribute(:status).should be_nil
84
+ # person.status = 43
85
+ # person.status.should_not be_nil
86
+ # # person.status_before_type_cast.should be_nil
87
+ # # person.read_attribute(:status).should be_nil
88
88
  # end
89
89
 
90
90
  # it "should acts nice with nil" do
91
- # @user.status = nil
92
- # @user.status.should be_nil
93
- # @user.status_before_type_cast.should be_nil
94
- # @user.read_attribute(:status).should be_nil
91
+ # person.status = nil
92
+ # person.status.should be_nil
93
+ # person.status_before_type_cast.should be_nil
94
+ # person.read_attribute(:status).should be_nil
95
95
  # end
96
96
 
97
97
  # it "should acts nice with blank" do
98
- # @user.status = ""
99
- # @user.status.should be_nil
100
- # @user.status_before_type_cast.should be_nil
101
- # @user.read_attribute(:status).should be_nil
98
+ # person.status = ""
99
+ # person.status.should be_nil
100
+ # person.status_before_type_cast.should be_nil
101
+ # person.read_attribute(:status).should be_nil
102
102
  # end
103
103
 
104
104
  it "should not validates other" do
105
- @user.other = nil
106
- @user.should be_valid
107
- @user.other = ""
108
- @user.should be_valid
105
+ person.other = nil
106
+ person.should be_valid
107
+ person.other = ""
108
+ person.should be_valid
109
109
  end
110
110
 
111
111
  it "should get the correct values" do
112
- User.get_status_values.should eql([["Active", :active],["Inactive", :inactive]])
113
- User::STATUS_VALUES.should eql({:inactive=>"Inactive", :active=>"Active"})
112
+ Person.get_status_values.should eql([["Active", :active],["Inactive", :inactive]])
113
+ Person::STATUS_VALUES.should eql({ inactive: "Inactive", active: "Active"})
114
114
  end
115
115
 
116
116
  it "test_symbolize_humanize" do
117
- @user.status_text.should eql("Active")
117
+ person.status_text.should eql("Active")
118
118
  end
119
119
 
120
120
  it "should get the correct values" do
121
- User.get_gui_values.should =~ [["cocoa", :cocoa], ["qt", :qt], ["gtk", :gtk]]
122
- User::GUI_VALUES.should eql({:cocoa=>"cocoa", :qt=>"qt", :gtk=>"gtk"})
121
+ Person.get_gui_values.should =~ [["cocoa", :cocoa], ["qt", :qt], ["gtk", :gtk]]
122
+ Person::GUI_VALUES.should eql({cocoa: "cocoa", qt: "qt", gtk: "gtk"})
123
123
  end
124
124
 
125
125
  it "test_symbolize_humanize" do
126
- @user.gui_text.should eql("qt")
126
+ person.gui_text.should eql("qt")
127
127
  end
128
128
 
129
129
  it "should get the correct values" do
130
- User.get_so_values.should =~ [["Linux", :linux], ["Mac OS X", :mac], ["Videogame", :win]]
131
- User::SO_VALUES.should eql({:linux => "Linux", :mac => "Mac OS X", :win => "Videogame"})
130
+ Person.get_so_values.should =~ [["Linux", :linux], ["Mac OS X", :mac], ["Videogame", :win]]
131
+ Person::SO_VALUES.should eql({linux: "Linux", mac: "Mac OS X", win: "Videogame"})
132
132
  end
133
133
 
134
134
  it "test_symbolize_humanize" do
135
- @user.so_text.should eql("Linux")
135
+ person.so_text.should eql("Linux")
136
136
  end
137
137
 
138
138
  it "test_symbolize_humanize" do
139
- @user.so = :mac
140
- @user.so_text.should eql("Mac OS X")
139
+ person.so = :mac
140
+ person.so_text.should eql("Mac OS X")
141
141
  end
142
142
 
143
143
  it "should stringify" do
144
- @user.other_text.should eql("fo")
145
- @user.other = :foo
146
- @user.other_text.should eql("foo")
144
+ person.other_text.should eql("fo")
145
+ person.other = :foo
146
+ person.other_text.should eql("foo")
147
147
  end
148
148
 
149
149
  it "should validate status" do
150
- @user.status = nil
151
- @user.should_not be_valid
152
- @user.should have(1).errors
150
+ person.status = nil
151
+ person.should_not be_valid
152
+ person.should have(1).errors
153
153
  end
154
154
 
155
155
  it "should not validate so" do
156
- @user.so = nil
157
- @user.should be_valid
156
+ person.so = nil
157
+ person.should be_valid
158
158
  end
159
159
 
160
- it "test_symbols_with_weird_chars_quoted_id" do
161
- @user.status = :"weird'; chars"
162
- @user.status.should eql(:"weird'; chars")
160
+ it "should work with weird chars" do
161
+ person.status = :"weird'; chars"
162
+ person.status.should eql(:"weird'; chars")
163
163
  end
164
164
 
165
165
  it "should work fine through relations" do
166
- @user.extras.create(:key => :one)
167
- UserExtra.first.key.should eql(:one)
166
+ person.extras.create(:key => :one)
167
+ PersonExtra.first.key.should eql(:one)
168
+ end
169
+
170
+ it "should work fine through embeds" do
171
+ person.skills.create(:kind => :magic)
172
+ person.skills.first.kind.should eql(:magic)
168
173
  end
169
174
 
170
175
  # it "should play fine with null db columns" do
171
- # new_extra = @user.extras.build
176
+ # new_extra = person.extras.build
172
177
  # new_extra.should_not be_valid
173
178
  # end
174
179
 
175
180
  # it "should play fine with null db columns" do
176
- # new_extra = @user.extras.build
181
+ # new_extra = person.extras.build
177
182
  # new_extra.should_not be_valid
178
183
  # end
179
184
 
185
+ it "should default planet to earth" do
186
+ Person.new.planet.should eql(:earth)
187
+ end
180
188
 
181
189
 
182
- # describe "View helpers" do
183
- # include ActionView::Helpers::FormHelper
184
- # include ActionView::Helpers::FormOptionsHelper
185
-
186
- # before(:each) do
187
- # @options_status = [['Active', :active], ['Inactive', :inactive]]
188
- # @options_gui = [["cocoa", :cocoa], ["qt", :qt], ["gtk", :gtk]]
189
- # @options_so = [["Linux", :linux] , ["Mac OS X", :mac], ["Videogame", :win]]
190
- # end
191
-
192
- # it "test_helper_select_sym" do
193
- # @user.status = :inactive
194
- # output = "<select id=\"user_status\" name=\"user[status]\">#{options_for_select(@options_status, @user.status)}</select>"
195
- # output.should eql(select_sym("user", "status", nil))
196
-
197
-
198
- # output = "<select id=\"user_status\" name=\"user[status]\">#{options_for_select(@options_status, @user.status)}</select>"
199
- # output.should eql(select_sym("user", "status", nil))
200
- # end
201
-
202
- # def test_helper_select_sym_order
203
- # output_so = "<select id=\"user_so\" name=\"user[so]\">#{options_for_select(@options_so, @user.so)}</select>"
204
- # output_office = "<select id=\"user_office\" name=\"user[office]\">#{options_for_select(@options_office, @user.office)}</select>"
205
-
206
- # assert_equal output_so.should, select_sym("user", "so", nil)
207
- # assert_equal output_office, select_sym("user", "office", nil)
208
- # end
209
-
210
- # def test_helper_radio_sym
211
- # output = radio_sym("user", "status", nil)
212
- # assert_equal("<label>Active: <input checked=\"checked\" id=\"user_status_active\" name=\"user[status]\" type=\"radio\" value=\"active\" /></label><label>Inactive: <input id=\"user_status_inactive\" name=\"user[status]\" type=\"radio\" value=\"inactive\" /></label>", output)
213
- # end
214
-
215
- # end
216
-
217
190
  describe "i18n" do
218
191
 
219
192
  it "should test i18n ones" do
220
- @user.language_text.should eql("Português")
193
+ person.language_text.should eql("Português")
221
194
  end
222
195
 
223
196
  it "should get the correct values" do
224
- User.get_language_values.should =~ [["Português", :pt], ["Inglês", :en]]
197
+ Person.get_language_values.should =~ [["Português", :pt], ["Inglês", :en]]
225
198
  end
226
199
 
227
200
  it "should get the correct values" do
228
- User::LANGUAGE_VALUES.should eql({:pt=>"pt", :en=>"en"})
201
+ Person::LANGUAGE_VALUES.should eql({:pt=>"pt", :en=>"en"})
229
202
  end
230
203
 
231
204
  # it "should test boolean" do
232
- # @user.sex_text.should eql("Feminino")
205
+ # person.sex_text.should eql("Feminino")
233
206
  # end
234
207
 
235
208
  # it "should get the correct values" do
236
- # User.get_sex_values.should eql([["Feminino", true],["Masculino", false]])
209
+ # Person.get_sex_values.should eql([["Feminino", true],["Masculino", false]])
237
210
  # end
238
211
 
239
212
  # it "should get the correct values" do
240
- # User::SEX_VALUES.should eql({true=>"true", false=>"false"})
213
+ # Person::SEX_VALUES.should eql({true=>"true", false=>"false"})
241
214
  # end
242
215
 
243
- it "should translate a multiword class" do
244
- @skill = UserSkill.create(:kind => :magic)
245
- @skill.kind_text.should eql("Mágica")
216
+ it "should translate a multiword classname" do
217
+ skill = PersonSkill.new(:kind => :magic)
218
+ skill.kind_text.should eql("Mágica")
246
219
  end
247
220
 
248
221
  it "should return nil if there's no value" do
249
- @skill = UserSkill.create(:kind => nil)
250
- @skill.kind_text.should be_nil
222
+ skill = PersonSkill.new(:kind => nil)
223
+ skill.kind_text.should be_nil
251
224
  end
252
225
 
253
226
  end
@@ -255,53 +228,53 @@ describe "Symbolize" do
255
228
  describe "Methods" do
256
229
 
257
230
  it "should play nice with other stuff" do
258
- @user.karma.should be_nil
259
- User::KARMA_VALUES.should eql({:bad => "bad", :ugly => "ugly", :good => "good"})
231
+ person.karma.should be_nil
232
+ Person::KARMA_VALUES.should eql({:bad => "bad", :ugly => "ugly", :good => "good"})
260
233
  end
261
234
 
262
235
  it "should provide a boolean method" do
263
- @user.should_not be_good
264
- @user.karma = :ugly
265
- @user.should be_ugly
236
+ person.should_not be_good
237
+ person.karma = :ugly
238
+ person.should be_ugly
266
239
  end
267
240
 
268
241
  it "should work" do
269
- @user.karma = "good"
270
- @user.should be_good
271
- @user.should_not be_bad
242
+ person.karma = "good"
243
+ person.should be_good
244
+ person.should_not be_bad
272
245
  end
273
246
 
274
247
  end
275
248
 
276
249
  end
277
250
 
278
- describe "more tests on Permission" do
251
+ describe "more tests on Right" do
279
252
 
280
253
  it "should use default value on object build" do
281
- Permission.new.kind.should eql(:perm)
254
+ Right.new.kind.should eql(:perm)
282
255
  end
283
256
 
284
257
  it "should not interfer on create" do
285
- Permission.create!(:name => "p7", :kind => :temp)
286
- Permission.where(name: "p7").first.kind.should eql(:temp)
258
+ Right.create!(:name => "p7", :kind => :temp)
259
+ Right.where(name: "p7").first.kind.should eql(:temp)
287
260
  end
288
261
 
289
262
  it "should work on create" do
290
- pm = Permission.new(:name => "p7")
263
+ pm = Right.new(:name => "p7")
291
264
  pm.should be_valid
292
265
  pm.save.should be_true
293
266
  end
294
267
 
295
268
  it "should work on create" do
296
- Permission.create(:name => "p8")
297
- Permission.first(conditions: { name: "p8" }).kind.should eql(:perm)
269
+ Right.create(:name => "p8")
270
+ Right.first(conditions: { name: "p8" }).kind.should eql(:perm)
298
271
  end
299
272
 
300
273
  it "should work on edit" do
301
- pm = Permission.where(name: "p8").first
274
+ pm = Right.where(name: "p8").first
302
275
  pm.kind = :temp
303
276
  pm.save
304
- Permission.where(name: "p8").first.kind.should eql(:temp)
277
+ Right.where(name: "p8").first.kind.should eql(:temp)
305
278
  end
306
279
 
307
280
  end
@@ -309,19 +282,21 @@ describe "Symbolize" do
309
282
  describe "Mongoid stuff" do
310
283
 
311
284
  it "test_symbolized_finder" do
312
- User.where({ :status => :inactive }).all.map(&:name).should eql(['Bob'])
313
- User.where(status: :inactive).map(&:name).should eql(['Bob'])
285
+ Person.create(:name => 'Bob' , :other => :bar, :status => :inactive, :so => :mac, :gui => :gtk, :language => :en, :sex => false, :cool => false)
286
+
287
+ Person.where({ :status => :inactive }).all.map(&:name).should eql(['Bob'])
288
+ Person.where(status: :inactive).map(&:name).should eql(['Bob'])
314
289
  end
315
290
 
316
- # it "test_symabolized_with_scope" do
317
- # User.with_scope({ :status => :inactive }) do
318
- # User.all.map(&:name).should eql(['Bob'])
291
+ # it "should work under scope" do
292
+ # Person.with_scope({ :status => :inactive }) do
293
+ # Person.all.map(&:name).should eql(['Bob'])
319
294
  # end
320
295
  # end
321
296
 
322
297
  describe "dirty tracking / changed flag" do
323
298
  before do
324
- @anna = User.where(name: 'Anna').first
299
+ @anna = Person.where(name: 'Anna').first
325
300
  end
326
301
 
327
302
  it "is dirty if you change the attribute value" do
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 4
7
7
  - 0
8
- - 2
9
- version: 4.0.2
8
+ - 3
9
+ version: 4.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Marcos Piccinini
@@ -14,64 +14,94 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-09-29 00:00:00 -03:00
17
+ date: 2011-10-15 23:00:00 -03:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: rspec
21
+ name: i18n
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
26
- - - ">="
26
+ - - ~>
27
27
  - !ruby/object:Gem::Version
28
28
  segments:
29
29
  - 0
30
- version: "0"
30
+ - 6
31
+ - 0
32
+ version: 0.6.0
31
33
  type: :development
32
34
  version_requirements: *id001
33
35
  - !ruby/object:Gem::Dependency
34
- name: sqlite3
36
+ name: rspec
35
37
  prerelease: false
36
38
  requirement: &id002 !ruby/object:Gem::Requirement
37
39
  none: false
38
40
  requirements:
39
- - - ">="
41
+ - - ~>
40
42
  - !ruby/object:Gem::Version
41
43
  segments:
44
+ - 2
45
+ - 6
42
46
  - 0
43
- version: "0"
47
+ version: 2.6.0
44
48
  type: :development
45
49
  version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: mongoid
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ segments:
59
+ - 2
60
+ - 3
61
+ - 1
62
+ version: 2.3.1
63
+ type: :development
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: active_record
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ~>
72
+ - !ruby/object:Gem::Version
73
+ segments:
74
+ - 3
75
+ - 1
76
+ - 1
77
+ version: 3.1.1
78
+ type: :development
79
+ version_requirements: *id004
46
80
  description: ActiveRecord/Mongoid enums with i18n
47
81
  email: x@nofxx.com
48
82
  executables: []
49
83
 
50
84
  extensions: []
51
85
 
52
- extra_rdoc_files:
53
- - README.rdoc
86
+ extra_rdoc_files: []
87
+
54
88
  files:
55
- - .document
56
- - MIT-LICENSE
57
- - README.rdoc
58
- - Rakefile
59
- - VERSION
60
89
  - lib/symbolize.rb
61
90
  - lib/symbolize/active_record.rb
62
91
  - lib/symbolize/mongoid.rb
92
+ - lib/symbolize/version.rb
63
93
  - lib/symbolize/railtie.rb
64
- - lib/symbolize/symbolize_helper.rb
65
- - spec/db/001_create_testing_structure.rb
66
- - spec/locales/en.yml
67
- - spec/locales/pt.yml
94
+ - spec/spec_helper_mongoid.rb
68
95
  - spec/spec_helper.rb
96
+ - spec/symbolize_spec.rb
69
97
  - spec/spec_helper_ar.rb
70
- - spec/spec_helper_mongoid.rb
71
98
  - spec/symbolize/active_record_spec.rb
72
99
  - spec/symbolize/mongoid_spec.rb
73
- - spec/symbolize_spec.rb
74
- - symbolize.gemspec
100
+ - spec/db/001_create_testing_structure.rb
101
+ - spec/locales/pt.yml
102
+ - spec/locales/en.yml
103
+ - README.rdoc
104
+ - Rakefile
75
105
  has_rdoc: true
76
106
  homepage: http://github.com/nofxx/symbolize
77
107
  licenses: []
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/MIT-LICENSE DELETED
@@ -1,20 +0,0 @@
1
- Copyright (c) 2007-2008 Andreas Neuhaus <zargony@zargony.com>
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 4.0.2
@@ -1,60 +0,0 @@
1
- # Goes in lib/meta_tag_helper.rb
2
- module ActionView
3
- module Helpers
4
- module FormHelper
5
- # helper to create a select drop down list for the symbolize values
6
- def select_sym(object, method, choices = nil, options = {}, html_options = {})
7
-
8
- InstanceTag.new(object, method, self, options.delete(:object)).
9
- to_select_sym_tag(choices, options, html_options)
10
- end
11
-
12
- def radio_sym(object, method, choices = nil, options = {})
13
- InstanceTag.new(object, method, self, options.delete(:object)).
14
- to_radio_sym_tag(choices, options)
15
- end
16
- end
17
-
18
- class FormBuilder
19
- def select_sym(method, choices = nil, options = {}, html_options = {})
20
- @template.select_sym(@object_name, method, choices, objectify_options(options), html_options)
21
- end
22
-
23
- def radio_sym(method, choices = nil, options = {})
24
- @template.radio_sym(@object_name, method, choices, objectify_options(options))
25
- end
26
- end
27
-
28
- class InstanceTag
29
- # Create a select tag and one option for each of the
30
- # symbolize values.
31
- def to_select_sym_tag(choices, options, html_options)
32
- choices = symbolize_values(choices)
33
- to_select_tag(choices, options, html_options)
34
- end
35
-
36
- def to_radio_sym_tag(choices, options)
37
- choices = symbolize_values(choices)
38
- raise ArgumentError, "No values for radio tag" unless choices
39
- add_default_name_and_id(options)
40
- v = value(object)
41
- tag_text = ''
42
- template = options.dup
43
- template.delete('checked')
44
- choices.each do |choice|
45
- opts = template.dup
46
- opts['checked'] = 'checked' if v and v == choice[1]
47
- opts['id'] = "#{opts['id']}_#{choice[1]}"
48
- tag_text << "<label>#{choice[0]}: "
49
- tag_text << to_radio_button_tag(choice[1], opts)
50
- tag_text << "</label>"
51
- end
52
- tag_text
53
- end
54
-
55
- def symbolize_values(choices)
56
- choices.nil? ? object.class.send("get_#{@method_name}_values") : choices
57
- end
58
- end
59
- end
60
- end
data/symbolize.gemspec DELETED
@@ -1,61 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{symbolize}
8
- s.version = "4.0.2"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Marcos Piccinini"]
12
- s.date = %q{2011-09-29}
13
- s.description = %q{ActiveRecord/Mongoid enums with i18n}
14
- s.email = %q{x@nofxx.com}
15
- s.extra_rdoc_files = [
16
- "README.rdoc"
17
- ]
18
- s.files = [
19
- ".document",
20
- "MIT-LICENSE",
21
- "README.rdoc",
22
- "Rakefile",
23
- "VERSION",
24
- "lib/symbolize.rb",
25
- "lib/symbolize/active_record.rb",
26
- "lib/symbolize/mongoid.rb",
27
- "lib/symbolize/railtie.rb",
28
- "lib/symbolize/symbolize_helper.rb",
29
- "spec/db/001_create_testing_structure.rb",
30
- "spec/locales/en.yml",
31
- "spec/locales/pt.yml",
32
- "spec/spec_helper.rb",
33
- "spec/spec_helper_ar.rb",
34
- "spec/spec_helper_mongoid.rb",
35
- "spec/symbolize/active_record_spec.rb",
36
- "spec/symbolize/mongoid_spec.rb",
37
- "spec/symbolize_spec.rb",
38
- "symbolize.gemspec"
39
- ]
40
- s.homepage = %q{http://github.com/nofxx/symbolize}
41
- s.require_paths = ["lib"]
42
- s.rubygems_version = %q{1.3.7}
43
- s.summary = %q{Object enums with i18n in AR or Mongoid}
44
-
45
- if s.respond_to? :specification_version then
46
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
- s.specification_version = 3
48
-
49
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
- s.add_development_dependency(%q<rspec>, [">= 0"])
51
- s.add_development_dependency(%q<sqlite3>, [">= 0"])
52
- else
53
- s.add_dependency(%q<rspec>, [">= 0"])
54
- s.add_dependency(%q<sqlite3>, [">= 0"])
55
- end
56
- else
57
- s.add_dependency(%q<rspec>, [">= 0"])
58
- s.add_dependency(%q<sqlite3>, [">= 0"])
59
- end
60
- end
61
-