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.



2918
2919
2920
2921
2922
2923
# File 'lib/syntax_tree/node.rb', line 2918

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



2913
2914
2915
# File 'lib/syntax_tree/node.rb', line 2913

def arguments
  @arguments
end

#commentsObject (readonly)

Array[ Comment | EmbDoc ]

the comments attached to this node



2916
2917
2918
# File 'lib/syntax_tree/node.rb', line 2916

def comments
  @comments
end

#messageObject (readonly)

Const | Ident

the message being sent to the implicit receiver



2910
2911
2912
# File 'lib/syntax_tree/node.rb', line 2910

def message
  @message
end

Instance Method Details

#accept(visitor) ⇒ Object



2925
2926
2927
# File 'lib/syntax_tree/node.rb', line 2925

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

#child_nodesObject Also known as: deconstruct



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

def child_nodes
  [message, arguments]
end

#deconstruct_keys(_keys) ⇒ Object



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

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

#format(q) ⇒ Object



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

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