Class: SyntaxTree::Lambda
Overview
Lambda represents using a lambda literal (not the lambda method call).
->(value) { value * 2 }
Instance Attribute Summary collapse
-
#comments ⇒ Object
readonly
- Array[ Comment | EmbDoc ]
-
the comments attached to this node.
-
#params ⇒ Object
readonly
- Params | Paren
-
the parameter declaration for this lambda.
-
#statements ⇒ Object
readonly
- BodyStmt | Statements
-
the expressions to be executed in this lambda.
Attributes inherited from Node
Instance Method Summary collapse
- #accept(visitor) ⇒ Object
- #child_nodes ⇒ Object (also: #deconstruct)
- #deconstruct_keys(keys) ⇒ Object
- #format(q) ⇒ Object
-
#initialize(params:, statements:, location:, comments: []) ⇒ Lambda
constructor
A new instance of Lambda.
Methods inherited from Node
Constructor Details
#initialize(params:, statements:, location:, comments: []) ⇒ Lambda
Returns a new instance of Lambda.
5805 5806 5807 5808 5809 5810 |
# File 'lib/syntax_tree/node.rb', line 5805 def initialize(params:, statements:, location:, comments: []) @params = params @statements = statements @location = location @comments = comments end |
Instance Attribute Details
#comments ⇒ Object (readonly)
- Array[ Comment | EmbDoc ]
-
the comments attached to this node
5803 5804 5805 |
# File 'lib/syntax_tree/node.rb', line 5803 def comments @comments end |
#params ⇒ Object (readonly)
- Params | Paren
-
the parameter declaration for this lambda
5797 5798 5799 |
# File 'lib/syntax_tree/node.rb', line 5797 def params @params end |
#statements ⇒ Object (readonly)
- BodyStmt | Statements
-
the expressions to be executed in this lambda
5800 5801 5802 |
# File 'lib/syntax_tree/node.rb', line 5800 def statements @statements end |
Instance Method Details
#accept(visitor) ⇒ Object
5812 5813 5814 |
# File 'lib/syntax_tree/node.rb', line 5812 def accept(visitor) visitor.visit_lambda(self) end |
#child_nodes ⇒ Object Also known as: deconstruct
5816 5817 5818 |
# File 'lib/syntax_tree/node.rb', line 5816 def child_nodes [params, statements] end |
#deconstruct_keys(keys) ⇒ Object
5822 5823 5824 5825 5826 5827 5828 5829 |
# File 'lib/syntax_tree/node.rb', line 5822 def deconstruct_keys(keys) { params: params, statements: statements, location: location, comments: comments } end |
#format(q) ⇒ Object
5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 |
# File 'lib/syntax_tree/node.rb', line 5831 def format(q) q.group(0, "->") do if params.is_a?(Paren) q.format(params) unless params.contents.empty? elsif !params.empty? q.group do q.text("(") q.format(params) q.text(")") end end q.text(" ") q.if_break do force_parens = q.parents.any? do |node| node.is_a?(Command) || node.is_a?(CommandCall) end q.text(force_parens ? "{" : "do") q.indent do q.breakable q.format(statements) end q.breakable q.text(force_parens ? "}" : "end") end.if_flat do q.text("{ ") q.format(statements) q.text(" }") end end end |