Class: SyntaxTree::Dot3

Inherits:
Node
  • Object
show all
Defined in:
lib/syntax_tree/node.rb

Overview

Dot3 represents using the ... operator between two expressions. Usually this is to create a range object. It's effectively the same event as the Dot2 node but with this operator you're asking Ruby to omit the final value.

1...2

Like Dot2 it can also be used to create a flip-flop.

if value == 5 ... value == 10
end

One of the sides of the expression may be nil, but not both.

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(left:, right:, location:, comments: []) ⇒ Dot3

Returns a new instance of Dot3.



3830
3831
3832
3833
3834
3835
# File 'lib/syntax_tree/node.rb', line 3830

def initialize(left:, right:, location:, comments: [])
  @left = left
  @right = right
  @location = location
  @comments = comments
end

Instance Attribute Details

#comments ⇒ Object (readonly)

[Array[ Comment | EmbDoc ]] the comments attached to this node



3828
3829
3830
# File 'lib/syntax_tree/node.rb', line 3828

def comments
  @comments
end

#left ⇒ Object (readonly)

[nil | untyped] the left side of the expression



3822
3823
3824
# File 'lib/syntax_tree/node.rb', line 3822

def left
  @left
end

#right ⇒ Object (readonly)

[nil | untyped] the right side of the expression



3825
3826
3827
# File 'lib/syntax_tree/node.rb', line 3825

def right
  @right
end

Instance Method Details

#accept(visitor) ⇒ Object



3837
3838
3839
# File 'lib/syntax_tree/node.rb', line 3837

def accept(visitor)
  visitor.visit_dot3(self)
end

#child_nodes ⇒ Object Also known as: deconstruct



3841
3842
3843
# File 'lib/syntax_tree/node.rb', line 3841

def child_nodes
  [left, right]
end

#deconstruct_keys(_keys) ⇒ Object



3847
3848
3849
# File 'lib/syntax_tree/node.rb', line 3847

def deconstruct_keys(_keys)
  { left: left, right: right, location: location, comments: comments }
end

#format(q) ⇒ Object



3851
3852
3853
# File 'lib/syntax_tree/node.rb', line 3851

def format(q)
  DotFormatter.new("...", self).format(q)
end