typesafe_enum 0.1.8 → 0.1.9

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
- SHA1:
3
- metadata.gz: 1f9b1132621b9e769433ef61e8fd2512a66197c4
4
- data.tar.gz: f5394bf7f1a1e88c56c727352f8d2dd113934855
2
+ SHA256:
3
+ metadata.gz: 993bd214447b49bb0ad4d3586e4486f45b5a4e728d6240c1cf72909c62f37577
4
+ data.tar.gz: f8110980c436802a9737425ecca99641d837f56458cdc6c2afb4ec7789685c82
5
5
  SHA512:
6
- metadata.gz: ffd661decf927ce85719a8cac164e7105f674e4289d68d546102f500aeb8d3a70907a25fafee22960c07967104ec77b8ee4ac8310450ba2febeafdb75c31dfa0
7
- data.tar.gz: 6f4770854fe78d823c0031f16338c081a4fbac9def1e519e4f7c579566c57ffbac0a13f4d597890b42fe97df614a52a3f6ff83b48fca5b505c96004bcf9833c0
6
+ metadata.gz: f1ecbac3bef591d12993ecb0d0252d625720e9ce7259e7bd673eb754c4d6db98b489aeb581be92a3c21f506a8bcf362f8d52e237e65e2882e5eed3894ad82393
7
+ data.tar.gz: 829ad9e7e94d28d3682aca8d0295ac5bfb4eb75982a6f1399e49538689f223ee0df673613756b05f8d49b53002aa9510bf66debf14c3b90f19d5feb4d11e0945
@@ -3,22 +3,87 @@ Style/ClassAndModuleChildren:
3
3
  Exclude:
4
4
  - 'example.rb'
5
5
 
6
- # Disable line-length check; it's too easy for the cure to be worse than the disease
6
+ # Allow one line around block body (Layout/EmptyLines will still disallow two or more)
7
+ Layout/EmptyLinesAroundBlockBody:
8
+ Enabled: false
9
+
10
+ # Allow one line around class body (Layout/EmptyLines will still disallow two or more)
11
+ Layout/EmptyLinesAroundClassBody:
12
+ Enabled: false
13
+
14
+ # Allow one line around module body (Layout/EmptyLines will still disallow two or more)
15
+ Layout/EmptyLinesAroundModuleBody:
16
+ Enabled: false
17
+
18
+ # Make indents consistent regardless of the lengths of variables and method names and whatnot
19
+ Layout/MultilineMethodCallIndentation:
20
+ EnforcedStyle: indented
21
+
22
+ # Produces monsters
23
+ Layout/MultilineOperationIndentation:
24
+ Enabled: false
25
+
26
+ # Reasonable line-length check; it's too easy for the cure to be worse than the disease
7
27
  Metrics/LineLength:
28
+ Max: 150
29
+
30
+ # Just because something looks like an accessor doesn't mean it is one
31
+ Naming/PredicateName:
32
+ Exclude:
33
+ - 'app/controllers/application_controller.rb'
34
+
35
+ # Confusing and weird
36
+ Naming/VariableNumber:
37
+ Enabled: False
38
+
39
+ # We meant to do that
40
+ Naming/MemoizedInstanceVariableName:
41
+ Enabled: False
42
+
43
+ # It works in context, trust us
44
+ Naming/UncommunicativeMethodParamName:
45
+ Enabled: False
46
+
47
+ # Do what's readable in the context you're in
48
+ Style/AccessModifierDeclarations:
49
+ Enabled: false
50
+
51
+ # 👎 to cultural imperialism
52
+ Style/AsciiComments:
53
+ Enabled: false
54
+
55
+ # Sometimes we want to distinguish hash parameters from keyword arguments
56
+ Style/BracesAroundHashParameters:
57
+ Enabled: False
58
+
59
+ # Seriously?
60
+ Style/CommentedKeyword:
8
61
  Enabled: False
9
62
 
10
63
  # Disable problematic module documentation check (see https://github.com/bbatsov/rubocop/issues/947)
11
64
  Style/Documentation:
12
65
  Enabled: false
13
66
 
14
- # Allow one line around class body (Style/EmptyLines will still disallow two or more)
15
- Layout/EmptyLinesAroundClassBody:
67
+ # Adding more line noise to format strings will not improve them
68
+ Style/FormatStringToken:
16
69
  Enabled: false
17
70
 
18
- # Allow one line around module body (Style/EmptyLines will still disallow two or more)
19
- Layout/EmptyLinesAroundModuleBody:
71
+ # Putting '# frozen_string_literal: true' everywhere does not make the world a better place
72
+ Style/FrozenStringLiteralComment:
20
73
  Enabled: false
21
74
 
22
- # Allow one line around block body (Style/EmptyLines will still disallow two or more)
23
- Layout/EmptyLinesAroundBlockBody:
75
+ # `foo.positive?` is cute, but it's not actually more readable than `foo > 0`
76
+ Style/NumericPredicate:
77
+ Enabled: false
78
+
79
+ # The semantics of `foo&.bar` are a lot less interchangeable with `foo && foo.bar` than RuboCop thinks
80
+ Style/SafeNavigation:
81
+ Enabled: false
82
+
83
+ # Requiring the lambda() method just makes wordy calls wordier
84
+ Style/Lambda:
85
+ EnforcedStyle: literal
86
+
87
+ # Unclear why it's a good idea to give parameters semantically meaningless names
88
+ Style/SingleLineBlockParams:
24
89
  Enabled: false
@@ -1 +1 @@
1
- 2.4.1
1
+ 2.5.1
data/CHANGES.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 0.1.9 (28 August 2019)
2
+
3
+ - Update to Ruby 2.5.1
4
+ - Update to rspec 3.8
5
+ - Update to RuboCop 0.74
6
+
1
7
  ## 0.1.8 (22 December 2017)
2
8
 
3
9
  - Update to Ruby 2.4.1
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # TypesafeEnum
2
2
 
3
- [![Build Status](https://travis-ci.org/dmolesUC3/typesafe_enum.svg?branch=master)](https://travis-ci.org/dmolesUC3/typesafe_enum)
4
- [![Code Climate](https://codeclimate.com/github/dmolesUC3/typesafe_enum.svg)](https://codeclimate.com/github/dmolesUC3/typesafe_enum)
5
- [![Inline docs](http://inch-ci.org/github/dmolesUC3/typesafe_enum.svg)](http://inch-ci.org/github/dmolesUC3/typesafe_enum)
6
- [![Gem Version](https://img.shields.io/gem/v/typesafe_enum.svg)](https://github.com/dmolesUC3/typesafe_enum/releases)
3
+ [![Build Status](https://travis-ci.org/dmolesUC/typesafe_enum.svg?branch=master)](https://travis-ci.org/dmolesUC/typesafe_enum)
4
+ [![Code Climate](https://codeclimate.com/github/dmolesUC/typesafe_enum.svg)](https://codeclimate.com/github/dmolesUC/typesafe_enum)
5
+ [![Inline docs](http://inch-ci.org/github/dmolesUC/typesafe_enum.svg)](http://inch-ci.org/github/dmolesUC/typesafe_enum)
6
+ [![Gem Version](https://img.shields.io/gem/v/typesafe_enum.svg)](https://github.com/dmolesUC/typesafe_enum/releases)
7
7
 
8
8
  A Ruby implementation of Joshua Bloch's
9
9
  [typesafe enum pattern](http://www.oracle.com/technetwork/java/page1-139488.html#replaceenums),
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TypesafeEnum
4
- Dir.glob(File.expand_path('../typesafe_enum/*.rb', __FILE__)).sort.each(&method(:require))
4
+ Dir.glob(File.expand_path('typesafe_enum/*.rb', __dir__)).sort.each(&method(:require))
5
5
  end
@@ -71,6 +71,7 @@ module TypesafeEnum
71
71
  # @return [self, nil] the corresponding enum instance, or nil
72
72
  def find_by_ord(ord)
73
73
  return nil if ord > size || ord.negative?
74
+
74
75
  as_array[ord]
75
76
  end
76
77
 
@@ -97,10 +98,12 @@ module TypesafeEnum
97
98
  value = instance.value
98
99
  if (found = find_by_key(key))
99
100
  raise NameError, "#{name}::#{key} already exists" unless value == found.value
101
+
100
102
  warn("ignoring redeclaration of #{name}::#{key} with value #{value} (source: #{caller(5..5).first})")
101
103
  nil
102
104
  else
103
105
  raise NameError, "A #{name} instance with value '#{value}' already exists" if find_by_value(value)
106
+
104
107
  [key, value]
105
108
  end
106
109
  end
@@ -157,6 +160,7 @@ module TypesafeEnum
157
160
 
158
161
  def initialize(key, value = nil, &block)
159
162
  raise TypeError, "#{key} is not a symbol" unless key.is_a?(Symbol)
163
+
160
164
  @key = key
161
165
  @value = value || key.to_s.downcase
162
166
  @ord = self.class.size
@@ -5,8 +5,8 @@ module TypesafeEnum
5
5
  NAME = 'typesafe_enum'
6
6
 
7
7
  # The version of this gem
8
- VERSION = '0.1.8'
8
+ VERSION = '0.1.9'
9
9
 
10
10
  # The copyright notice for this gem
11
- COPYRIGHT = 'Copyright (c) 2017 The Regents of the University of California'
11
+ COPYRIGHT = 'Copyright (c) 2019 The Regents of the University of California'
12
12
  end
@@ -1,16 +1,16 @@
1
1
  inherit_from: ../.rubocop.yml
2
2
 
3
- Metrics/BlockLength:
3
+ Style/ClassAndModuleChildren:
4
4
  Enabled: false
5
5
 
6
- Metrics/MethodLength:
6
+ Metrics/AbcSize:
7
7
  Enabled: false
8
8
 
9
- Metrics/ModuleLength:
9
+ Metrics/BlockLength:
10
10
  Enabled: false
11
11
 
12
- Style/ClassAndModuleChildren:
12
+ Metrics/ModuleLength:
13
13
  Enabled: false
14
14
 
15
- Security/MarshalLoad:
15
+ Metrics/MethodLength:
16
16
  Enabled: false
@@ -1,4 +1,3 @@
1
-
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require 'spec_helper'
@@ -94,7 +93,8 @@ module TypesafeEnum
94
93
  class ::IdenticalInstances < Base
95
94
  new :SPADES, 'spades'
96
95
  end
97
- expect(::IdenticalInstances).to receive(:warn).with(a_string_matching(/ignoring redeclaration of IdenticalInstances::SPADES with value spades/))
96
+ expected_msg = /ignoring redeclaration of IdenticalInstances::SPADES with value spades/
97
+ expect(::IdenticalInstances).to receive(:warn).with(a_string_matching(expected_msg))
98
98
  class ::IdenticalInstances < Base
99
99
  new :SPADES, 'spades'
100
100
  end
@@ -190,6 +190,7 @@ module TypesafeEnum
190
190
  end
191
191
  end
192
192
 
193
+ # rubocop:disable Security/MarshalLoad
193
194
  it 'survives marshalling' do
194
195
  Suit.each do |s1|
195
196
  dump = Marshal.dump(s1)
@@ -198,6 +199,7 @@ module TypesafeEnum
198
199
  expect(s2 == s1).to eq(true)
199
200
  end
200
201
  end
202
+ # rubocop:enable Security/MarshalLoad
201
203
  end
202
204
 
203
205
  describe '#!=' do
@@ -245,6 +247,7 @@ module TypesafeEnum
245
247
  end
246
248
  end
247
249
 
250
+ # rubocop:disable Security/MarshalLoad
248
251
  it 'survives marshalling' do
249
252
  Suit.each do |s1|
250
253
  dump = Marshal.dump(s1)
@@ -252,6 +255,7 @@ module TypesafeEnum
252
255
  expect(s2.hash).to eq(s1.hash)
253
256
  end
254
257
  end
258
+ # rubocop:enable Security/MarshalLoad
255
259
 
256
260
  it 'always returns a Fixnum' do
257
261
  Suit.each do |s1|
@@ -1,7 +1,6 @@
1
-
2
1
  # frozen_string_literal: true
3
2
 
4
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
5
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
5
 
7
6
  require 'uri'
@@ -16,9 +15,7 @@ Gem::Specification.new do |spec|
16
15
  spec.description = 'A gem that implements the typesafe enum pattern in Ruby'
17
16
  spec.license = 'MIT'
18
17
 
19
- origin = `git config --get remote.origin.url`.chomp
20
- origin_uri = origin.start_with?('http') ? URI(origin) : URI(origin.gsub(%r{git@([^:]+)(.com|.org)[^\/]+}, 'http://\1\2'))
21
- spec.homepage = URI::HTTP.build(host: origin_uri.host, path: origin_uri.path.chomp('.git')).to_s
18
+ spec.homepage = 'https://github.com/dmolesUC/typesafe_enum'
22
19
 
23
20
  spec.files = `git ls-files -z`.split("\x0")
24
21
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -26,10 +23,9 @@ Gem::Specification.new do |spec|
26
23
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
27
24
  spec.require_paths = ['lib']
28
25
 
29
- spec.add_development_dependency 'bundler', '~> 1.7'
30
26
  spec.add_development_dependency 'rake', '~> 10.4'
31
- spec.add_development_dependency 'rspec', '~> 3.7'
32
- spec.add_development_dependency 'rubocop', '~> 0.52'
27
+ spec.add_development_dependency 'rspec', '~> 3.8'
28
+ spec.add_development_dependency 'rubocop', '~> 0.74'
33
29
  spec.add_development_dependency 'simplecov', '~> 0.9.2'
34
30
  spec.add_development_dependency 'simplecov-console', '~> 0.2.0'
35
31
  spec.add_development_dependency 'yard', '~> 0.9', '>= 0.9.12'
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typesafe_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Moles
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-22 00:00:00.000000000 Z
11
+ date: 2019-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.7'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.7'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rake
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -44,28 +30,28 @@ dependencies:
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '3.7'
33
+ version: '3.8'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '3.7'
40
+ version: '3.8'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rubocop
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '0.52'
47
+ version: '0.74'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '0.52'
54
+ version: '0.74'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: simplecov
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -138,7 +124,7 @@ files:
138
124
  - spec/spec_helper.rb
139
125
  - spec/unit/typesafe_enum/base_spec.rb
140
126
  - typesafe_enum.gemspec
141
- homepage: http://github.com/typesafe_enum
127
+ homepage: https://github.com/dmolesUC/typesafe_enum
142
128
  licenses:
143
129
  - MIT
144
130
  metadata: {}
@@ -157,8 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
143
  - !ruby/object:Gem::Version
158
144
  version: '0'
159
145
  requirements: []
160
- rubyforge_project:
161
- rubygems_version: 2.6.12
146
+ rubygems_version: 3.0.4
162
147
  signing_key:
163
148
  specification_version: 4
164
149
  summary: Typesafe enum pattern for Ruby