Class: Refinement
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::Module
|
|
Instance Chain:
self,
::Module
|
|
Inherits: | Module |
Defined in: | class.c, class.c, eval.c, object.c |
Overview
Refinement
is a class of the self
(current context) inside refine
statement. It allows to import methods from other modules, see #import_methods.
Class Method Summary
::Module
- Inherited
.constants | In the first form, returns an array of the names of all constants accessible from the point of call. |
.nesting | Returns the list of |
.new | Creates a new anonymous module. |
.used_modules | Returns an array of all modules used in the current scope. |
.used_refinements | Returns an array of all modules used in the current scope. |
Instance Attribute Summary
::Module
- Inherited
#singleton_class? | Returns |
Instance Method Summary
-
#target ⇒ class_or_module
Return the class or module refined by the receiver.
-
#import_methods(module, ...) ⇒ self
private
Imports methods from modules.
::Module
- Inherited
#< | Returns true if mod is a subclass of other. |
#<= | Returns true if mod is a subclass of other or is the same as other. |
#<=> | Comparison—Returns -1, 0, +1 or nil depending on whether |
#== | Alias for Object#eql?. |
#=== | Case Equality—Returns |
#> | Returns true if mod is an ancestor of other. |
#>= | Returns true if mod is an ancestor of other, or the two modules are the same. |
#alias_method | Makes new_name a new copy of the method old_name. |
#ancestors | Returns a list of modules included/prepended in mod (including mod itself). |
#attr | The first form is equivalent to |
#attr_accessor | Defines a named attribute for this module, where the name is symbol. |
#attr_reader | Creates instance variables and corresponding methods that return the value of each instance variable. |
#attr_writer | Creates an accessor method to allow assignment to the attribute symbol |
#autoload | Registers filename to be loaded (using Kernel.require) the first time that const (which may be a |
#autoload? | Returns filename to be loaded if name is registered as |
#class_eval | Evaluates the string or block in the context of mod, except that when a block is given, constant/class variable lookup is not affected. |
#class_exec | Evaluates the given block in the context of the class/module. |
#class_variable_defined? | Returns |
#class_variable_get | Returns the value of the given class variable (or throws a |
#class_variable_set | Sets the class variable named by symbol to the given object. |
#class_variables | Returns an array of the names of class variables in mod. |
#const_defined? | Says whether mod or its ancestors have a constant with the given name: |
#const_get | Checks for a constant with the given name in mod. |
#const_missing | Invoked when a reference is made to an undefined constant in mod. |
#const_set | Sets the named constant to the given object, returning that object. |
#const_source_location | Returns the |
#constants | Returns an array of the names of the constants accessible in mod. |
#define_method | Defines an instance method in the receiver. |
#deprecate_constant | Makes a list of existing constants deprecated. |
#freeze | Prevents further modifications to mod. |
#include | Invokes Module#append_features on each parameter in reverse order. |
#include? | Returns |
#included_modules | Returns the list of modules included or prepended in mod or one of mod’s ancestors. |
#inspect | Alias for Module#to_s. |
#instance_method | Returns an |
#instance_methods | Returns an array containing the names of the public and protected instance methods in the receiver. |
#method_defined? | Returns |
#module_eval | Alias for Module#class_eval. |
#module_exec | Alias for Module#class_exec. |
#name | Returns the name of the module mod. |
#prepend | Invokes Module#prepend_features on each parameter in reverse order. |
#private_class_method | Makes existing class methods private. |
#private_constant | Makes a list of existing constants private. |
#private_instance_methods | Returns a list of the private instance methods defined in mod. |
#private_method_defined? | Returns |
#protected_instance_methods | Returns a list of the protected instance methods defined in mod. |
#protected_method_defined? | Returns |
#public_class_method | Makes a list of existing class methods public. |
#public_constant | Makes a list of existing constants public. |
#public_instance_method | Similar to instance_method, searches public method only. |
#public_instance_methods | Returns a list of the public instance methods defined in mod. |
#public_method_defined? | Returns |
#refinements | Returns an array of |
#remove_class_variable | Removes the named class variable from the receiver, returning that variable’s value. |
#remove_method | Removes the method identified by symbol from the current class. |
#set_temporary_name | Sets the temporary name of the module. |
#to_s | Returns a string representing this module or class. |
#undef_method | Prevents the current class from responding to calls to the named method. |
#undefined_instance_methods | Returns a list of the undefined instance methods defined in mod. |
#append_features | When this module is included in another, |
#const_added | Invoked as a callback whenever a constant is assigned on the receiver. |
#extend_object | Extends the specified object by adding this module’s constants and methods (which are added as singleton methods). |
#extended | The equivalent of |
#included | Callback invoked whenever the receiver is included in another module or class. |
#method_added | Invoked as a callback whenever an instance method is added to the receiver. |
#method_removed | Invoked as a callback whenever an instance method is removed from the receiver. |
#method_undefined | Invoked as a callback whenever an instance method is undefined from the receiver. |
#module_function | Creates module functions for the named methods. |
#prepend_features | When this module is prepended in another, |
#prepended | The equivalent of |
#private | With no arguments, sets the default visibility for subsequently defined methods to private. |
#protected | With no arguments, sets the default visibility for subsequently defined methods to protected. |
#public | With no arguments, sets the default visibility for subsequently defined methods to public. |
#refine | Refine mod in the receiver. |
#remove_const | Removes the definition of the given constant, returning that constant’s previous value. |
#ruby2_keywords | For the given method names, marks the method as passing keywords through a normal argument splat. |
#using | Import class refinements from module into the current class or module definition. |
#initialize_clone, #initialize_copy, | |
#with_yjit | Internal helper for built-in initializations to define methods only when YJIT is enabled. |
Constructor Details
This class inherits a constructor from Module
Instance Method Details
#import_methods(module, ...) ⇒ self
(private)
Imports methods from modules. Unlike Module#include, 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
# File 'class.c', line 873
static VALUE refinement_import_methods(int argc, VALUE *argv, VALUE refinement) { }
#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
# File 'eval.c', line 1418
VALUE rb_refinement_module_get_refined_class(VALUE module) { ID id_refined_class; CONST_ID(id_refined_class, "__refined_class__"); return rb_attr_get(module, id_refined_class); }