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:, block:, location:) ⇒ Command



3429
3430
3431
3432
3433
3434
3435
# File 'lib/syntax_tree/node.rb', line 3429

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

Instance Attribute Details

#argumentsObject (readonly)

Args

the arguments being sent with the message



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

def arguments
  @arguments
end

#blockObject (readonly)

nil | Block

the optional block being passed to the method



3424
3425
3426
# File 'lib/syntax_tree/node.rb', line 3424

def block
  @block
end

#commentsObject (readonly)

Array[ Comment | EmbDoc ]

the comments attached to this node



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

def comments
  @comments
end

#messageObject (readonly)

Const | Ident

the message being sent to the implicit receiver



3418
3419
3420
# File 'lib/syntax_tree/node.rb', line 3418

def message
  @message
end

Instance Method Details

#===(other) ⇒ Object



3479
3480
3481
3482
# File 'lib/syntax_tree/node.rb', line 3479

def ===(other)
  other.is_a?(Command) && message === other.message &&
    arguments === other.arguments && block === other.block
end

#accept(visitor) ⇒ Object



3437
3438
3439
# File 'lib/syntax_tree/node.rb', line 3437

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

#child_nodesObject Also known as: deconstruct



3441
3442
3443
# File 'lib/syntax_tree/node.rb', line 3441

def child_nodes
  [message, arguments, block]
end

#copy(message: nil, arguments: nil, block: nil, location: nil) ⇒ Object



3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
# File 'lib/syntax_tree/node.rb', line 3445

def copy(message: nil, arguments: nil, block: nil, location: nil)
  node =
    Command.new(
      message: message || self.message,
      arguments: arguments || self.arguments,
      block: block || self.block,
      location: location || self.location
    )

  node.comments.concat(comments.map(&:copy))
  node
end

#deconstruct_keys(_keys) ⇒ Object



3460
3461
3462
3463
3464
3465
3466
3467
3468
# File 'lib/syntax_tree/node.rb', line 3460

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

#format(q) ⇒ Object



3470
3471
3472
3473
3474
3475
3476
3477
# File 'lib/syntax_tree/node.rb', line 3470

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

  q.format(block) if block
end