mschuerig-easy_enums 0.0.4 → 0.0.5
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/lib/easy_enums.rb +25 -1
- data/test/test_easy_enums.rb +26 -0
- metadata +5 -5
data/lib/easy_enums.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
2
|
module EasyEnumerations
|
3
|
-
VERSION = '0.0.
|
3
|
+
VERSION = '0.0.5'
|
4
4
|
|
5
5
|
def self.included(base)
|
6
6
|
base.extend(ClassMethods)
|
@@ -21,6 +21,10 @@ module EasyEnumerations
|
|
21
21
|
@enum_cache.values
|
22
22
|
end
|
23
23
|
|
24
|
+
def names
|
25
|
+
@enum_cache.keys
|
26
|
+
end
|
27
|
+
|
24
28
|
def count(*args)
|
25
29
|
if args.empty?
|
26
30
|
@enum_cache.size
|
@@ -48,6 +52,21 @@ module EasyEnumerations
|
|
48
52
|
yield obj.name
|
49
53
|
end
|
50
54
|
end
|
55
|
+
|
56
|
+
def valid_name!(name, options = {})
|
57
|
+
name = ActiveSupport::Inflector.singularize(name) if options[:singularize]
|
58
|
+
name = clean_name(name) if options[:clean]
|
59
|
+
unless names.include?(name)
|
60
|
+
raise ArgumentError, "Not a valid name for a #{self.name}: #{name.inspect}"
|
61
|
+
end
|
62
|
+
name
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def clean_name(name)
|
68
|
+
ActiveSupport::Inflector.transliterate(name).gsub(' ', '_').gsub(/[^[:alnum:]_]/, '').underscore.to_s
|
69
|
+
end
|
51
70
|
end
|
52
71
|
|
53
72
|
class EnumerationCreator
|
@@ -74,12 +93,17 @@ module EasyEnumerations
|
|
74
93
|
end
|
75
94
|
|
76
95
|
def reload
|
96
|
+
@keys = @values = nil
|
77
97
|
@cache = @model.find(:all).inject({}) do |c, e|
|
78
98
|
c[e.name] = e
|
79
99
|
c
|
80
100
|
end
|
81
101
|
end
|
82
102
|
|
103
|
+
def keys
|
104
|
+
@keys ||= @cache.keys
|
105
|
+
end
|
106
|
+
|
83
107
|
def values
|
84
108
|
@values ||= @cache.values
|
85
109
|
end
|
data/test/test_easy_enums.rb
CHANGED
@@ -82,8 +82,34 @@ class TestEasyEnums < Test::Unit::TestCase
|
|
82
82
|
Enumbed.all.map { |e| e.name }.sort
|
83
83
|
end
|
84
84
|
|
85
|
+
def test_names
|
86
|
+
assert_equal ['blue', 'green', 'red'],
|
87
|
+
Enumbed.names.sort
|
88
|
+
end
|
89
|
+
|
85
90
|
def test_two_enums_do_not_interfere
|
86
91
|
assert_equal ["Fall", "Spring", "Summer", "Winter"],
|
87
92
|
Season.all.map { |e| e.name }.sort
|
88
93
|
end
|
94
|
+
|
95
|
+
def test_reload
|
96
|
+
Enumbed.create!(:name => 'pink')
|
97
|
+
Enumbed.reload
|
98
|
+
assert_equal ['blue', 'green', 'pink', 'red'],
|
99
|
+
Enumbed.all.map { |e| e.name }.sort
|
100
|
+
assert_equal ['blue', 'green', 'pink', 'red'],
|
101
|
+
Enumbed.names.sort
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_valid_name_for_valid_name
|
105
|
+
assert_nothing_raised do
|
106
|
+
Enumbed.valid_name!('red')
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_valid_name_for_invalid_name
|
111
|
+
assert_raises ArgumentError do
|
112
|
+
Enumbed.valid_name!('black')
|
113
|
+
end
|
114
|
+
end
|
89
115
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mschuerig-easy_enums
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Schuerig
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-05-22 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.4.1
|
34
34
|
version:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: hoe
|
@@ -62,7 +62,7 @@ files:
|
|
62
62
|
- rails/init.rb
|
63
63
|
- test/test_easy_enums.rb
|
64
64
|
- test/test_helper.rb
|
65
|
-
has_rdoc:
|
65
|
+
has_rdoc: true
|
66
66
|
homepage: http://github.com/mschuerig/easy_enums
|
67
67
|
post_install_message:
|
68
68
|
rdoc_options:
|
@@ -87,7 +87,7 @@ requirements: []
|
|
87
87
|
rubyforge_project: easy_enums
|
88
88
|
rubygems_version: 1.2.0
|
89
89
|
signing_key:
|
90
|
-
specification_version:
|
90
|
+
specification_version: 3
|
91
91
|
summary: Simplistic enumerations for ActiveRecord.
|
92
92
|
test_files:
|
93
93
|
- test/test_helper.rb
|