acts_as_enumeration 0.1.13 → 0.1.14

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@ module ActiveRecord
2
2
  module Acts
3
3
  module Enumeration
4
4
 
5
- VERSION="0.1.13"
5
+ VERSION="0.1.14"
6
6
  class << self
7
7
 
8
8
  def included(base)
@@ -64,22 +64,30 @@ module ActiveRecord
64
64
  end
65
65
  end
66
66
 
67
+ def allowed_chars(string)
68
+ string.to_s=~/^[a-z_]/
69
+ end
70
+
71
+ def check_string(string, &block)
72
+ allowed_chars(string) && (yield string)
73
+ end
74
+
67
75
  def _key(string)
68
- ((string.to_s=~/^[a-z_]/) && !respond_to?(string.to_s)) ? string.to_s : "_#{string.to_s}"
76
+ check_string(string) {|y| !respond_to?(y)} ? string : "_#{string}"
69
77
  end
70
78
 
71
79
  def _camelized_key(string)
72
- (((string.to_s=~/^[a-z_]/) && !const_defined?(string.to_s.camelize)) ? string.to_s : "_#{string.to_s.camelize}").camelize
80
+ check_string(string) {|y| !const_defined?(string.camelize)} ? string.camelize : "_#{string.camelize}"
73
81
  end
74
82
 
75
83
  def _camelized_upcase_key(string)
76
- (((string.to_s=~/^[a-z_]/) && !const_defined?(string.to_s.camelize.upcase)) ? string.to_s : "_#{string.to_s.camelize}").camelize.upcase
84
+ check_string(string) {|y| !const_defined?(string.camelize.upcase)} ? string.camelize.upcase : "_#{string.camelize.upcase}"
77
85
  end
78
86
 
79
87
  portable_select(field).map { |x| normalize_intern(x.send(field)) }.each do |y|
80
- key=_key(y)
81
- camelized_key=_camelized_key(y)
82
- camelized_upcase_key=_camelized_upcase_key(y)
88
+ key=_key(y.to_s)
89
+ camelized_key=_camelized_key(y.to_s)
90
+ camelized_upcase_key=_camelized_upcase_key(y.to_s)
83
91
  define_method(:as_key) { self.class.normalize_intern(send(field)) }
84
92
  define_method("is_#{y}?") { is?(y) }
85
93
  alias_method "#{key}?", "is_#{y}?"
@@ -92,9 +100,13 @@ module ActiveRecord
92
100
  end
93
101
  begin
94
102
  self.const_set(camelized_key,self.send("id_for_#{field}",y))
103
+ rescue Exception=>e
104
+ puts("Warning: Skipping constant definition for #{camelized_key}")
105
+ end
106
+ begin
95
107
  self.const_set(camelized_upcase_key,self.send("id_for_#{field}",y))
96
108
  rescue Exception=>e
97
- puts("Warning: Skipping constant definition for #{y}")
109
+ puts("Warning: Skipping constant definition for #{camelized_upcase_key}")
98
110
  end
99
111
  end
100
112
  end
@@ -88,8 +88,10 @@ end)
88
88
  assert EnumerateAll.FIRSTFIELD,Enumerate.first.id
89
89
  assert EnumerateAll.FirstField,Enumerate.first.id
90
90
  assert BrokenEnumeration._33108,BrokenEnumeration.first.id
91
- assert BrokenEnumeration._all.id,BrokenEnumeration.last.id
92
- assert BrokenEnumeration::ALL,Enumerate.last.id
91
+ assert BrokenEnumeration._all,BrokenEnumeration.find_by_name('all')
92
+ assert BrokenEnumeration::All,BrokenEnumeration.find_by_name('all').id
93
+ assert BrokenEnumeration::ALL,BrokenEnumeration.find_by_name('all').id
94
+ assert BrokenEnumeration::ALL,BrokenEnumeration.id_for_name(:all)
93
95
  end
94
96
 
95
97
  def test_sti
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_enumeration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.1.14
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: