enumb 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/enumb.gemspec +2 -2
- data/lib/enumb.rb +26 -4
- data/lib/enumb/version.rb +1 -1
- data/spec/unit/enumb_spec.rb +63 -2
- metadata +9 -7
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NzIxMGQ4MTVmOWFiOWJhZGE0ZGY3MjZjMWMxODFhMmY3OGE4MzU1Yg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZTQzOWIzOTU1ZDZjOWQ2OTY2MTcyMDdkNDE2MWQyNzcwOTUxNDEyZg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZDExOWViNjRkYjJhZGEyZmYwMmM2NDNlNDJhNzQ3OTQ4ZWU3Mzk4N2Q3NGE0
|
10
|
+
MDNjYzg0ZGQ2OThkODVhODZlMjY3ZGNmMDU1OTJmYjYwNTYwZjI2NTJiY2Rl
|
11
|
+
YjQ3YjMxYzA5OTNjNWYxMTdkOTkzY2FkZDNjMGM0MjUzMjdiMjE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Yjg1M2U0ZmE4YjRjZTgxNmIzYTE3M2M5MThkNDk2NjRmMzM4MmViM2I4YmNh
|
14
|
+
ZjdiY2NiMjk4NDBjMTYwNzE3ZTFmMzgzNDIwNzQ0ZDdhY2U2ZWY4Zjg4M2Fi
|
15
|
+
NzRmNjVhZDg0MjU1ODY1OTU2ODc2NmIwODFlOGUxM2EyYThmZmU=
|
data/enumb.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Enumb::VERSION
|
9
9
|
spec.authors = ["Manther"]
|
10
10
|
spec.email = ["jason.manther.young@gmail.com"]
|
11
|
-
spec.description = %q{enumb helps developers create an enum like object in Ruby that closely resembles commonly found enum behavior of popular
|
11
|
+
spec.description = %q{enumb helps developers create an enum like object in Ruby that closely resembles commonly found enum behavior of other popular languages.}
|
12
12
|
spec.summary = %q{Enum module}
|
13
13
|
spec.homepage = "http://jasonwyoung.blogspot.com/"
|
14
14
|
spec.license = "MIT"
|
@@ -19,5 +19,5 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
-
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rake", "~> 0"
|
23
23
|
end
|
data/lib/enumb.rb
CHANGED
@@ -36,19 +36,41 @@ module Enumb
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
39
|
+
# Iterates using a block if provided, otherwise returns an array of enums
|
40
|
+
def enums(&block)
|
41
|
+
values = get_enums
|
42
|
+
if block
|
43
|
+
values.each do |v|
|
44
|
+
yield v
|
43
45
|
end
|
46
|
+
else
|
47
|
+
values
|
44
48
|
end
|
45
49
|
end
|
46
50
|
|
51
|
+
# Returns true/false if provided enum is a part of this class
|
52
|
+
def include?(enum_)
|
53
|
+
enums.include?(enum_)
|
54
|
+
end
|
55
|
+
|
56
|
+
alias_method :each, :enums
|
57
|
+
alias_method :map, :enums
|
58
|
+
|
47
59
|
private
|
60
|
+
|
48
61
|
def create_class_method(name, &block)
|
49
62
|
self.class.send(:define_method, name, &block)
|
50
63
|
end
|
51
64
|
|
65
|
+
# Return enum class vars
|
66
|
+
def get_enums
|
67
|
+
# Find matching refs
|
68
|
+
v = self.class_variables.find_all { |e| e.to_s.include? '__enum__' }
|
69
|
+
# Lookup class variable from refs and return
|
70
|
+
v.map { |x| class_variable_get(x) }
|
71
|
+
end
|
72
|
+
|
73
|
+
|
52
74
|
#decided not to limit in these ways, but;
|
53
75
|
#if you want your enum sealed implement something similar
|
54
76
|
#def inherited subclass
|
data/lib/enumb/version.rb
CHANGED
data/spec/unit/enumb_spec.rb
CHANGED
@@ -135,11 +135,72 @@ describe 'enumb' do
|
|
135
135
|
end
|
136
136
|
|
137
137
|
TestEnumToIterate.each do |x|
|
138
|
-
expect(((
|
138
|
+
expect(((TestEnumToIterate.Nones |
|
139
139
|
TestEnumToIterate.Somes |
|
140
140
|
TestEnumToIterate.Anys |
|
141
|
-
TestEnumToIterate.Each) & x) == x)
|
141
|
+
TestEnumToIterate.Each) & x) == x).to eq(true)
|
142
142
|
end
|
143
143
|
end
|
144
|
+
|
145
|
+
describe '.include?' do
|
146
|
+
|
147
|
+
it 'returns true for an Enum that is defined' do
|
148
|
+
class TestEnumToInclude
|
149
|
+
extend Enumb
|
150
|
+
enumerator :Alpha => 1
|
151
|
+
enumerator :Beta => 2
|
152
|
+
enumerator :Charlie => 3
|
153
|
+
enumerator :Echo => 4
|
154
|
+
end
|
155
|
+
x = TestEnumToInclude.Beta
|
156
|
+
|
157
|
+
class TestEnumToNotInclude
|
158
|
+
extend Enumb
|
159
|
+
enumerator :Alpha => 5
|
160
|
+
enumerator :Beta => 6
|
161
|
+
enumerator :Charlie => 7
|
162
|
+
enumerator :Echo => 8
|
163
|
+
end
|
164
|
+
y = TestEnumToNotInclude.Beta
|
165
|
+
|
166
|
+
expect(TestEnumToInclude.include?(x)).to be_true
|
167
|
+
expect(TestEnumToInclude.include?(y)).to be_false
|
168
|
+
# Inverse check
|
169
|
+
expect(TestEnumToNotInclude.include?(x)).to be_false
|
170
|
+
expect(TestEnumToNotInclude.include?(y)).to be_true
|
171
|
+
end
|
172
|
+
|
173
|
+
end
|
174
|
+
|
175
|
+
describe '.map' do
|
176
|
+
|
177
|
+
it 'returns Array of enums' do
|
178
|
+
class TestEnumToInclude
|
179
|
+
extend Enumb
|
180
|
+
enumerator :Alpha => 1
|
181
|
+
enumerator :Beta => 2
|
182
|
+
enumerator :Charlie => 3
|
183
|
+
enumerator :Echo => 4
|
184
|
+
end
|
185
|
+
expect(TestEnumToInclude.map).to match_array [TestEnumToInclude.Alpha, TestEnumToInclude.Beta, TestEnumToInclude.Charlie, TestEnumToInclude.Echo]
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
189
|
+
|
190
|
+
describe '.enums' do
|
191
|
+
|
192
|
+
it 'returns Array of enums' do
|
193
|
+
class TestEnumToInclude
|
194
|
+
extend Enumb
|
195
|
+
enumerator :Alpha => 1
|
196
|
+
enumerator :Beta => 2
|
197
|
+
enumerator :Charlie => 3
|
198
|
+
enumerator :Echo => 4
|
199
|
+
end
|
200
|
+
expect(TestEnumToInclude.map).to match_array [TestEnumToInclude.Alpha, TestEnumToInclude.Beta, TestEnumToInclude.Charlie, TestEnumToInclude.Echo]
|
201
|
+
end
|
202
|
+
|
203
|
+
end
|
204
|
+
|
144
205
|
end
|
145
206
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumb
|
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
|
- Manther
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,17 +28,19 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: !binary |-
|
34
|
+
MA==
|
34
35
|
requirement: !ruby/object:Gem::Requirement
|
35
36
|
requirements:
|
36
|
-
- - "
|
37
|
+
- - "~>"
|
37
38
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
39
|
+
version: !binary |-
|
40
|
+
MA==
|
39
41
|
prerelease: false
|
40
42
|
type: :development
|
41
|
-
description: enumb helps developers create an enum like object in Ruby that closely resembles commonly found enum behavior of popular
|
43
|
+
description: enumb helps developers create an enum like object in Ruby that closely resembles commonly found enum behavior of other popular languages.
|
42
44
|
email:
|
43
45
|
- jason.manther.young@gmail.com
|
44
46
|
executables: []
|