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

#pretty_print, #to_json

Constructor Details

#initialize(left:, right:, location:, comments: []) ⇒ Dot3

Returns a new instance of Dot3.



3409
3410
3411
3412
3413
3414
# File 'lib/syntax_tree/node.rb', line 3409

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



3407
3408
3409
# File 'lib/syntax_tree/node.rb', line 3407

def comments
  @comments
end

#leftObject (readonly)

nil | untyped

the left side of the expression



3401
3402
3403
# File 'lib/syntax_tree/node.rb', line 3401

def left
  @left
end

#rightObject (readonly)

nil | untyped

the right side of the expression



3404
3405
3406
# File 'lib/syntax_tree/node.rb', line 3404

def right
  @right
end

Instance Method Details

#accept(visitor) ⇒ Object



3416
3417
3418
# File 'lib/syntax_tree/node.rb', line 3416

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

#child_nodesObject Also known as: deconstruct



3420
3421
3422
# File 'lib/syntax_tree/node.rb', line 3420

def child_nodes
  [left, right]
end

#deconstruct_keys(keys) ⇒ Object



3426
3427
3428
# File 'lib/syntax_tree/node.rb', line 3426

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

#format(q) ⇒ Object



3430
3431
3432
# File 'lib/syntax_tree/node.rb', line 3430

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