Class: Prism::DefNode
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
PrismNode
|
|
|
Instance Chain:
self,
PrismNode
|
|
| Inherits: |
PrismNode
|
| Defined in: | lib/prism/node.rb, ext/prism/api_node.c |
Overview
Represents a method definition.
def method
end
^^^^^^^^^^
Class Method Summary
-
.new(source, node_id, location, flags, name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc) ⇒ DefNode
constructor
Initialize a new
DefNodenode. -
.type
Return a symbol representation of this node type.
Instance Attribute Summary
Instance Method Summary
-
#===(other)
Implements case-equality for the node.
-
#accept(visitor)
def accept: (Visitor visitor) -> void.
-
#child_nodes
(also: #deconstruct)
def child_nodes: () -> Array[nil | Node].
-
#comment_targets
def comment_targets: () -> Array[Node | Location].
-
#compact_child_nodes
def compact_child_nodes: () -> Array.
-
#copy(node_id: self.node_id, location: self.location, flags: self.flags, name: self.name, name_loc: self.name_loc, receiver: self.receiver, parameters: self.parameters, body: self.body, locals: self.locals, def_keyword_loc: self.def_keyword_loc, operator_loc: self.operator_loc, lparen_loc: self.lparen_loc, rparen_loc: self.rparen_loc, equal_loc: self.equal_loc, end_keyword_loc: self.end_keyword_loc)
def copy: (?node_id: Integer, ?location:
Location, ?flags: Integer, ?name: Symbol, ?name_loc:Location, ?receiver:Prism.node?, ?parameters: ParametersNode?, ?body:Prism.node?, ?locals: Array, ?def_keyword_loc:Location, ?operator_loc: Location?, ?lparen_loc: Location?, ?rparen_loc: Location?, ?equal_loc: Location?, ?end_keyword_loc: Location?) ->DefNode. -
#deconstruct
Alias for #child_nodes.
-
#deconstruct_keys(keys)
def deconstruct_keys: (Array keys) -> { node_id: Integer, location:
Location, name: Symbol, name_loc:Location, receiver:Prism.node?, parameters: ParametersNode?, body:Prism.node?, locals: Array, def_keyword_loc:Location, operator_loc: Location?, lparen_loc: Location?, rparen_loc: Location?, equal_loc: Location?, end_keyword_loc: Location? } -
#def_keyword
def def_keyword: () -> String.
-
#def_keyword_loc
attr_reader def_keyword_loc:
Location. -
#end_keyword
def end_keyword: () -> String?
-
#end_keyword_loc
attr_reader end_keyword_loc: Location?
-
#equal
def equal: () -> String?
-
#equal_loc
attr_reader equal_loc: Location?
-
#inspect
def inspect -> String.
-
#lparen
def lparen: () -> String?
-
#lparen_loc
attr_reader lparen_loc: Location?
-
#name_loc
attr_reader name_loc:
Location. -
#operator
def operator: () -> String?
-
#operator_loc
attr_reader operator_loc: Location?
-
#rparen
def rparen: () -> String?
-
#rparen_loc
attr_reader rparen_loc: Location?
-
#type
Return a symbol representation of this node type.
Constructor Details
.new(source, node_id, location, flags, name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc) ⇒ DefNode
Initialize a new DefNode node.
# File 'lib/prism/node.rb', line 4999
def initialize(source, node_id, location, flags, name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc) @source = source @node_id = node_id @location = location @flags = flags @name = name @name_loc = name_loc @receiver = receiver @parameters = parameters @body = body @locals = locals @def_keyword_loc = def_keyword_loc @operator_loc = operator_loc @lparen_loc = lparen_loc @rparen_loc = rparen_loc @equal_loc = equal_loc @end_keyword_loc = end_keyword_loc end
Class Method Details
.type
Return a symbol representation of this node type. See Node::type.
# File 'lib/prism/node.rb', line 5185
def self.type :def_node end
Instance Attribute Details
#body (readonly)
attr_reader body: Prism.node?
# File 'lib/prism/node.rb', line 5069
attr_reader :body
#locals (readonly)
attr_reader locals: Array
# File 'lib/prism/node.rb', line 5071
attr_reader :locals
#name (readonly)
attr_reader name: Symbol
# File 'lib/prism/node.rb', line 5056
attr_reader :name
#parameters (readonly)
attr_reader parameters: ParametersNode?
# File 'lib/prism/node.rb', line 5067
attr_reader :parameters
#receiver (readonly)
attr_reader receiver: Prism.node?
# File 'lib/prism/node.rb', line 5065
attr_reader :receiver
Instance Method Details
#===(other)
Implements case-equality for the node. This is effectively == but without comparing the value of locations. Locations are checked only for presence.
# File 'lib/prism/node.rb', line 5191
def ===(other) other.is_a?(DefNode) && (name === other.name) && (name_loc.nil? == other.name_loc.nil?) && (receiver === other.receiver) && (parameters === other.parameters) && (body === other.body) && (locals.length == other.locals.length) && locals.zip(other.locals).all? { |left, right| left === right } && (def_keyword_loc.nil? == other.def_keyword_loc.nil?) && (operator_loc.nil? == other.operator_loc.nil?) && (lparen_loc.nil? == other.lparen_loc.nil?) && (rparen_loc.nil? == other.rparen_loc.nil?) && (equal_loc.nil? == other.equal_loc.nil?) && (end_keyword_loc.nil? == other.end_keyword_loc.nil?) end
#accept(visitor)
def accept: (Visitor visitor) -> void
# File 'lib/prism/node.rb', line 5019
def accept(visitor) visitor.visit_def_node(self) end
#child_nodes Also known as: #deconstruct
def child_nodes: () -> Array[nil | Node]
# File 'lib/prism/node.rb', line 5024
def child_nodes [receiver, parameters, body] end
#comment_targets
def comment_targets: () -> Array[Node | Location]
# File 'lib/prism/node.rb', line 5038
def comment_targets [name_loc, *receiver, *parameters, *body, def_keyword_loc, *operator_loc, *lparen_loc, *rparen_loc, *equal_loc, *end_keyword_loc] #: Array[Prism::node | Location] end
#compact_child_nodes
def compact_child_nodes: () -> Array
# File 'lib/prism/node.rb', line 5029
def compact_child_nodes compact = [] #: Array[Prism::node] compact << receiver if receiver compact << parameters if parameters compact << body if body compact end
#copy(node_id: self.node_id, location: self.location, flags: self.flags, name: self.name, name_loc: self.name_loc, receiver: self.receiver, parameters: self.parameters, body: self.body, locals: self.locals, def_keyword_loc: self.def_keyword_loc, operator_loc: self.operator_loc, lparen_loc: self.lparen_loc, rparen_loc: self.rparen_loc, equal_loc: self.equal_loc, end_keyword_loc: self.end_keyword_loc)
def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?receiver: Prism.node?, ?parameters: ParametersNode?, ?body: Prism.node?, ?locals: Array, ?def_keyword_loc: Location, ?operator_loc: Location?, ?lparen_loc: Location?, ?rparen_loc: Location?, ?equal_loc: Location?, ?end_keyword_loc: Location?) -> DefNode
# File 'lib/prism/node.rb', line 5043
def copy(node_id: self.node_id, location: self.location, flags: self.flags, name: self.name, name_loc: self.name_loc, receiver: self.receiver, parameters: self.parameters, body: self.body, locals: self.locals, def_keyword_loc: self.def_keyword_loc, operator_loc: self.operator_loc, lparen_loc: self.lparen_loc, rparen_loc: self.rparen_loc, equal_loc: self.equal_loc, end_keyword_loc: self.end_keyword_loc) DefNode.new(source, node_id, location, flags, name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc) end
#deconstruct
Alias for #child_nodes.
# File 'lib/prism/node.rb', line 5048
alias deconstruct child_nodes
#deconstruct_keys(keys)
def deconstruct_keys: (Array keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, receiver: Prism.node?, parameters: ParametersNode?, body: Prism.node?, locals: Array, def_keyword_loc: Location, operator_loc: Location?, lparen_loc: Location?, rparen_loc: Location?, equal_loc: Location?, end_keyword_loc: Location? }
# File 'lib/prism/node.rb', line 5051
def deconstruct_keys(keys) { node_id: node_id, location: location, name: name, name_loc: name_loc, receiver: receiver, parameters: parameters, body: body, locals: locals, def_keyword_loc: def_keyword_loc, operator_loc: operator_loc, lparen_loc: lparen_loc, rparen_loc: rparen_loc, equal_loc: equal_loc, end_keyword_loc: end_keyword_loc } end
#def_keyword
def def_keyword: () -> String
# File 'lib/prism/node.rb', line 5145
def def_keyword def_keyword_loc.slice end
#def_keyword_loc
attr_reader def_keyword_loc: Location
#end_keyword
def end_keyword: () -> String?
# File 'lib/prism/node.rb', line 5170
def end_keyword end_keyword_loc&.slice end
#end_keyword_loc
attr_reader end_keyword_loc: Location?
#equal
def equal: () -> String?
# File 'lib/prism/node.rb', line 5165
def equal equal_loc&.slice end
#equal_loc
attr_reader equal_loc: Location?
#inspect
def inspect -> String
# File 'lib/prism/node.rb', line 5175
def inspect InspectVisitor.compose(self) end
#lparen
def lparen: () -> String?
# File 'lib/prism/node.rb', line 5155
def lparen lparen_loc&.slice end
#lparen_loc
attr_reader lparen_loc: Location?
#name_loc
attr_reader name_loc: Location
#operator
def operator: () -> String?
# File 'lib/prism/node.rb', line 5150
def operator operator_loc&.slice end
#operator_loc
attr_reader operator_loc: Location?
#rparen
def rparen: () -> String?
# File 'lib/prism/node.rb', line 5160
def rparen rparen_loc&.slice end
#rparen_loc
attr_reader rparen_loc: Location?
#type
Return a symbol representation of this node type. See Node#type.
# File 'lib/prism/node.rb', line 5180
def type :def_node end