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
[LambdaVar | 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.
5924 5925 5926 5927 5928 5929 |
# File 'lib/syntax_tree/node.rb', line 5924 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
5922 5923 5924 |
# File 'lib/syntax_tree/node.rb', line 5922 def comments @comments end |
#params ⇒ Object (readonly)
[LambdaVar | Paren] the parameter declaration for this lambda
5916 5917 5918 |
# File 'lib/syntax_tree/node.rb', line 5916 def params @params end |
#statements ⇒ Object (readonly)
[BodyStmt | Statements] the expressions to be executed in this lambda
5919 5920 5921 |
# File 'lib/syntax_tree/node.rb', line 5919 def statements @statements end |
Instance Method Details
#accept(visitor) ⇒ Object
5931 5932 5933 |
# File 'lib/syntax_tree/node.rb', line 5931 def accept(visitor) visitor.visit_lambda(self) end |
#child_nodes ⇒ Object Also known as: deconstruct
5935 5936 5937 |
# File 'lib/syntax_tree/node.rb', line 5935 def child_nodes [params, statements] end |
#deconstruct_keys(_keys) ⇒ Object
5941 5942 5943 5944 5945 5946 5947 5948 |
# File 'lib/syntax_tree/node.rb', line 5941 def deconstruct_keys(_keys) { params: params, statements: statements, location: location, comments: comments } end |
#format(q) ⇒ Object
5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 |
# File 'lib/syntax_tree/node.rb', line 5950 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 if force_parens q.text("{") unless statements.empty? q.indent do q.breakable q.format(statements) end q.breakable end q.text("}") else q.text("do") unless statements.empty? q.indent do q.breakable q.format(statements) end end q.breakable q.text("end") end end .if_flat do q.text("{") unless statements.empty? q.text(" ") q.format(statements) q.text(" ") end q.text("}") end end end |