kwattr 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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