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.
6554 6555 6556 6557 6558 6559 6560 |
# File 'lib/syntax_tree/node.rb', line 6554 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
6552 6553 6554 |
# File 'lib/syntax_tree/node.rb', line 6552 def comments @comments end |
#falsy ⇒ Object (readonly)
- Node
-
the expression to be executed if the predicate is falsy
6549 6550 6551 |
# File 'lib/syntax_tree/node.rb', line 6549 def falsy @falsy end |
#predicate ⇒ Object (readonly)
- Node
-
the expression to be checked
6543 6544 6545 |
# File 'lib/syntax_tree/node.rb', line 6543 def predicate @predicate end |
#truthy ⇒ Object (readonly)
- Node
-
the expression to be executed if the predicate is truthy
6546 6547 6548 |
# File 'lib/syntax_tree/node.rb', line 6546 def truthy @truthy end |
Instance Method Details
#===(other) ⇒ Object
6628 6629 6630 6631 |
# File 'lib/syntax_tree/node.rb', line 6628 def ===(other) other.is_a?(IfOp) && predicate === other.predicate && truthy === other.truthy && falsy === other.falsy end |
#accept(visitor) ⇒ Object
6562 6563 6564 |
# File 'lib/syntax_tree/node.rb', line 6562 def accept(visitor) visitor.visit_if_op(self) end |
#child_nodes ⇒ Object Also known as: deconstruct
6566 6567 6568 |
# File 'lib/syntax_tree/node.rb', line 6566 def child_nodes [predicate, truthy, falsy] end |
#copy(predicate: nil, truthy: nil, falsy: nil, location: nil) ⇒ Object
6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 |
# File 'lib/syntax_tree/node.rb', line 6570 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
6585 6586 6587 6588 6589 6590 6591 6592 6593 |
# File 'lib/syntax_tree/node.rb', line 6585 def deconstruct_keys(_keys) { predicate: predicate, truthy: truthy, falsy: falsy, location: location, comments: comments } end |
#format(q) ⇒ Object
6595 6596 6597 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 |
# File 'lib/syntax_tree/node.rb', line 6595 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 |