Class: SyntaxTree::LambdaVar
- Inherits:
-
Node
- Object
- Node
- SyntaxTree::LambdaVar
show all
- Defined in:
- lib/syntax_tree/node.rb
Overview
LambdaVar represents the parameters being declared for a lambda. Effectively this node is everything contained within the parentheses. This includes all of the various parameter types, as well as block-local variable declarations.
-> (positional, optional = value, keyword:, █ local) do
end
Instance Attribute Summary collapse
-
#comments ⇒ Object
readonly
- Array[ Comment | EmbDoc ]
-
the comments attached to this node.
-
#locals ⇒ Object
readonly
- Array[ Ident ]
-
the list of block-local variable declarations.
-
#params ⇒ Object
readonly
- Params
-
the parameters being declared with the block.
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(params:, locals:, location:) ⇒ LambdaVar
Returns a new instance of LambdaVar.
7278
7279
7280
7281
7282
7283
|
# File 'lib/syntax_tree/node.rb', line 7278
def initialize(params:, locals:, location:)
@params = params
@locals = locals
@location = location
= []
end
|
Instance Attribute Details
- Array[ Comment | EmbDoc ]
-
the comments attached to this node
7276
7277
7278
|
# File 'lib/syntax_tree/node.rb', line 7276
def
end
|
#locals ⇒ Object
- Array[ Ident ]
-
the list of block-local variable declarations
7273
7274
7275
|
# File 'lib/syntax_tree/node.rb', line 7273
def locals
@locals
end
|
#params ⇒ Object
- Params
-
the parameters being declared with the block
7270
7271
7272
|
# File 'lib/syntax_tree/node.rb', line 7270
def params
@params
end
|
Instance Method Details
#===(other) ⇒ Object
7324
7325
7326
7327
|
# File 'lib/syntax_tree/node.rb', line 7324
def ===(other)
other.is_a?(LambdaVar) && params === other.params &&
ArrayMatch.call(locals, other.locals)
end
|
#accept(visitor) ⇒ Object
7285
7286
7287
|
# File 'lib/syntax_tree/node.rb', line 7285
def accept(visitor)
visitor.visit_lambda_var(self)
end
|
#child_nodes ⇒ Object
Also known as:
deconstruct
7289
7290
7291
|
# File 'lib/syntax_tree/node.rb', line 7289
def child_nodes
[params, *locals]
end
|
#copy(params: nil, locals: nil, location: nil) ⇒ Object
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
|
# File 'lib/syntax_tree/node.rb', line 7293
def copy(params: nil, locals: nil, location: nil)
node =
LambdaVar.new(
params: params || self.params,
locals: locals || self.locals,
location: location || self.location
)
node..concat(.map(&:copy))
node
end
|
#deconstruct_keys(_keys) ⇒ Object
7307
7308
7309
|
# File 'lib/syntax_tree/node.rb', line 7307
def deconstruct_keys(_keys)
{ params: params, locals: locals, location: location, comments: }
end
|
#empty? ⇒ Boolean
7311
7312
7313
|
# File 'lib/syntax_tree/node.rb', line 7311
def empty?
params.empty? && locals.empty?
end
|
7315
7316
7317
7318
7319
7320
7321
7322
|
# File 'lib/syntax_tree/node.rb', line 7315
def format(q)
q.format(params)
if locals.any?
q.text("; ")
q.seplist(locals, BlockVar::SEPARATOR) { |local| q.format(local) }
end
end
|