Class: SyntaxTree::ArgParen

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

Overview

ArgParen represents wrapping arguments to a method inside a set of parentheses.

method(argument)

In the example above, there would be an ArgParen node around the Args node that represents the set of arguments being sent to the method method. The argument child node can be nil if no arguments were passed, as in:

method()

Instance Attribute Summary collapse

Attributes inherited from Node

#location

Instance Method Summary collapse

Methods inherited from Node

#pretty_print, #to_json

Constructor Details

#initialize(arguments:, location:, comments: []) ⇒ ArgParen

Returns a new instance of ArgParen.



545
546
547
548
549
# File 'lib/syntax_tree/node.rb', line 545

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

Instance Attribute Details

#argumentsObject (readonly)

nil | Args | ArgsForward

the arguments inside the

parentheses



540
541
542
# File 'lib/syntax_tree/node.rb', line 540

def arguments
  @arguments
end

#commentsObject (readonly)

Array[ Comment | EmbDoc ]

the comments attached to this node



543
544
545
# File 'lib/syntax_tree/node.rb', line 543

def comments
  @comments
end

Instance Method Details

#accept(visitor) ⇒ Object



551
552
553
# File 'lib/syntax_tree/node.rb', line 551

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

#child_nodesObject Also known as: deconstruct



555
556
557
# File 'lib/syntax_tree/node.rb', line 555

def child_nodes
  [arguments]
end

#deconstruct_keys(keys) ⇒ Object



561
562
563
# File 'lib/syntax_tree/node.rb', line 561

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

#format(q) ⇒ Object



565
566
567
568
569
570
571
572
573
574
575
576
577
578
# File 'lib/syntax_tree/node.rb', line 565

def format(q)
  unless arguments
    q.text("()")
    return
  end

  q.group(0, "(", ")") do
    q.indent do
      q.breakable("")
      q.format(arguments)
    end
    q.breakable("")
  end
end