Class: SyntaxTree::IfOp
Overview
IfOp represents a ternary clause.
predicate ? truthy : falsy
Instance Attribute Summary collapse
-
#comments ⇒ Object
readonly
- Array[ Comment | EmbDoc ]
-
the comments attached to this node.
-
#falsy ⇒ Object
readonly
- Node
-
the expression to be executed if the predicate is falsy.
-
#predicate ⇒ Object
readonly
- Node
-
the expression to be checked.
-
#truthy ⇒ Object
readonly
- Node
-
the expression to be executed if the predicate is truthy.
Attributes inherited from Node
Instance Method Summary collapse
- #===(other) ⇒ Object
- #accept(visitor) ⇒ Object
- #child_nodes ⇒ Object (also: #deconstruct)
- #copy(predicate: nil, truthy: nil, falsy: nil, location: nil) ⇒ Object
- #deconstruct_keys(_keys) ⇒ Object
- #format(q) ⇒ Object
-
#initialize(predicate:, truthy:, falsy:, location:) ⇒ IfOp
constructor
A new instance of IfOp.
Methods inherited from Node
#construct_keys, #end_char, #pretty_print, #start_char, #to_json, #to_mermaid
Constructor Details
#initialize(predicate:, truthy:, falsy:, location:) ⇒ IfOp
Returns a new instance of IfOp.
6557 6558 6559 6560 6561 6562 6563 |
# File 'lib/syntax_tree/node.rb', line 6557 def initialize(predicate:, truthy:, falsy:, location:) @predicate = predicate @truthy = truthy @falsy = falsy @location = location @comments = [] end |
Instance Attribute Details
#comments ⇒ Object (readonly)
- Array[ Comment | EmbDoc ]
-
the comments attached to this node
6555 6556 6557 |
# File 'lib/syntax_tree/node.rb', line 6555 def comments @comments end |
#falsy ⇒ Object (readonly)
- Node
-
the expression to be executed if the predicate is falsy
6552 6553 6554 |
# File 'lib/syntax_tree/node.rb', line 6552 def falsy @falsy end |
#predicate ⇒ Object (readonly)
- Node
-
the expression to be checked
6546 6547 6548 |
# File 'lib/syntax_tree/node.rb', line 6546 def predicate @predicate end |
#truthy ⇒ Object (readonly)
- Node
-
the expression to be executed if the predicate is truthy
6549 6550 6551 |
# File 'lib/syntax_tree/node.rb', line 6549 def truthy @truthy end |
Instance Method Details
#===(other) ⇒ Object
6631 6632 6633 6634 |
# File 'lib/syntax_tree/node.rb', line 6631 def ===(other) other.is_a?(IfOp) && predicate === other.predicate && truthy === other.truthy && falsy === other.falsy end |
#accept(visitor) ⇒ Object
6565 6566 6567 |
# File 'lib/syntax_tree/node.rb', line 6565 def accept(visitor) visitor.visit_if_op(self) end |
#child_nodes ⇒ Object Also known as: deconstruct
6569 6570 6571 |
# File 'lib/syntax_tree/node.rb', line 6569 def child_nodes [predicate, truthy, falsy] end |
#copy(predicate: nil, truthy: nil, falsy: nil, location: nil) ⇒ Object
6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 |
# File 'lib/syntax_tree/node.rb', line 6573 def copy(predicate: nil, truthy: nil, falsy: nil, location: nil) node = IfOp.new( predicate: predicate || self.predicate, truthy: truthy || self.truthy, falsy: falsy || self.falsy, location: location || self.location ) node.comments.concat(comments.map(&:copy)) node end |
#deconstruct_keys(_keys) ⇒ Object
6588 6589 6590 6591 6592 6593 6594 6595 6596 |
# File 'lib/syntax_tree/node.rb', line 6588 def deconstruct_keys(_keys) { predicate: predicate, truthy: truthy, falsy: falsy, location: location, comments: comments } end |
#format(q) ⇒ Object
6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 |
# File 'lib/syntax_tree/node.rb', line 6598 def format(q) force_flat = [ AliasNode, Assign, Break, Command, CommandCall, Heredoc, IfNode, IfOp, Lambda, MAssign, Next, OpAssign, RescueMod, ReturnNode, Super, Undef, UnlessNode, VoidStmt, YieldNode, ZSuper ] if q.parent.is_a?(Paren) || force_flat.include?(truthy.class) || force_flat.include?(falsy.class) q.group { format_flat(q) } return end q.group { q.if_break { format_break(q) }.if_flat { format_flat(q) } } end |