ruby3-backward-compatibility 0.3.0 → 1.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ced5ff7ed2f076e330be4b444f418d6ea102ba732bedf7540a6594c1bd4703b4
4
- data.tar.gz: 36314617ae1e2e10e04e6b7db71a93a70226bacceec9ef1591f4ede1925d7f26
3
+ metadata.gz: d863bc999c8d389ecc066c1e205d29599f8126296c177937bf61e054245765ee
4
+ data.tar.gz: bd87ac80c634fa8292c8a7f09bf7cbb6c2c1e84e7a8eae02fab1ade564c05b12
5
5
  SHA512:
6
- metadata.gz: 238d11616add2f0cb7253a52f781735244d5ad0009033710319382e9c10f76109b7d48a6b90bc089937d9f597e86d900479815eb93dda1f2ffa3f88f05599b90
7
- data.tar.gz: b9707b24ece18a5da64d85cff697102d4491ddf34a828395d50882f2a84f77a6c97dff28eabd4c44ce50b97624f8a0aa369b40b32ba417e3df4213f656424914
6
+ metadata.gz: 06b02c646e5f753bf7e7f6ad908fc7687c11d96eace311e4e962264b9087e2f7c9b7f5613d72893d384b8ebb3c66a7dec27297e7e383dea4f675b44d80f220fb
7
+ data.tar.gz: 84cb5c14e91f7c0272f7a56527aada55ea2785db50278584e3152265a43d435f68f4803f22693ffb750d2e6ca173df2fbd6a9771bd5181570eed87489b02092b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [1.0.0] - 2022-12-01
4
+
5
+ - Now 1.0, adhering to semantic versioning.
6
+ - Breaking: Rename `ruby3_keywords` to `callable_with_hash`.
7
+
3
8
  ## [0.3.0] - 2022-11-22
4
9
 
5
10
  - Security fix: `ruby3_backward_compatibility/compatibility/psych` no longer aliases YAML.load to YAML.safe_load.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby3-backward-compatibility (0.3.0)
4
+ ruby3-backward-compatibility (1.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -35,7 +35,7 @@ Note however that this will not patch anything that has not been required yet. Y
35
35
 
36
36
  ## List of backports
37
37
 
38
- ### ruby3 keyword arguments
38
+ ### Ruby 3 keyword arguments
39
39
 
40
40
  One breaking change in Ruby 3 is that methods defined using keyword arguments have to be called with keyword arguments, not with option hashes. For example
41
41
 
@@ -50,7 +50,7 @@ Ruby3Class.new.some_method(foo: 'bar') # works
50
50
  Ruby3Class.new.some_method({ foo: 'bar' }) # raises an ArgumentError
51
51
  ```
52
52
 
53
- To fix this for arbitrary methods, you can use the `ruby3_keywords` method included in this gem, like this:
53
+ To fix this for arbitrary methods, you can use the `callable_with_hash` method included in this gem, like this:
54
54
 
55
55
  ```
56
56
  require 'ruby3_backward_compatibility'
@@ -58,9 +58,9 @@ require 'ruby3_backward_compatibility'
58
58
  class Ruby3Class
59
59
  # reopen the class
60
60
 
61
- extend Ruby3BackwardCompatibility::Ruby3Keywords
61
+ extend Ruby3BackwardCompatibility::CallableWithHash
62
62
 
63
- ruby3_keywords :some_method
63
+ callable_with_hash :some_method
64
64
  end
65
65
 
66
66
  Ruby3Class.new.some_method(foo: 'bar') # still works
@@ -69,7 +69,7 @@ Ruby3Class.new.some_method({ foo: 'bar' }) # now works as well
69
69
 
70
70
  This will wrap the given method and convert a hash given as the last argument into keywords, similar to how it worked in Ruby 2.
71
71
 
72
- *Note:* In case the method is also defined in a prepended module, you need to put the `extend Ruby3BackwardCompatibility::Ruby3Keywords` above the `prepend`.
72
+ *Note:* In case the method is also defined in a prepended module, you need to put the `extend Ruby3BackwardCompatibility::CallableWithHash` above the `prepend`.
73
73
 
74
74
  ### ERB
75
75
 
@@ -1,5 +1,5 @@
1
1
  module Ruby3BackwardCompatibility
2
- module Ruby3Keywords
2
+ module CallableWithHash
3
3
  def self.find_owned_instance_method(mod, method_name, ignore_missing: false)
4
4
  method = begin
5
5
  mod.send(:instance_method, method_name)
@@ -11,7 +11,7 @@ module Ruby3BackwardCompatibility
11
11
  # we found the method in a prepended module
12
12
  super_method = method.super_method
13
13
  if super_method.nil?
14
- warn "Called `ruby3_keywords #{method_name.inspect}` on `#{mod}`, which appears not to be the correct owner. Did you mean to call it on `#{method.owner}`?"
14
+ warn "Called `callable_with_hash #{method_name.inspect}` on `#{mod}`, which appears not to be the correct owner. Did you mean to call it on `#{method.owner}`?"
15
15
  return method
16
16
  else
17
17
  method = super_method
@@ -23,19 +23,19 @@ module Ruby3BackwardCompatibility
23
23
  def self.extended(by)
24
24
  # prepend the anonymous module now, so the user has a chance to control where exactly we will end
25
25
  # up in the prepend chain...
26
- by.send(:_ruby3_keywords_module)
26
+ by.send(:_ruby3_callable_with_hash_module)
27
27
  end
28
28
 
29
- def ruby3_keywords(*method_names, ignore_missing: false)
29
+ def callable_with_hash(*method_names, ignore_missing: false)
30
30
  method_names.each do |method_name|
31
31
  method_is_private = private_instance_methods.include?(method_name)
32
32
  method_is_protected = protected_instance_methods.include?(method_name)
33
33
 
34
- method = Ruby3Keywords.find_owned_instance_method(self, method_name, ignore_missing: ignore_missing)
34
+ method = CallableWithHash.find_owned_instance_method(self, method_name, ignore_missing: ignore_missing)
35
35
  next unless method
36
36
 
37
37
  required_param_count = method.parameters.sum { |(kind, _name)| kind == :req ? 1 : 0 }
38
- _ruby3_keywords_module.define_method(method_name) do |*args, &block|
38
+ _ruby3_callable_with_hash_module.define_method(method_name) do |*args, &block|
39
39
  if args.last.respond_to?(:to_hash) && args.size > required_param_count
40
40
  keyword_args = args.pop
41
41
  super(*args, **keyword_args, &block)
@@ -45,17 +45,17 @@ module Ruby3BackwardCompatibility
45
45
  end
46
46
 
47
47
  if method_is_private
48
- _ruby3_keywords_module.send(:private, method_name)
48
+ _ruby3_callable_with_hash_module.send(:private, method_name)
49
49
  elsif method_is_protected
50
- _ruby3_keywords_module.send(:protected, method_name)
50
+ _ruby3_callable_with_hash_module.send(:protected, method_name)
51
51
  end
52
52
  end
53
53
  end
54
54
 
55
55
  private
56
56
 
57
- def _ruby3_keywords_module
58
- @_ruby3_keywords_module ||= begin
57
+ def _ruby3_callable_with_hash_module
58
+ @_ruby3_callable_with_hash_module ||= begin
59
59
  mod = Module.new
60
60
  prepend mod
61
61
  mod
@@ -1,7 +1,7 @@
1
1
  require 'i18n'
2
2
 
3
3
  module I18n::Base
4
- extend Ruby3BackwardCompatibility::Ruby3Keywords
4
+ extend Ruby3BackwardCompatibility::CallableWithHash
5
5
 
6
- ruby3_keywords :translate, :translate!, :localize, :t, :l, :transliterate, ignore_missing: true
6
+ callable_with_hash :translate, :translate!, :localize, :t, :l, :transliterate, ignore_missing: true
7
7
  end
@@ -1,5 +1,5 @@
1
1
  class String
2
- extend Ruby3BackwardCompatibility::Ruby3Keywords
2
+ extend Ruby3BackwardCompatibility::CallableWithHash
3
3
 
4
- ruby3_keywords :encode
4
+ callable_with_hash :encode
5
5
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ruby3BackwardCompatibility
4
- VERSION = '0.3.0'
4
+ VERSION = '1.0.0'
5
5
  end
@@ -6,5 +6,5 @@ module Ruby3BackwardCompatibility
6
6
  # TODO private?
7
7
  end
8
8
 
9
- require 'ruby3_backward_compatibility/ruby3_keywords'
9
+ require 'ruby3_backward_compatibility/callable_with_hash'
10
10
  require 'ruby3_backward_compatibility/version'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby3-backward-compatibility
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Kraze
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-22 00:00:00.000000000 Z
11
+ date: 2022-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -43,6 +43,7 @@ files:
43
43
  - bin/rspec
44
44
  - bin/setup
45
45
  - lib/ruby3_backward_compatibility.rb
46
+ - lib/ruby3_backward_compatibility/callable_with_hash.rb
46
47
  - lib/ruby3_backward_compatibility/compatibility/all.rb
47
48
  - lib/ruby3_backward_compatibility/compatibility/erb.rb
48
49
  - lib/ruby3_backward_compatibility/compatibility/i18n.rb
@@ -50,7 +51,6 @@ files:
50
51
  - lib/ruby3_backward_compatibility/compatibility/psych.rb
51
52
  - lib/ruby3_backward_compatibility/compatibility/string.rb
52
53
  - lib/ruby3_backward_compatibility/compatibility/uri.rb
53
- - lib/ruby3_backward_compatibility/ruby3_keywords.rb
54
54
  - lib/ruby3_backward_compatibility/version.rb
55
55
  - ruby3-backward-compatibility.gemspec
56
56
  homepage: https://github.com/makandra/ruby3-backward-compatibility