1. Prism::
  2. HashPatternNode

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

constant[R]

Represents the optional constant preceding theHash.

foo => Bar[a: 1, b: 2]     ^^^foo => Bar::Baz[a: 1, b: 2]     ^^^^^^^^
elements[R]

Represents the explicit named hash keys and values.

foo => { a: 1, b:, ** }         ^^^^^^^^
rest[R]

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

Also aliased as:deconstruct
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

def deconstruct: () ->Array

Alias for:child_nodes
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.

Source
# File lib/prism/node.rb, line 8547deftype:hash_pattern_nodeend

Return a symbol representation of this node type. SeeNode#type.