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.



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

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

Instance Attribute Details

#commentsObject (readonly)

Array[ Comment | EmbDoc ]

the comments attached to this node



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

def comments
  @comments
end

#leftObject (readonly)

nil | untyped

the left side of the expression



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

def left
  @left
end

#rightObject (readonly)

nil | untyped

the right side of the expression



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

def right
  @right
end

Instance Method Details

#accept(visitor) ⇒ Object



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

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

#child_nodesObject Also known as: deconstruct



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

def child_nodes
  [left, right]
end

#deconstruct_keys(_keys) ⇒ Object



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

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

#format(q) ⇒ Object



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

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