Class: SyntaxTree::Command
- Inherits:
-
Node
- Object
- Node
- SyntaxTree::Command
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, #end_char, #pretty_print, #start_char, #to_json, #to_mermaid
Constructor Details
#initialize(message:, arguments:, block:, location:) ⇒ Command
3452
3453
3454
3455
3456
3457
3458
|
# File 'lib/syntax_tree/node.rb', line 3452
def initialize(message:, arguments:, block:, location:)
@message = message
@arguments = arguments
@block = block
@location = location
@comments = []
end
|
Instance Attribute Details
#arguments ⇒ Object
- Args
-
the arguments being sent with the message
3444
3445
3446
|
# File 'lib/syntax_tree/node.rb', line 3444
def arguments
@arguments
end
|
#block ⇒ Object
- nil | BlockNode
-
the optional block being passed to the method
3447
3448
3449
|
# File 'lib/syntax_tree/node.rb', line 3447
def block
@block
end
|
- Array[ Comment | EmbDoc ]
-
the comments attached to this node
3450
3451
3452
|
# File 'lib/syntax_tree/node.rb', line 3450
def
@comments
end
|
#message ⇒ Object
- Const | Ident
-
the message being sent to the implicit receiver
3441
3442
3443
|
# File 'lib/syntax_tree/node.rb', line 3441
def message
@message
end
|
Instance Method Details
#===(other) ⇒ Object
3502
3503
3504
3505
|
# File 'lib/syntax_tree/node.rb', line 3502
def ===(other)
other.is_a?(Command) && message === other.message &&
arguments === other.arguments && block === other.block
end
|
#accept(visitor) ⇒ Object
3460
3461
3462
|
# File 'lib/syntax_tree/node.rb', line 3460
def accept(visitor)
visitor.visit_command(self)
end
|
#arity ⇒ Object
3507
3508
3509
|
# File 'lib/syntax_tree/node.rb', line 3507
def arity
arguments.arity
end
|
#child_nodes ⇒ Object
Also known as:
deconstruct
3464
3465
3466
|
# File 'lib/syntax_tree/node.rb', line 3464
def child_nodes
[message, arguments, block]
end
|
#copy(message: nil, arguments: nil, block: nil, location: nil) ⇒ Object
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
|
# File 'lib/syntax_tree/node.rb', line 3468
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..concat(.map(&:copy))
node
end
|
#deconstruct_keys(_keys) ⇒ Object
3483
3484
3485
3486
3487
3488
3489
3490
3491
|
# File 'lib/syntax_tree/node.rb', line 3483
def deconstruct_keys(_keys)
{
message: message,
arguments: arguments,
block: block,
location: location,
comments:
}
end
|
3493
3494
3495
3496
3497
3498
3499
3500
|
# File 'lib/syntax_tree/node.rb', line 3493
def format(q)
q.group do
q.format(message)
align(q, self) { q.format(arguments) }
end
q.format(block) if block
end
|