Class: RuboCop::AST::DefNode
- Inherits:
-
Node
- Object
- Node
- RuboCop::AST::DefNode
- Includes:
- MethodIdentifierPredicates, ParameterizedNode
- Defined in:
- lib/rubocop/ast/node/def_node.rb
Overview
A node extension for ‘def` nodes. This will be used in place of a plain node when the builder constructs the AST, making its methods available to all `def` nodes within RuboCop.
Instance Method Summary collapse
-
#arguments ⇒ Array<Node>
An array containing the arguments of the method definition.
-
#body ⇒ Node
The body of the method definition.
-
#method_name ⇒ Symbol
The name of the defined method as a symbol.
-
#node_parts ⇒ Array
Custom destructuring method.
-
#receiver ⇒ Node?
The receiver of the method definition, if any.
-
#void_context? ⇒ Boolean
Checks whether this node body is a void context.
Instance Method Details
#arguments ⇒ Array<Node>
An array containing the arguments of the method definition.
29 30 31 |
# File 'lib/rubocop/ast/node/def_node.rb', line 29 def arguments node_parts[1] end |
#body ⇒ Node
this can be either a ‘begin` node, if the method body contains multiple expressions, or any other node, if it contains a single expression.
The body of the method definition.
40 41 42 |
# File 'lib/rubocop/ast/node/def_node.rb', line 40 def body node_parts[0] end |
#method_name ⇒ Symbol
The name of the defined method as a symbol.
22 23 24 |
# File 'lib/rubocop/ast/node/def_node.rb', line 22 def method_name node_parts[2] end |
#node_parts ⇒ Array
Custom destructuring method. This can be used to normalize destructuring for different variations of the node.
In this case, the ‘def` node destructures into:
`method_name, arguments, body`
while the ‘defs` node destructures into:
`receiver, method_name, arguments, body`
so we reverse the destructured array to get the optional receiver at the end, where it can be discarded.
66 67 68 |
# File 'lib/rubocop/ast/node/def_node.rb', line 66 def node_parts to_a.reverse end |
#receiver ⇒ Node?
The receiver of the method definition, if any.
47 48 49 |
# File 'lib/rubocop/ast/node/def_node.rb', line 47 def receiver node_parts[3] end |
#void_context? ⇒ Boolean
Checks whether this node body is a void context.
15 16 17 |
# File 'lib/rubocop/ast/node/def_node.rb', line 15 def void_context? method?(:initialize) || assignment_method? end |