Project

General

Profile

Bug #13142 ยป forwardable-constant-doc.patch

jeremyevans0 (Jeremy Evans), 06/24/2019 10:08 PM

View differences:

lib/forwardable.rb
end
# Takes a hash as its argument. The key is a symbol or an array of
# symbols. These symbols correspond to method names. The value is
# symbols. These symbols correspond to method names, instance variable
# names, or constant names (see def_delegator). The value is
# the accessor to which the methods will be delegated.
#
# :call-seq:
......
# Define +method+ as delegator instance method with an optional
# alias name +ali+. Method calls to +ali+ will be delegated to
# +accessor.method+.
# +accessor.method+. +accessor+ should be a method name, instance
# variable name, or constant name. Use the full path to the
# constant if providing the constant name.
#
# class MyQueue
# CONST = 1
# extend Forwardable
# attr_reader :queue
# def initialize
......
# end
#
# def_delegator :@queue, :push, :mypush
# def_delegator 'MyQueue::CONST', :to_i
# end
#
# q = MyQueue.new
# q.mypush 42
# q.queue #=> [42]
# q.push 23 #=> NoMethodError
# q.to_i #=> 1
#
def def_instance_delegator(accessor, method, ali = method)
gen = Forwardable._delegator_method(self, accessor, method, ali)
test/test_forwardable.rb
require 'forwardable'
class TestForwardable < Test::Unit::TestCase
INTEGER = 42
RECEIVER = BasicObject.new
RETURNED1 = BasicObject.new
RETURNED2 = BasicObject.new
......
end
end
def test_def_instance_delegator_constant
%i[def_delegator def_instance_delegator].each do |m|
cls = forwardable_class do
__send__ m, 'TestForwardable::INTEGER', :to_i
end
assert_equal 42, cls.new.to_i
end
end
def test_def_instance_delegator_using_args_method_as_receiver
%i[def_delegator def_instance_delegator].each do |m|
cls = forwardable_class(
    (1-1/1)