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.
6533 6534 6535 6536 6537 6538 6539 |
# File 'lib/syntax_tree/node.rb', line 6533 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
6531 6532 6533 |
# File 'lib/syntax_tree/node.rb', line 6531 def comments @comments end |
#falsy ⇒ Object (readonly)
- Node
-
the expression to be executed if the predicate is falsy
6528 6529 6530 |
# File 'lib/syntax_tree/node.rb', line 6528 def falsy @falsy end |
#predicate ⇒ Object (readonly)
- Node
-
the expression to be checked
6522 6523 6524 |
# File 'lib/syntax_tree/node.rb', line 6522 def predicate @predicate end |
#truthy ⇒ Object (readonly)
- Node
-
the expression to be executed if the predicate is truthy
6525 6526 6527 |
# File 'lib/syntax_tree/node.rb', line 6525 def truthy @truthy end |
Instance Method Details
#===(other) ⇒ Object
6607 6608 6609 6610 |
# File 'lib/syntax_tree/node.rb', line 6607 def ===(other) other.is_a?(IfOp) && predicate === other.predicate && truthy === other.truthy && falsy === other.falsy end |
#accept(visitor) ⇒ Object
6541 6542 6543 |
# File 'lib/syntax_tree/node.rb', line 6541 def accept(visitor) visitor.visit_if_op(self) end |
#child_nodes ⇒ Object Also known as: deconstruct
6545 6546 6547 |
# File 'lib/syntax_tree/node.rb', line 6545 def child_nodes [predicate, truthy, falsy] end |
#copy(predicate: nil, truthy: nil, falsy: nil, location: nil) ⇒ Object
6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 |
# File 'lib/syntax_tree/node.rb', line 6549 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
6564 6565 6566 6567 6568 6569 6570 6571 6572 |
# File 'lib/syntax_tree/node.rb', line 6564 def deconstruct_keys(_keys) { predicate: predicate, truthy: truthy, falsy: falsy, location: location, comments: comments } end |
#format(q) ⇒ Object
6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 |
# File 'lib/syntax_tree/node.rb', line 6574 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 |