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 +4 -4
- data/forwardable.gemspec +1 -1
- data/lib/forwardable.rb +22 -29
- metadata +3 -7
- data/lib/forwardable/impl.rb +0 -17
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6f67b8d19bf47af7db2c6fa95434a20fac51dbff63ba5d6366de98f7c4dd8170
|
|
4
|
+
data.tar.gz: b946e9f5faaf788fe9cc39bc5782846b77e12e1e82e51fa4a975d91c893f651a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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"
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
213
|
-
|
|
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 =
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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
|
-
|
|
229
|
-
begin;
|
|
226
|
+
eval(<<~RUBY, nil, __FILE__, __LINE__ + 1)
|
|
230
227
|
proc do
|
|
231
|
-
def #{ali}(
|
|
232
|
-
#{pre}
|
|
233
|
-
|
|
234
|
-
#{accessor}
|
|
235
|
-
end#{method_call}
|
|
228
|
+
def #{ali}(#{args})
|
|
229
|
+
#{pre}#{accessor}
|
|
230
|
+
#{method_call}
|
|
236
231
|
end
|
|
237
232
|
end
|
|
238
|
-
|
|
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
|
-
|
|
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.
|
|
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:
|
|
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.
|
|
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: []
|
data/lib/forwardable/impl.rb
DELETED
|
@@ -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
|