Class: SyntaxTree::Command

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

Overview

Command represents a method call with arguments and no parentheses. Note that Command nodes only happen when there is no explicit receiver for this method.

method argument

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(message:, arguments:, location:, comments: []) ⇒ Command

Returns a new instance of Command.



2938
2939
2940
2941
2942
2943
# File 'lib/syntax_tree/node.rb', line 2938

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

Instance Attribute Details

#argumentsObject (readonly)

Args

the arguments being sent with the message



2933
2934
2935
# File 'lib/syntax_tree/node.rb', line 2933

def arguments
  @arguments
end

#commentsObject (readonly)

Array[ Comment | EmbDoc ]

the comments attached to this node



2936
2937
2938
# File 'lib/syntax_tree/node.rb', line 2936

def comments
  @comments
end

#messageObject (readonly)

Const | Ident

the message being sent to the implicit receiver



2930
2931
2932
# File 'lib/syntax_tree/node.rb', line 2930

def message
  @message
end

Instance Method Details

#accept(visitor) ⇒ Object



2945
2946
2947
# File 'lib/syntax_tree/node.rb', line 2945

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

#child_nodesObject Also known as: deconstruct



2949
2950
2951
# File 'lib/syntax_tree/node.rb', line 2949

def child_nodes
  [message, arguments]
end

#deconstruct_keys(_keys) ⇒ Object



2955
2956
2957
2958
2959
2960
2961
2962
# File 'lib/syntax_tree/node.rb', line 2955

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

#format(q) ⇒ Object



2964
2965
2966
2967
2968
2969
# File 'lib/syntax_tree/node.rb', line 2964

def format(q)
  q.group do
    q.format(message)
    align(q, self) { q.format(arguments) }
  end
end