acts_as_enumeration 0.1.11 → 0.1.12

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.11"
5
+ VERSION="0.1.12"
6
6
  class << self
7
7
 
8
8
  def included(base)
@@ -64,8 +64,22 @@ module ActiveRecord
64
64
  end
65
65
  end
66
66
 
67
+ def _key(string)
68
+ ((string.to_s=~/^[a-z_]/) && !respond_to?(string.to_s)) ? string.to_s : "_#{string.to_s}"
69
+ end
70
+
71
+ def _camelized_key(string)
72
+ (((string.to_s=~/^[a-z_]/) && !const_defined?(string.to_s.camelize)) ? string.to_s : "_#{string.to_s}").camelize
73
+ end
74
+
75
+ 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.upcase
77
+ end
78
+
67
79
  portable_select(field).map { |x| normalize_intern(x.send(field)) }.each do |y|
68
- key = ((y.to_s=~/^[a-z_]/) && !respond_to?(y)) ? y.to_s : "_#{y.to_s}"
80
+ key=_key(y)
81
+ camelized_key=_camelized_key(y)
82
+ camelized_upcase_key=_camelized_upcase_key(y)
69
83
  define_method(:as_key) { self.class.normalize_intern(send(field)) }
70
84
  define_method("is_#{y}?") { is?(y) }
71
85
  alias_method "#{key}?", "is_#{y}?"
@@ -73,14 +87,14 @@ module ActiveRecord
73
87
  self;
74
88
  end.instance_eval do
75
89
  define_method(key) { self.send("for_#{field}", y) }
76
- define_method(key.camelize) { self.send("id_for_#{field}", y)}
77
- define_method(key.camelize.upcase) { self.send("id_for_#{field}", y)}
90
+ define_method(camelized_key) { self.send("id_for_#{field}", y)}
91
+ define_method(camelized_upcase_key) { self.send("id_for_#{field}", y)}
78
92
  end
79
93
  begin
80
- self.const_set(key.camelize,self.send("id_for_#{field}",y)) unless self.const_defined?(key.camelize)
81
- self.const_set(key.camelize.upcase,self.send("id_for_#{field}",y)) unless self.const_defined?(key.camelize.upcase)
94
+ self.const_set(camelized_key,self.send("id_for_#{field}",y))
95
+ self.const_set(camelized_upcase_key,self.send("id_for_#{field}",y))
82
96
  rescue Exception=>e
83
- puts("Warning: Skipping constant definition for #{key}")
97
+ puts("Warning: Skipping constant definition for #{y}")
84
98
  end
85
99
  end
86
100
  end
@@ -52,6 +52,7 @@ end)
52
52
  end
53
53
  [BrokenEnumeration].each do |klass|
54
54
  klass.create! :name => '33108', :description => '33108 field'
55
+ klass.create! :name => 'all', :description => 'already defined method'
55
56
  end
56
57
  EnumerateAll.acts_as_enumeration :description
57
58
  EnumerateSome.acts_as_enumeration :description
@@ -87,6 +88,8 @@ end)
87
88
  assert EnumerateAll.FIRSTFIELD,Enumerate.first.id
88
89
  assert EnumerateAll.FirstField,Enumerate.first.id
89
90
  assert BrokenEnumeration._33108,BrokenEnumeration.first.id
91
+ assert BrokenEnumeration._all.id,BrokenEnumeration.last.id
92
+ assert BrokenEnumeration::ALL,Enumerate.last.id
90
93
  end
91
94
 
92
95
  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.11
4
+ version: 0.1.12
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-10-18 00:00:00.000000000 Z
12
+ date: 2016-11-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler