ruby3-backward-compatibility 0.2.2 → 0.2.3

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: f41ca19f2c12e6f2d275f62bf3079587ffcbd70f455f7b12761cd3ed91a8cf6e
4
- data.tar.gz: 9c3d76a042555bcadb4452486bcd4948a1702f3a7920fcb600cbe4976497aa46
3
+ metadata.gz: dea3d1f265f31f9581b5f558b2df2a2e8ba10dc76665f793e05b450fd6470daf
4
+ data.tar.gz: e601975de9ae5fdb6081c67546c8ad00f1381b8769c299802ad714b179eb62bb
5
5
  SHA512:
6
- metadata.gz: f76bec36e842805432da6e44f3eef1c5bc6ebc4671fd73c849f4af770b8e0a8ba0643e696c3cf1b473c3154ea5f3b20bc67320903c283206929cac03bbdca268
7
- data.tar.gz: 57880ff6f4dab6bdcf19979dc7fd4faf4500f6103fa0eb5f38dfc2f1d10aaadd53b65d4baf81028ae05c86da2a370b5128a6b8a5f96fef103ef808e92297d490
6
+ metadata.gz: c470ac7894bada53f9aea7518db643551e216126331ae20760532199c24f96fa088afb98955346d8424fa27cd20a18fefb0712a35075e63c1d97d51733dc913b
7
+ data.tar.gz: 4e5396c9b4281c4955e90a5ea318dde169937881899a865d6b66ce382753a669f9c9a8cef1bf840d11b5d6a736f5825948845334ef01b90feb77d6e6ef3e1949
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.2.3] - 2022-11-10
4
+
5
+ - Add `ignore_missing: true` option for `ruby3_keywords` to not crash on missing methods.
6
+ - Fix `ruby3_backward_compatibility/compatibility/i18n` to not crash when used with older I18n versions.
7
+
3
8
  ## [0.2.2] - 2022-11-10
4
9
 
5
10
  - Fix `ruby3_keywords` to pass blocks.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby3-backward-compatibility (0.2.2)
4
+ ruby3-backward-compatibility (0.2.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -3,5 +3,5 @@ require 'i18n'
3
3
  module I18n::Base
4
4
  extend Ruby3BackwardCompatibility::Ruby3Keywords
5
5
 
6
- ruby3_keywords :translate, :translate!, :localize, :t, :l, :transliterate
6
+ ruby3_keywords :translate, :translate!, :localize, :t, :l, :transliterate, ignore_missing: true
7
7
  end
@@ -1,7 +1,12 @@
1
1
  module Ruby3BackwardCompatibility
2
2
  module Ruby3Keywords
3
- def self.find_owned_instance_method(mod, method_name)
4
- method = mod.send(:instance_method, method_name)
3
+ def self.find_owned_instance_method(mod, method_name, ignore_missing: false)
4
+ method = begin
5
+ mod.send(:instance_method, method_name)
6
+ rescue NameError
7
+ return if ignore_missing
8
+ raise NameError, "method '#{method_name}' is not defined"
9
+ end
5
10
  while method.owner > mod
6
11
  # we found the method in a prepended module
7
12
  super_method = method.super_method
@@ -21,12 +26,15 @@ module Ruby3BackwardCompatibility
21
26
  by.send(:_ruby3_keywords_module)
22
27
  end
23
28
 
24
- def ruby3_keywords(*method_names)
29
+ def ruby3_keywords(*method_names, ignore_missing: false)
25
30
  method_names.each do |method_name|
26
31
  method_is_private = private_instance_methods.include?(method_name)
27
32
  method_is_protected = protected_instance_methods.include?(method_name)
28
33
 
29
- required_param_count = Ruby3Keywords.find_owned_instance_method(self, method_name).parameters.sum { |(kind, _name)| kind == :req ? 1 : 0 }
34
+ method = Ruby3Keywords.find_owned_instance_method(self, method_name, ignore_missing: ignore_missing)
35
+ next unless method
36
+
37
+ required_param_count = method.parameters.sum { |(kind, _name)| kind == :req ? 1 : 0 }
30
38
  _ruby3_keywords_module.define_method(method_name) do |*args, &block|
31
39
  if args.last.respond_to?(:to_hash) && args.size > required_param_count
32
40
  keyword_args = args.pop
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ruby3BackwardCompatibility
4
- VERSION = '0.2.2'
4
+ VERSION = '0.2.3'
5
5
  end
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.2.2
4
+ version: 0.2.3
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-10 00:00:00.000000000 Z
11
+ date: 2022-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug