class Prism::HashPatternNode
Represents a hash pattern in pattern matching.
foo => { a: 1, b: 2 } ^^^^^^^^^^^^^^foo => { a: 1, b: 2, **c } ^^^^^^^^^^^^^^^^^^^foo => Bar[a: 1, b: 2] ^^^^^^^^^^^^^^^foo in { a: 1, b: 2 } ^^^^^^^^^^^^^^Attributes
Represents the optional constant preceding theHash.
foo => Bar[a: 1, b: 2] ^^^foo => Bar::Baz[a: 1, b: 2] ^^^^^^^^
Represents the explicit named hash keys and values.
foo => { a: 1, b:, ** } ^^^^^^^^Represents the rest of theHash keys and values. This can be named, unnamed, or explicitly forbidden via**nil, this last one results in aNoKeywordsParameterNode.
foo => { a: 1, b:, **c } ^^^foo => { a: 1, b:, ** } ^^foo => { a: 1, b:, **nil } ^^^^^Public Class Methods
Source
# File lib/prism/node.rb, line 8405definitialize(source,node_id,location,flags,constant,elements,rest,opening_loc,closing_loc)@source =source@node_id =node_id@location =location@flags =flags@constant =constant@elements =elements@rest =rest@opening_loc =opening_loc@closing_loc =closing_locend
Initialize a newHashPatternNode node.
Source
# File lib/prism/node.rb, line 8552defself.type:hash_pattern_nodeend
Return a symbol representation of this node type. SeeNode::type.
Public Instance Methods
Source
# File lib/prism/node.rb, line 8558def===(other)other.is_a?(HashPatternNode)&& (constant===other.constant)&& (elements.length==other.elements.length)&&elements.zip(other.elements).all? {|left,right|left===right }&& (rest===other.rest)&& (opening_loc.nil?==other.opening_loc.nil?)&& (closing_loc.nil?==other.closing_loc.nil?)end
Implements case-equality for the node. This is effectively == but without comparing the value of locations. Locations are checked only for presence.
Source
# File lib/prism/node.rb, line 8418defaccept(visitor)visitor.visit_hash_pattern_node(self)end
def accept: (Visitor visitor) -> void
Source
# File lib/prism/node.rb, line 8423defchild_nodes [constant,*elements,rest]end
defchild_nodes: () ->Array
Source
# File lib/prism/node.rb, line 8537defclosingclosing_loc&.sliceend
def closing: () ->String?
Source
# File lib/prism/node.rb, line 8513defclosing_loclocation =@closing_loccaselocationwhennilnilwhenLocationlocationelse@closing_loc =Location.new(source,location>>32,location&0xFFFFFFFF)endend
The location of the closing brace.
foo => { a: 1 } ^foo => Bar[a: 1] ^Source
# File lib/prism/node.rb, line 8437defcomment_targets [*constant,*elements,*rest,*opening_loc,*closing_loc]#: Array[Prism::node | Location]end
defcomment_targets: () -> Array[Node | Location]
Source
# File lib/prism/node.rb, line 8428defcompact_child_nodescompact = []#: Array[Prism::node]compact<<constantifconstantcompact.concat(elements)compact<<restifrestcompactend
defcompact_child_nodes: () ->Array
Source
# File lib/prism/node.rb, line 8442defcopy(node_id:self.node_id,location:self.location,flags:self.flags,constant:self.constant,elements:self.elements,rest:self.rest,opening_loc:self.opening_loc,closing_loc:self.closing_loc)HashPatternNode.new(source,node_id,location,flags,constant,elements,rest,opening_loc,closing_loc)end
def copy: (?node_id:Integer, ?location:Location, ?flags:Integer, ?constant:ConstantPathNode |ConstantReadNode | nil, ?elements:Array, ?rest:AssocSplatNode |NoKeywordsParameterNode | nil, ?opening_loc:Location?, ?closing_loc:Location?) ->HashPatternNode
Source
# File lib/prism/node.rb, line 8450defdeconstruct_keys(keys) {node_id:node_id,location:location,constant:constant,elements:elements,rest:rest,opening_loc:opening_loc,closing_loc:closing_loc }end
defdeconstruct_keys: (Array keys) -> { node_id:Integer, location:Location, constant:ConstantPathNode |ConstantReadNode | nil, elements:Array, rest:AssocSplatNode |NoKeywordsParameterNode | nil,opening_loc:Location?,closing_loc:Location? }
Source
# File lib/prism/node.rb, line 8542definspectInspectVisitor.compose(self)end
def inspect ->String
Source
# File lib/prism/node.rb, line 8532defopeningopening_loc&.sliceend
def opening: () ->String?
Source
# File lib/prism/node.rb, line 8488defopening_loclocation =@opening_loccaselocationwhennilnilwhenLocationlocationelse@opening_loc =Location.new(source,location>>32,location&0xFFFFFFFF)endend
The location of the opening brace.
foo => { a: 1 } ^foo => Bar[a: 1] ^Source
# File lib/prism/node.rb, line 8527defsave_closing_loc(repository)repository.enter(node_id,:closing_loc)unless@closing_loc.nil?end
Save theclosing_loc location using the given saved source so that it can be retrieved later.
Source
# File lib/prism/node.rb, line 8502defsave_opening_loc(repository)repository.enter(node_id,:opening_loc)unless@opening_loc.nil?end
Save theopening_loc location using the given saved source so that it can be retrieved later.