forwardable 1.3.2 → 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 +2 -2
- data/lib/forwardable.rb +25 -30
- metadata +3 -7
- data/lib/forwardable/impl.rb +0 -16
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,8 +19,8 @@ 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
|
-
spec.executables =
|
|
24
|
+
spec.executables = []
|
|
25
25
|
spec.require_paths = ["lib"]
|
|
26
26
|
end
|
data/lib/forwardable.rb
CHANGED
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
# def_delegators :@q, :clear, :first, :push, :shift, :size
|
|
77
77
|
# end
|
|
78
78
|
#
|
|
79
|
-
# q = Queue.new
|
|
79
|
+
# q = Thread::Queue.new
|
|
80
80
|
# q.enq 1, 2, 3, 4, 5
|
|
81
81
|
# q.push 6
|
|
82
82
|
#
|
|
@@ -109,11 +109,13 @@
|
|
|
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"
|
|
114
|
+
VERSION.freeze
|
|
115
|
+
|
|
116
|
+
# Version for backward compatibility
|
|
116
117
|
FORWARDABLE_VERSION = VERSION
|
|
118
|
+
FORWARDABLE_VERSION.freeze
|
|
117
119
|
|
|
118
120
|
@debug = nil
|
|
119
121
|
class << self
|
|
@@ -188,9 +190,7 @@ module Forwardable
|
|
|
188
190
|
|
|
189
191
|
# If it's not a class or module, it's an instance
|
|
190
192
|
mod = Module === self ? self : singleton_class
|
|
191
|
-
|
|
192
|
-
mod.__send__(:ruby2_keywords, ali) if RUBY_VERSION >= '2.7'
|
|
193
|
-
ret
|
|
193
|
+
mod.module_eval(&gen)
|
|
194
194
|
end
|
|
195
195
|
|
|
196
196
|
alias delegate instance_delegate
|
|
@@ -204,36 +204,33 @@ module Forwardable
|
|
|
204
204
|
if Module === obj ?
|
|
205
205
|
obj.method_defined?(accessor) || obj.private_method_defined?(accessor) :
|
|
206
206
|
obj.respond_to?(accessor, true)
|
|
207
|
-
accessor = "#{accessor}()"
|
|
207
|
+
accessor = "(#{accessor}())"
|
|
208
208
|
end
|
|
209
209
|
|
|
210
|
-
|
|
211
|
-
|
|
210
|
+
args = RUBY_VERSION >= '2.7' ? '...' : '*args, &block'
|
|
211
|
+
method_call = ".__send__(:#{method}, #{args})"
|
|
212
|
+
if method.match?(/\A[_a-zA-Z]\w*[?!]?\z/)
|
|
212
213
|
loc, = caller_locations(2,1)
|
|
213
214
|
pre = "_ ="
|
|
214
215
|
mesg = "#{Module === obj ? obj : obj.class}\##{ali} at #{loc.path}:#{loc.lineno} forwarding to private method "
|
|
215
|
-
method_call =
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
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
|
|
224
224
|
end
|
|
225
225
|
|
|
226
|
-
|
|
227
|
-
begin;
|
|
226
|
+
eval(<<~RUBY, nil, __FILE__, __LINE__ + 1)
|
|
228
227
|
proc do
|
|
229
|
-
def #{ali}(
|
|
230
|
-
#{pre}
|
|
231
|
-
|
|
232
|
-
#{accessor}
|
|
233
|
-
end#{method_call}
|
|
228
|
+
def #{ali}(#{args})
|
|
229
|
+
#{pre}#{accessor}
|
|
230
|
+
#{method_call}
|
|
234
231
|
end
|
|
235
232
|
end
|
|
236
|
-
|
|
233
|
+
RUBY
|
|
237
234
|
end
|
|
238
235
|
end
|
|
239
236
|
|
|
@@ -308,9 +305,7 @@ module SingleForwardable
|
|
|
308
305
|
def def_single_delegator(accessor, method, ali = method)
|
|
309
306
|
gen = Forwardable._delegator_method(self, accessor, method, ali)
|
|
310
307
|
|
|
311
|
-
|
|
312
|
-
singleton_class.__send__(:ruby2_keywords, ali) if RUBY_VERSION >= '2.7'
|
|
313
|
-
ret
|
|
308
|
+
instance_eval(&gen)
|
|
314
309
|
end
|
|
315
310
|
|
|
316
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,16 +0,0 @@
|
|
|
1
|
-
# :stopdoc:
|
|
2
|
-
module Forwardable
|
|
3
|
-
def self._valid_method?(method)
|
|
4
|
-
catch {|tag|
|
|
5
|
-
eval("BEGIN{throw tag}; ().#{method}", binding, __FILE__, __LINE__)
|
|
6
|
-
}
|
|
7
|
-
rescue SyntaxError
|
|
8
|
-
false
|
|
9
|
-
else
|
|
10
|
-
true
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def self._compile_method(src, file, line)
|
|
14
|
-
eval(src, nil, file, line)
|
|
15
|
-
end
|
|
16
|
-
end
|