is-enum 0.8.8.6 → 0.8.10
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.
- checksums.yaml +4 -4
- data/coverage-badge.svg +1 -1
- data/lib/is-enum/info.rb +1 -1
- data/lib/is-enum.rb +22 -11
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c0ddc5fc81178084615b8ecefe2629365cab7cb581ef050ac510ad72f87cb48f
|
|
4
|
+
data.tar.gz: 6525100c126385be180955393c8eab86176606367ee49ac3d9d92220a7bd0845
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 23782da0f945251e7e6c1dc075d525baf07950f2b94332238017d60bc51c00985e6d982bf85e232708b4bb664cc6e8772f8f6be09049ffd4a39047f1d167f46f
|
|
7
|
+
data.tar.gz: e70bdf7bebf9743200bbce139ca85d6889d23eefa9f2dbe87ba0dd1db374e409c5c42670144a15e116593cf0f61f013edaead5ad36be8a36b9b129448b2a1c78
|
data/coverage-badge.svg
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
<rect width="100" height="20" fill="#555"/>
|
|
3
3
|
<rect x="63" width="37" height="20" fill="green"/>
|
|
4
4
|
<text x="8" y="14" fill="#fff" font-family="Verdana" font-size="11">coverage</text>
|
|
5
|
-
<text x="66" y="14" fill="#fff" font-family="Verdana" font-size="11">
|
|
5
|
+
<text x="66" y="14" fill="#fff" font-family="Verdana" font-size="11">92%</text>
|
|
6
6
|
</svg>
|
data/lib/is-enum/info.rb
CHANGED
data/lib/is-enum.rb
CHANGED
|
@@ -129,7 +129,7 @@ class IS::Enum
|
|
|
129
129
|
# @return [Enumerator, self]
|
|
130
130
|
def each
|
|
131
131
|
return to_enum(__method__) unless block_given?
|
|
132
|
-
|
|
132
|
+
values.each { |v| yield v }
|
|
133
133
|
self
|
|
134
134
|
end
|
|
135
135
|
|
|
@@ -162,14 +162,20 @@ class IS::Enum
|
|
|
162
162
|
# @note Both canonical names and aliases are included. To distinguish,
|
|
163
163
|
# check {.aliases} for alias keys.
|
|
164
164
|
def to_h
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
165
|
+
@values.merge(@aliases)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
# @param [Range] range
|
|
169
|
+
# @return [Array<IS::Enum>]
|
|
170
|
+
def to_a range = nil
|
|
171
|
+
return values unless range
|
|
172
|
+
raise ArgumentError, "Invalid 'range' argument: #{ range.inspect }", caller_locations unless range.is_a?(Range)
|
|
173
|
+
values.select { |item| (range.begin.nil? || item >= range.begin) && (range.end.nil? || item < range.end || (!range.exclude_end? && item == range.end)) }
|
|
168
174
|
end
|
|
169
175
|
|
|
170
176
|
# @endgroup
|
|
171
177
|
|
|
172
|
-
|
|
178
|
+
private
|
|
173
179
|
|
|
174
180
|
# @group DSL
|
|
175
181
|
|
|
@@ -190,11 +196,8 @@ class IS::Enum
|
|
|
190
196
|
# define :archived, alias: :active
|
|
191
197
|
# end
|
|
192
198
|
def define name, order_no = nil, **attrs
|
|
193
|
-
@mutex ||= Thread::Mutex::new
|
|
194
199
|
@mutex.synchronize do
|
|
195
200
|
@sorted = nil
|
|
196
|
-
@values ||= {}
|
|
197
|
-
@aliases ||= {}
|
|
198
201
|
case name
|
|
199
202
|
when String
|
|
200
203
|
name = name.to_sym
|
|
@@ -246,26 +249,34 @@ class IS::Enum
|
|
|
246
249
|
end
|
|
247
250
|
|
|
248
251
|
# Freezes internal structures, preventing further modifications.
|
|
249
|
-
# After calling, {.define} will raise +
|
|
252
|
+
# After calling, {.define} will raise +FrozenError+.
|
|
250
253
|
#
|
|
251
254
|
# @return [void]
|
|
252
255
|
def finalize!
|
|
253
|
-
|
|
256
|
+
return if finalized?
|
|
254
257
|
@mutex.synchronize do
|
|
255
258
|
@values.freeze
|
|
256
259
|
@aliases.freeze
|
|
257
260
|
end
|
|
258
261
|
end
|
|
259
262
|
|
|
263
|
+
def finalized?
|
|
264
|
+
@values.frozen?
|
|
265
|
+
end
|
|
266
|
+
|
|
260
267
|
# @endgroup
|
|
261
268
|
|
|
262
269
|
# @private
|
|
263
270
|
def inherited subclass
|
|
271
|
+
super
|
|
264
272
|
@@mutex ||= Thread::Mutex::new
|
|
265
273
|
@@mutex.synchronize do
|
|
266
274
|
@@enums ||= {}
|
|
267
|
-
@@enums[subclass.name] = subclass
|
|
275
|
+
@@enums[subclass.name] = subclass if subclass.name
|
|
268
276
|
end
|
|
277
|
+
subclass.instance_variable_set(:@mutex, Thread::Mutex::new)
|
|
278
|
+
subclass.instance_variable_set(:@values, {})
|
|
279
|
+
subclass.instance_variable_set(:@aliases, {})
|
|
269
280
|
end
|
|
270
281
|
|
|
271
282
|
private :new
|