marameters 3.8.0 → 3.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b6907611c749d0afd13d7e724a625aaa344de5625a7e8a3430880412dacf250a
4
- data.tar.gz: e628c69c662b7005b308854006149d93fbf394a801fde3b4abd589d5109d1b25
3
+ metadata.gz: 7606dc2ae5b229a62afef737d7e5ced158c9c0cb49cd2ea1dc5dcb90d82e2c72
4
+ data.tar.gz: 055dc360d709822f1cc49157faedde426a6ba6e4f393aa7e0f6adbb0ec10784d
5
5
  SHA512:
6
- metadata.gz: 3ed5a571f16d65a033f1aa746d84f2f9ca69fdc3b86f0960673acfc24b882b8a69768859c9fe2ef6fe30af261365c45bb0726886aa12e89de6f015c85bcb7c64
7
- data.tar.gz: 5a434f7bd2635a6b2ca6f3bec85b21d1e48aaa597fdc3447280bfff7f81f50c8e3072dbbd5acebe558b705b08a40726a161e8032ce1a573d0501ac9c97b72dec
6
+ metadata.gz: 4da9a50704be5f6f8380d7e5f47c7296392b0786d64f72600a0931b7717d16318e722350c79efd233d5357be4a68682f067e73bba3197799a6252c7e2416623d
7
+ data.tar.gz: d17300ba62b53036f7eb999dc50f41e847de43caf52fbb3c2561f8c803fbbc50af69c590181c1eb88d84c38d7c5fe291ef4950a7bd4dd370bc907e24974fa9c3
checksums.yaml.gz.sig CHANGED
@@ -1 +1,3 @@
1
- @��ARxр�o�ϻ�7{ P�v7�`��jZ�h؋y�d�)~��E�x���΀#~�E���VR���=H�Y�޵}˂�L�e��@�6�⋜)� s�
2
1
  $a>s�8��垪�7<��e�NZzO�US�FvT:m!���T�
2
+ K�]�IO��v�+��԰����Β����d><�sV��w�:�.�*g��K3��q��)���X��/�*���� ��~���]F��:��[���4g���§��t��d�
3
+ ����< g�l��DA��_G�\.�KI����l�2��iC<�U� S�ȋtf����u� �u�Ʉ"E����gd�q����y 5��H7�Ax���/dg��/%)D��"���*f�g�:��~�OT���Cv.��u&B���
4
+ S|��a�cԴJ�t1o֦3���� �\ ��&��S�1jdk/$�
data/README.adoc CHANGED
@@ -139,6 +139,7 @@ probe.positionals? # true
139
139
  probe.splats # [:three, :six]
140
140
  probe.splats? # true
141
141
  probe.to_a # [[:req, :one], [:opt, :two], [:rest, :three], [:keyreq, :four], [:key, :five], [:keyrest, :six], [:block, :seven]]
142
+ probe.to_h # {req: :one, opt: :two, rest: :three, keyreq: :four, key: :five, keyrest: :six, block: :seven}
142
143
  ----
143
144
 
144
145
  In contrast the above, we can also probe the `#none` method which has no parameters for a completely
@@ -165,6 +166,7 @@ probe.positionals? # false
165
166
  probe.splats # []
166
167
  probe.splats? # false
167
168
  probe.to_a # []
169
+ probe.to_h # {}
168
170
  ----
169
171
 
170
172
  === Categorizer
@@ -2,28 +2,13 @@
2
2
 
3
3
  module Marameters
4
4
  # Computes a method parameter's default value.
5
- class Defaulter
6
- PASSTHROUGH = "*"
7
-
8
- def self.call(...) = new(...).call
9
-
10
- def initialize value, passthrough: PASSTHROUGH
11
- @value = value
12
- @passthrough = passthrough
13
- end
14
-
15
- def call
16
- case value
17
- when nil then "nil"
18
- when /\A#{Regexp.escape passthrough}/ then value.delete_prefix passthrough
19
- when String then value.dump
20
- when Symbol then value.inspect
21
- else value
22
- end
5
+ Defaulter = lambda do |value, passthrough: "*"|
6
+ case value
7
+ when /\A#{Regexp.escape passthrough}/ then value.delete_prefix passthrough
8
+ when String then value.dump
9
+ when Symbol then value.inspect
10
+ when nil then "nil"
11
+ else value
23
12
  end
24
-
25
- private
26
-
27
- attr_reader :value, :passthrough
28
13
  end
29
14
  end
@@ -32,7 +32,14 @@ module Marameters
32
32
  def empty? = parameters.empty?
33
33
 
34
34
  def keyword_slice collection, keys:
35
- collection.select { |key| !keys.include?(key) || keywords.include?(key) }
35
+ warn "`#{self.class}##{__method__}` is deprecated, use `#keywords_for` instead.",
36
+ category: :deprecated
37
+
38
+ keywords_for(*keys, **collection)
39
+ end
40
+
41
+ def keywords_for(*keys, **attributes)
42
+ attributes.select { |key| !keys.include?(key) || keywords.include?(key) }
36
43
  end
37
44
 
38
45
  def keywords? = keywords.any?
@@ -64,6 +71,8 @@ module Marameters
64
71
 
65
72
  def to_a = parameters
66
73
 
74
+ def to_h = parameters.each.with_object({}) { |(key, name), attributes| attributes[key] = name }
75
+
67
76
  private
68
77
 
69
78
  attr_reader :parameters
data/marameters.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "marameters"
5
- spec.version = "3.8.0"
5
+ spec.version = "3.9.0"
6
6
  spec.authors = ["Brooke Kuhlmann"]
7
7
  spec.email = ["brooke@alchemists.io"]
8
8
  spec.homepage = "https://alchemists.io/projects/marameters"
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.required_ruby_version = ">= 3.3", "<= 3.4"
26
26
  spec.add_dependency "refinements", "~> 12.9"
27
- spec.add_dependency "zeitwerk", "~> 2.6"
27
+ spec.add_dependency "zeitwerk", "~> 2.7"
28
28
 
29
29
  spec.extra_rdoc_files = Dir["README*", "LICENSE*"]
30
30
  spec.files = Dir["*.gemspec", "lib/**/*"]
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marameters
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.0
4
+ version: 3.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -35,7 +35,7 @@ cert_chain:
35
35
  3n5C8/6Zh9DYTkpcwPSuIfAga6wf4nXc9m6JAw8AuMLaiWN/r/2s4zJsUHYERJEu
36
36
  gZGm4JqtuSg8pYjPeIJxS960owq+SfuC+jxqmRA54BisFCv/0VOJi7tiJVY=
37
37
  -----END CERTIFICATE-----
38
- date: 2024-10-07 00:00:00.000000000 Z
38
+ date: 2024-10-13 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: refinements
@@ -57,14 +57,14 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '2.6'
60
+ version: '2.7'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '2.6'
67
+ version: '2.7'
68
68
  description:
69
69
  email:
70
70
  - brooke@alchemists.io
metadata.gz.sig CHANGED
Binary file