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
#construct_keys, #pretty_print, #to_json
Constructor Details
#initialize(params:, statements:, location:, comments: []) ⇒ Lambda
Returns a new instance of Lambda.
5965 5966 5967 5968 5969 5970 |
# File 'lib/syntax_tree/node.rb', line 5965 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
5963 5964 5965 |
# File 'lib/syntax_tree/node.rb', line 5963 def comments @comments end |
#params ⇒ Object (readonly)
- Params | Paren
-
the parameter declaration for this lambda
5957 5958 5959 |
# File 'lib/syntax_tree/node.rb', line 5957 def params @params end |
#statements ⇒ Object (readonly)
- BodyStmt | Statements
-
the expressions to be executed in this lambda
5960 5961 5962 |
# File 'lib/syntax_tree/node.rb', line 5960 def statements @statements end |
Instance Method Details
#accept(visitor) ⇒ Object
5972 5973 5974 |
# File 'lib/syntax_tree/node.rb', line 5972 def accept(visitor) visitor.visit_lambda(self) end |
#child_nodes ⇒ Object Also known as: deconstruct
5976 5977 5978 |
# File 'lib/syntax_tree/node.rb', line 5976 def child_nodes [params, statements] end |
#deconstruct_keys(_keys) ⇒ Object
5982 5983 5984 5985 5986 5987 5988 5989 |
# File 'lib/syntax_tree/node.rb', line 5982 def deconstruct_keys(_keys) { params: params, statements: statements, location: location, comments: comments } end |
#format(q) ⇒ Object
5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 |
# File 'lib/syntax_tree/node.rb', line 5991 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 |