Class: SyntaxTree::QWords
- Inherits:
-
Node
- Object
- Node
- SyntaxTree::QWords
show all
- Defined in:
- lib/syntax_tree/node.rb
Overview
QWords represents a string literal array without interpolation.
%w[one two three]
Instance Attribute Summary collapse
Attributes inherited from Node
#location
Instance Method Summary
collapse
Methods inherited from Node
#construct_keys, #pretty_print, #to_json
Constructor Details
#initialize(beginning:, elements:, location:) ⇒ QWords
8650
8651
8652
8653
8654
8655
|
# File 'lib/syntax_tree/node.rb', line 8650
def initialize(beginning:, elements:, location:)
@beginning = beginning
@elements = elements
@location = location
= []
end
|
Instance Attribute Details
#beginning ⇒ Object
- QWordsBeg
-
the token that opens this array literal
8642
8643
8644
|
# File 'lib/syntax_tree/node.rb', line 8642
def beginning
@beginning
end
|
- Array[ Comment | EmbDoc ]
-
the comments attached to this node
8648
8649
8650
|
# File 'lib/syntax_tree/node.rb', line 8648
def
end
|
#elements ⇒ Object
- Array[ TStringContent ]
-
the elements of the array
8645
8646
8647
|
# File 'lib/syntax_tree/node.rb', line 8645
def elements
@elements
end
|
Instance Method Details
#===(other) ⇒ Object
8706
8707
8708
8709
|
# File 'lib/syntax_tree/node.rb', line 8706
def ===(other)
other.is_a?(QWords) && beginning === other.beginning &&
ArrayMatch.call(elements, other.elements)
end
|
#accept(visitor) ⇒ Object
8657
8658
8659
|
# File 'lib/syntax_tree/node.rb', line 8657
def accept(visitor)
visitor.visit_qwords(self)
end
|
#child_nodes ⇒ Object
Also known as:
deconstruct
8661
8662
8663
|
# File 'lib/syntax_tree/node.rb', line 8661
def child_nodes
[]
end
|
#copy(beginning: nil, elements: nil, location: nil) ⇒ Object
8665
8666
8667
8668
8669
8670
8671
|
# File 'lib/syntax_tree/node.rb', line 8665
def copy(beginning: nil, elements: nil, location: nil)
QWords.new(
beginning: beginning || self.beginning,
elements: elements || self.elements,
location: location || self.location
)
end
|
#deconstruct_keys(_keys) ⇒ Object
8675
8676
8677
8678
8679
8680
8681
8682
|
# File 'lib/syntax_tree/node.rb', line 8675
def deconstruct_keys(_keys)
{
beginning: beginning,
elements: elements,
location: location,
comments:
}
end
|
8684
8685
8686
8687
8688
8689
8690
8691
8692
8693
8694
8695
8696
8697
8698
8699
8700
8701
8702
8703
8704
|
# File 'lib/syntax_tree/node.rb', line 8684
def format(q)
opening, closing = "%w[", "]"
if elements.any? { |element| element.match?(/[\[\]]/) }
opening = beginning.value
closing = Quotes.matching(opening[2])
end
q.text(opening)
q.group do
q.indent do
q.breakable_empty
q.seplist(
elements,
ArrayLiteral::BREAKABLE_SPACE_SEPARATOR
) { |element| q.format(element) }
end
q.breakable_empty
end
q.text(closing)
end
|