Class: SyntaxTree::BlockVar

Inherits:
Node
  • Object
show all
Defined in:
lib/syntax_tree/node.rb

Overview

BlockVar represents the parameters being declared for a block. Effectively this node is everything contained within the pipes. This includes all of the various parameter types, as well as block-local variable declarations.

method do |positional, optional = value, keyword:, █ local|
end

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(params:, locals:, location:, comments: []) ⇒ BlockVar

Returns a new instance of BlockVar.



1698
1699
1700
1701
1702
1703
# File 'lib/syntax_tree/node.rb', line 1698

def initialize(params:, locals:, location:, comments: [])
  @params = params
  @locals = locals
  @location = location
  @comments = comments
end

Instance Attribute Details

#commentsObject (readonly)

Array[ Comment | EmbDoc ]

the comments attached to this node



1696
1697
1698
# File 'lib/syntax_tree/node.rb', line 1696

def comments
  @comments
end

#localsObject (readonly)

Array[ Ident ]

the list of block-local variable declarations



1693
1694
1695
# File 'lib/syntax_tree/node.rb', line 1693

def locals
  @locals
end

#paramsObject (readonly)

Params

the parameters being declared with the block



1690
1691
1692
# File 'lib/syntax_tree/node.rb', line 1690

def params
  @params
end

Instance Method Details

#accept(visitor) ⇒ Object



1705
1706
1707
# File 'lib/syntax_tree/node.rb', line 1705

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

#child_nodesObject Also known as: deconstruct



1709
1710
1711
# File 'lib/syntax_tree/node.rb', line 1709

def child_nodes
  [params, *locals]
end

#deconstruct_keys(_keys) ⇒ Object



1715
1716
1717
# File 'lib/syntax_tree/node.rb', line 1715

def deconstruct_keys(_keys)
  { params: params, locals: locals, location: location, comments: comments }
end

#format(q) ⇒ Object



1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
# File 'lib/syntax_tree/node.rb', line 1719

def format(q)
  q.group(0, "|", "|") do
    q.remove_breaks(q.format(params))

    if locals.any?
      q.text("; ")
      q.seplist(locals, -> { q.text(", ") }) { |local| q.format(local) }
    end
  end
end