forwardable 1.3.3 → 1.4.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: be1ea87f9c0fe48a60c350cfdb0c9bf3963fa4659d44f4fc5022001172be70c0
4
- data.tar.gz: cbc3f7ec86c55d37f198a8202e362ca965674fdc2bf9da85b35a972b1897efa9
3
+ metadata.gz: 6f67b8d19bf47af7db2c6fa95434a20fac51dbff63ba5d6366de98f7c4dd8170
4
+ data.tar.gz: b946e9f5faaf788fe9cc39bc5782846b77e12e1e82e51fa4a975d91c893f651a
5
5
  SHA512:
6
- metadata.gz: e4dcc43faa62d31a7f89f737f2addd0d53725d9bdab946a9c5a9beeae92f23e2f972053001a42e561deb22945611bde807fa4844bb666f6dea5d46981af27121
7
- data.tar.gz: 90709a6c3db371492dfcf3a41df15c973cd3016d3a7e2d53b2ea160723a1a8dba8e34cba2900af87ee531c4ff1848b15f9f8b181b7753a0929055cab0694866e
6
+ metadata.gz: 8901d57fed19e8955b8557b1a0a0f50cb97c6edb430aa3f3c5704953d683b2ef6f339648167c6982def47cf8aa8e89431998a0fea4125b1a90b7a3b7f3a8b296
7
+ data.tar.gz: d01d6e8d55e884802f54240d98d91938cea740540f724821bcccd80e0e08c5dbb5b047ec5a87e547256093ab2f18eb0b66d7b1ae974ec3fa9cac951c1d66b150
data/forwardable.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.licenses = ["Ruby", "BSD-2-Clause"]
20
20
 
21
21
  spec.required_ruby_version = '>= 2.4.0'
22
- spec.files = ["forwardable.gemspec", "lib/forwardable.rb", "lib/forwardable/impl.rb"]
22
+ spec.files = ["forwardable.gemspec", "lib/forwardable.rb"]
23
23
  spec.bindir = "exe"
24
24
  spec.executables = []
25
25
  spec.require_paths = ["lib"]
data/lib/forwardable.rb CHANGED
@@ -109,11 +109,11 @@
109
109
  # +delegate.rb+.
110
110
  #
111
111
  module Forwardable
112
- require 'forwardable/impl'
113
-
114
112
  # Version of +forwardable.rb+
115
- VERSION = "1.3.3"
113
+ VERSION = "1.4.0"
116
114
  VERSION.freeze
115
+
116
+ # Version for backward compatibility
117
117
  FORWARDABLE_VERSION = VERSION
118
118
  FORWARDABLE_VERSION.freeze
119
119
 
@@ -190,9 +190,7 @@ module Forwardable
190
190
 
191
191
  # If it's not a class or module, it's an instance
192
192
  mod = Module === self ? self : singleton_class
193
- ret = mod.module_eval(&gen)
194
- mod.__send__(:ruby2_keywords, ali) if RUBY_VERSION >= '2.7'
195
- ret
193
+ mod.module_eval(&gen)
196
194
  end
197
195
 
198
196
  alias delegate instance_delegate
@@ -206,36 +204,33 @@ module Forwardable
206
204
  if Module === obj ?
207
205
  obj.method_defined?(accessor) || obj.private_method_defined?(accessor) :
208
206
  obj.respond_to?(accessor, true)
209
- accessor = "#{accessor}()"
207
+ accessor = "(#{accessor}())"
210
208
  end
211
209
 
212
- method_call = ".__send__(:#{method}, *args, &block)"
213
- if _valid_method?(method)
210
+ args = RUBY_VERSION >= '2.7' ? '...' : '*args, &block'
211
+ method_call = ".__send__(:#{method}, #{args})"
212
+ if method.match?(/\A[_a-zA-Z]\w*[?!]?\z/)
214
213
  loc, = caller_locations(2,1)
215
214
  pre = "_ ="
216
215
  mesg = "#{Module === obj ? obj : obj.class}\##{ali} at #{loc.path}:#{loc.lineno} forwarding to private method "
217
- method_call = "#{<<-"begin;"}\n#{<<-"end;".chomp}"
218
- begin;
219
- unless defined? _.#{method}
220
- ::Kernel.warn #{mesg.dump}"\#{_.class}"'##{method}', uplevel: 1
221
- _#{method_call}
222
- else
223
- _.#{method}(*args, &block)
224
- end
225
- end;
216
+ method_call = <<~RUBY.chomp
217
+ if defined?(_.#{method})
218
+ _.#{method}(#{args})
219
+ else
220
+ ::Kernel.warn #{mesg.dump}"\#{_.class}"'##{method}', uplevel: 1
221
+ _#{method_call}
222
+ end
223
+ RUBY
226
224
  end
227
225
 
228
- _compile_method("#{<<-"begin;"}\n#{<<-"end;"}", __FILE__, __LINE__+1)
229
- begin;
226
+ eval(<<~RUBY, nil, __FILE__, __LINE__ + 1)
230
227
  proc do
231
- def #{ali}(*args, &block)
232
- #{pre}
233
- begin
234
- #{accessor}
235
- end#{method_call}
228
+ def #{ali}(#{args})
229
+ #{pre}#{accessor}
230
+ #{method_call}
236
231
  end
237
232
  end
238
- end;
233
+ RUBY
239
234
  end
240
235
  end
241
236
 
@@ -310,9 +305,7 @@ module SingleForwardable
310
305
  def def_single_delegator(accessor, method, ali = method)
311
306
  gen = Forwardable._delegator_method(self, accessor, method, ali)
312
307
 
313
- ret = instance_eval(&gen)
314
- singleton_class.__send__(:ruby2_keywords, ali) if RUBY_VERSION >= '2.7'
315
- ret
308
+ instance_eval(&gen)
316
309
  end
317
310
 
318
311
  alias delegate single_delegate
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forwardable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.3
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keiju ISHITSUKA
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2022-12-05 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies: []
13
12
  description: Provides delegation of specified methods to a designated object.
14
13
  email:
@@ -19,13 +18,11 @@ extra_rdoc_files: []
19
18
  files:
20
19
  - forwardable.gemspec
21
20
  - lib/forwardable.rb
22
- - lib/forwardable/impl.rb
23
21
  homepage: https://github.com/ruby/forwardable
24
22
  licenses:
25
23
  - Ruby
26
24
  - BSD-2-Clause
27
25
  metadata: {}
28
- post_install_message:
29
26
  rdoc_options: []
30
27
  require_paths:
31
28
  - lib
@@ -40,8 +37,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
40
37
  - !ruby/object:Gem::Version
41
38
  version: '0'
42
39
  requirements: []
43
- rubygems_version: 3.4.0.dev
44
- signing_key:
40
+ rubygems_version: 3.6.9
45
41
  specification_version: 4
46
42
  summary: Provides delegation of specified methods to a designated object.
47
43
  test_files: []
@@ -1,17 +0,0 @@
1
- module Forwardable
2
- # :stopdoc:
3
-
4
- def self._valid_method?(method)
5
- catch {|tag|
6
- eval("BEGIN{throw tag}; ().#{method}", binding, __FILE__, __LINE__)
7
- }
8
- rescue SyntaxError
9
- false
10
- else
11
- true
12
- end
13
-
14
- def self._compile_method(src, file, line)
15
- eval(src, nil, file, line)
16
- end
17
- end