kwattr 1.1.0 → 1.2.0

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.
Files changed (4) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +2 -2
  3. data/lib/kwattr.rb +19 -6
  4. metadata +13 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a9ced9e0ee4d57097a23c8e2a32b6844e590031a
4
- data.tar.gz: 3aba633d536806dfb842125e8a41b29c12d16844
2
+ SHA256:
3
+ metadata.gz: d26310e1397eb6dba8a333f7bdae04ad77dcc76319abe4a696ebd11536849140
4
+ data.tar.gz: bdc0e19912891147bbd360453a56ad4f624fd0915b2f61d5dfeccc0e8625d814
5
5
  SHA512:
6
- metadata.gz: 23bdd697aa7329a1b0dcad3352fc5ef0946634d204f0d4e35a131a9732ae15d6047a7efb37deb1f292478021ae35486e6cd0abcac854e6fff95dbbdf220c24e6
7
- data.tar.gz: d1d49b97510a5751992cdf0441eaa1edc112d8f0fe108f1611d476f10d5098a846d81d877d1124e0d4027a2324634e22a72b5cd8c8bfb0698204c9ab48f4d3df
6
+ metadata.gz: ad874557f3f053462ff430d7c2a0bcbebe4c2d25eef2c5c2b5e2dd4832b57d78febb5bfcb989841b9b2eb4bf531d8c4ee10f0978651ca50c875cb372ecf238d4
7
+ data.tar.gz: 677d810457e0d8d202b1efc51906c0ab92ca817f12aa2f6b6aa7d80f2d325f275d124b509401425c6df0a092ee713999559a28cda4b57e9573178422d793e007
data/README.md CHANGED
@@ -83,8 +83,8 @@ FooBar2.new
83
83
 
84
84
  ## compatibility
85
85
 
86
- * **Ruby 2.5**, **Ruby 2.4**,**Ruby 2.3**, **Ruby 2.2** and **JRuby 9000** are
87
- fully supported.
86
+ * **Ruby 2.6**, **Ruby 2.5**, **Ruby 2.4**,**Ruby 2.3**, **Ruby 2.2**,
87
+ **TruffleRuby** and **JRuby 9000** are fully supported.
88
88
 
89
89
  * **Rubinius** is supported, but exceptions don't include keywords from
90
90
  `super`.
@@ -1,5 +1,5 @@
1
1
  class KWAttr < Module
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
 
4
4
  def initialize
5
5
  @required = []
@@ -31,21 +31,22 @@ class KWAttr < Module
31
31
  end
32
32
  required.unshift(*super_required)
33
33
  raise ArgumentError,
34
- "missing keyword#{'s' if required.size > 1}: #{required.join(', ')}"
34
+ "missing keyword#{'s' if required.size > 1}: #{KWAttr.keywords_for_error(required).join(', ')}"
35
35
  end
36
36
 
37
- args << kwargs unless kwargs.empty?
38
37
 
39
38
  begin
40
39
 
41
40
 
42
- super(*args, &block)
41
+ if kwargs.empty?
42
+ super(*args, &block) else super(*args, **kwargs, &block)
43
+ end
43
44
 
44
45
  rescue ArgumentError
45
46
  arity = method(:initialize).super_method.arity
46
- if !kwargs.empty? && arity != -1 && arity == args.size - 1
47
+ if !kwargs.empty? && arity != -1 && arity == args.size
47
48
  raise ArgumentError,
48
- "unknown keyword#{'s' if kwargs.size > 1}: #{kwargs.keys.join(', ')}"
49
+ "unknown keyword#{'s' if kwargs.size > 1}: #{KWAttr.keywords_for_error(kwargs.keys).join(', ')}"
49
50
  end
50
51
  raise
51
52
  end
@@ -58,6 +59,18 @@ class KWAttr < Module
58
59
  end
59
60
  end
60
61
 
62
+ class << KWAttr
63
+ if RUBY_ENGINE = 'ruby' && RUBY_VERSION >= '2.7'
64
+ def keywords_for_error(keywords)
65
+ keywords.map(&:inspect)
66
+ end
67
+ else
68
+ def keywords_for_error(keywords)
69
+ keywords
70
+ end
71
+ end
72
+ end
73
+
61
74
  class Module
62
75
  def kwattr(*attrs, **opts)
63
76
  names = [*attrs, *opts.keys]
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kwattr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Étienne Barrié
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-26 00:00:00.000000000 Z
11
+ date: 2020-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.9'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.9'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -77,7 +77,8 @@ files:
77
77
  - README.md
78
78
  - lib/kwattr.rb
79
79
  homepage: https://github.com/etiennebarrie/kwattr
80
- licenses: []
80
+ licenses:
81
+ - MIT
81
82
  metadata: {}
82
83
  post_install_message:
83
84
  rdoc_options: []
@@ -94,8 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
95
  - !ruby/object:Gem::Version
95
96
  version: '0'
96
97
  requirements: []
97
- rubyforge_project:
98
- rubygems_version: 2.6.13
98
+ rubygems_version: 3.1.2
99
99
  signing_key:
100
100
  specification_version: 4
101
101
  summary: attr_reader + initialize with keyword arguments