Sha256: 35ada8fa038aa893a3f2d93a6671a148d9ad4e73f17ad5a7398e043f97b20684

Contents?: true

Size: 1.42 KB

Versions: 12

Compression:

Stored size: 1.42 KB

Contents

# <!-- rdoc-file=class.c -->
# Refinement is a class of the `self` (current context) inside `refine`
# statement. It allows to import methods from other modules, see
# #import_methods.
#
class Refinement < Module
  # <!--
  #   rdoc-file=eval.c
  #   - target    -> class_or_module
  # -->
  # Return the class or module refined by the receiver.
  #
  #     module M
  #       refine String do
  #       end
  #     end
  #
  #     M.refinements[0].target # => String
  #
  def target: () -> Module?

  private

  # <!--
  #   rdoc-file=class.c
  #   - import_methods(module, ...)    -> self
  # -->
  # Imports methods from modules. Unlike Module#include, Refinement#import_methods
  # copies methods and adds them into the refinement, so the refinement is
  # activated in the imported methods.
  #
  # Note that due to method copying, only methods defined in Ruby code can be
  # imported.
  #
  #     module StrUtils
  #       def indent(level)
  #         ' ' * level + self
  #       end
  #     end
  #
  #     module M
  #       refine String do
  #         import_methods StrUtils
  #       end
  #     end
  #
  #     using M
  #     "foo".indent(3)
  #     #=> "   foo"
  #
  #     module M
  #       refine String do
  #         import_methods Enumerable
  #         # Can't import method which is not defined with Ruby code: Enumerable#drop
  #       end
  #     end
  #
  def import_methods: (Module module, *Module extra_modules) -> self
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
rbs-relaxed-3.9.0.1 core/refinement.rbs
rbs-3.8.1 core/refinement.rbs
rbs-3.8.0 core/refinement.rbs
rbs-3.8.0.pre.1 core/refinement.rbs
rbs-3.7.0.pre.1 core/refinement.rbs
rbs-3.7.0.dev.1 core/refinement.rbs
rbs-3.6.1 core/refinement.rbs
rbs-3.6.0 core/refinement.rbs
rbs-3.6.0.pre.3 core/refinement.rbs
rbs-3.6.0.pre.2 core/refinement.rbs
rbs-3.6.0.pre.1 core/refinement.rbs
rbs-3.6.0.dev.1 core/refinement.rbs