Class: SyntaxTree::HashLiteral
- Inherits:
-
Node
- Object
- Node
- SyntaxTree::HashLiteral
show all
- Defined in:
- lib/syntax_tree/node.rb
Overview
HashLiteral represents a hash literal.
{ key => value }
Defined Under Namespace
Classes: EmptyWithCommentsFormatter
Instance Attribute Summary collapse
Attributes inherited from Node
#location
Instance Method Summary
collapse
Methods inherited from Node
#construct_keys, #end_char, #pretty_print, #start_char, #to_json, #to_mermaid
Constructor Details
#initialize(lbrace:, assocs:, location:) ⇒ HashLiteral
5684
5685
5686
5687
5688
5689
|
# File 'lib/syntax_tree/node.rb', line 5684
def initialize(lbrace:, assocs:, location:)
@lbrace = lbrace
@assocs = assocs
@location = location
@comments = []
end
|
Instance Attribute Details
#assocs ⇒ Object
- Array[ Assoc | AssocSplat ]
-
the optional contents of the hash
5679
5680
5681
|
# File 'lib/syntax_tree/node.rb', line 5679
def assocs
@assocs
end
|
- Array[ Comment | EmbDoc ]
-
the comments attached to this node
5682
5683
5684
|
# File 'lib/syntax_tree/node.rb', line 5682
def
@comments
end
|
#lbrace ⇒ Object
- LBrace
-
the left brace that opens this hash
5676
5677
5678
|
# File 'lib/syntax_tree/node.rb', line 5676
def lbrace
@lbrace
end
|
Instance Method Details
#===(other) ⇒ Object
5725
5726
5727
5728
|
# File 'lib/syntax_tree/node.rb', line 5725
def ===(other)
other.is_a?(HashLiteral) && lbrace === other.lbrace &&
ArrayMatch.call(assocs, other.assocs)
end
|
#accept(visitor) ⇒ Object
5691
5692
5693
|
# File 'lib/syntax_tree/node.rb', line 5691
def accept(visitor)
visitor.visit_hash(self)
end
|
#child_nodes ⇒ Object
Also known as:
deconstruct
5695
5696
5697
|
# File 'lib/syntax_tree/node.rb', line 5695
def child_nodes
[lbrace].concat(assocs)
end
|
#copy(lbrace: nil, assocs: nil, location: nil) ⇒ Object
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
|
# File 'lib/syntax_tree/node.rb', line 5699
def copy(lbrace: nil, assocs: nil, location: nil)
node =
HashLiteral.new(
lbrace: lbrace || self.lbrace,
assocs: assocs || self.assocs,
location: location || self.location
)
node..concat(.map(&:copy))
node
end
|
#deconstruct_keys(_keys) ⇒ Object
5713
5714
5715
|
# File 'lib/syntax_tree/node.rb', line 5713
def deconstruct_keys(_keys)
{ lbrace: lbrace, assocs: assocs, location: location, comments: }
end
|
5717
5718
5719
5720
5721
5722
5723
|
# File 'lib/syntax_tree/node.rb', line 5717
def format(q)
if q.parent.is_a?(Assoc)
format_contents(q)
else
q.group { format_contents(q) }
end
end
|
5730
5731
5732
|
# File 'lib/syntax_tree/node.rb', line 5730
def format_key(q, key)
(@key_formatter ||= HashKeyFormatter.for(self)).format_key(q, key)
end
|