stdlib/forwardable/0/forwardable.rbs in rbs-2.0.0 vs stdlib/forwardable/0/forwardable.rbs in rbs-2.1.0
- old
+ new
@@ -1,5 +1,6 @@
+# <!-- rdoc-file=lib/forwardable.rb -->
# The Forwardable module provides delegation of specified methods to a
# designated object, using the methods #def_delegator and #def_delegators.
#
# For example, say you have a class RecordCollection which contains an array
# `@records`. You could provide the lookup method #record_number(), which
@@ -59,11 +60,11 @@
#
# # support some general Array methods that fit Queues well
# def_delegators :@q, :clear, :first, :push, :shift, :size
# end
#
-# q = Queue.new
+# q = Thread::Queue.new
# q.enq 1, 2, 3, 4, 5
# q.push 6
#
# q.shift # => 1
# while q.size > 0
@@ -92,22 +93,40 @@
# `forwardable.rb` provides single-method delegation via the def_delegator and
# def_delegators methods. For full-class delegation via DelegateClass, see
# `delegate.rb`.
#
module Forwardable
+ # <!-- rdoc-file=lib/forwardable.rb -->
+ # Version of `forwardable.rb`
+ #
VERSION: String
FORWARDABLE_VERSION: String
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - delegate method => accessor
+ # - delegate [method, method, ...] => accessor
+ # -->
# Takes a hash as its argument. The key is a symbol or an array of 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.
+ #
def instance_delegate: (Hash[Symbol | Array[Symbol], Symbol] hash) -> void
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - delegate(hash)
+ # -->
+ #
alias delegate instance_delegate
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - def_instance_delegators(accessor, *methods)
+ # -->
# Shortcut for defining multiple delegator methods, but with no provision for
# using a different name. The following two code samples have the same effect:
#
# def_delegators :@records, :size, :<<, :map
#
@@ -115,12 +134,21 @@
# def_delegator :@records, :<<
# def_delegator :@records, :map
#
def def_instance_delegators: (Symbol | String accessor, *Symbol methods) -> void
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - def_delegators(accessor, *methods)
+ # -->
+ #
alias def_delegators def_instance_delegators
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - def_instance_delegator(accessor, method, ali = method)
+ # -->
# Define `method` as delegator instance method with an optional alias name
# `ali`. Method calls to `ali` will be delegated to `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. Returns the
# name of the method defined.
@@ -143,13 +171,19 @@
# q.push 23 #=> NoMethodError
# q.to_i #=> 1
#
def def_instance_delegator: (Symbol | String accessor, Symbol method, ?Symbol ali) -> void
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - def_delegator(accessor, method, ali = method)
+ # -->
+ #
alias def_delegator def_instance_delegator
end
+# <!-- rdoc-file=lib/forwardable.rb -->
# SingleForwardable can be used to setup delegation at the object level as well.
#
# printer = String.new
# printer.extend SingleForwardable # prepare object for delegation
# printer.def_delegator "STDOUT", "puts" # add delegation for STDOUT.puts()
@@ -173,17 +207,32 @@
#
# If you want to use both Forwardable and SingleForwardable, you can use methods
# def_instance_delegator and def_single_delegator, etc.
#
module SingleForwardable
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - delegate method => accessor
+ # - delegate [method, method, ...] => accessor
+ # -->
# 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 the accessor to which
# the methods will be delegated.
+ #
def single_delegate: (Hash[Symbol | Array[Symbol], Symbol] hash) -> void
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - delegate(hash)
+ # -->
+ #
alias delegate single_delegate
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - def_single_delegators(accessor, *methods)
+ # -->
# Shortcut for defining multiple delegator methods, but with no provision for
# using a different name. The following two code samples have the same effect:
#
# def_delegators :@records, :size, :<<, :map
#
@@ -191,14 +240,29 @@
# def_delegator :@records, :<<
# def_delegator :@records, :map
#
def def_single_delegators: (Symbol | String accessor, *Symbol methods) -> void
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - def_delegators(accessor, *methods)
+ # -->
+ #
alias def_delegators def_single_delegators
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - def_single_delegator(accessor, method, new_name=method)
+ # -->
# Defines a method *method* which delegates to *accessor* (i.e. it calls the
# method of the same name in *accessor*). If *new_name* is provided, it is used
# as the name for the delegate method. Returns the name of the method defined.
+ #
def def_single_delegator: (Symbol | String accessor, Symbol method, ?Symbol ali) -> void
+ # <!--
+ # rdoc-file=lib/forwardable.rb
+ # - def_delegator(accessor, method, ali = method)
+ # -->
+ #
alias def_delegator def_single_delegator
end