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.



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

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



2960
2961
2962
# File 'lib/syntax_tree/node.rb', line 2960

def arguments
  @arguments
end

#commentsObject (readonly)

Array[ Comment | EmbDoc ]

the comments attached to this node



2963
2964
2965
# File 'lib/syntax_tree/node.rb', line 2963

def comments
  @comments
end

#messageObject (readonly)

Const | Ident

the message being sent to the implicit receiver



2957
2958
2959
# File 'lib/syntax_tree/node.rb', line 2957

def message
  @message
end

Instance Method Details

#accept(visitor) ⇒ Object



2972
2973
2974
# File 'lib/syntax_tree/node.rb', line 2972

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

#child_nodesObject Also known as: deconstruct



2976
2977
2978
# File 'lib/syntax_tree/node.rb', line 2976

def child_nodes
  [message, arguments]
end

#deconstruct_keys(_keys) ⇒ Object



2982
2983
2984
2985
2986
2987
2988
2989
# File 'lib/syntax_tree/node.rb', line 2982

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

#format(q) ⇒ Object



2991
2992
2993
2994
2995
2996
# File 'lib/syntax_tree/node.rb', line 2991

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