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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc6259dd1805baa7fea583b8bb6e81e5856ae2b2146d942d476bb69e290db001
4
- data.tar.gz: a7ba17fcf8075b673d7e288f6197c15221f1f7ed99623c62f42ce55ca099ede0
3
+ metadata.gz: c0ddc5fc81178084615b8ecefe2629365cab7cb581ef050ac510ad72f87cb48f
4
+ data.tar.gz: 6525100c126385be180955393c8eab86176606367ee49ac3d9d92220a7bd0845
5
5
  SHA512:
6
- metadata.gz: 539bfe3eb4a52dffddc9eddbf9f6e6c677bc0582df2bb88ccfc3b1b346c9bb7d38ed45b420006ec3aae6a27d3c0d6b287e640f3e04c94b19ff97b1a67a1e3cca
7
- data.tar.gz: 51e7ca650044879cd9d4384e63fbfa8d19fdae35aa355ad14e0e007c310ed87ccfddc588095864c0e46962005b7e33d63358a888a860470b633b4cf4b68790bb
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">91%</text>
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
@@ -8,7 +8,7 @@ end
8
8
  module IS::Enum::Info
9
9
 
10
10
  NAME = 'is-enum'
11
- VERSION = '0.8.8.6'
11
+ VERSION = '0.8.10'
12
12
  SUMMARY = 'Enum types for Ruby'
13
13
  AUTHOR = 'Ivan Shikhalev'
14
14
  HOMEPAGE = 'https://github.com/inat-get/is-enum'
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
- @values.values.sort_by { |v| v.order_no }.each { |v| yield v }
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
- result = {}
166
- result.merge! @values
167
- result.merge! @aliases
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
- protected
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 +RuntimeError+.
252
+ # After calling, {.define} will raise +FrozenError+.
250
253
  #
251
254
  # @return [void]
252
255
  def finalize!
253
- @mutex ||= Thread::Mutex::new
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: is-enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.8.6
4
+ version: 0.8.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Shikhalev