instance method
Prism::Translation::Ripper#visit_if_node
visit_if_node(node)
lib/prism/translation/ripper.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.0.0/lib/prism/translation/ripper.rb, line 1933
def visit_if_node(node)
if node.then_keyword == "?"
predicate = visit(node.predicate)
truthy = visit(node.statements.body.first)
falsy = visit(node.subsequent.statements.body.first)
bounds(node.location)
on_ifop(predicate, truthy, falsy)
elsif node.statements.nil? || (node.predicate.location.start_offset < node.statements.location.start_offset)
predicate = visit(node.predicate)
statements =
if node.statements.nil?
bounds(node.location)
on_stmts_add(on_stmts_new, on_void_stmt)
else
visit(node.statements)
end
subsequent = visit(node.subsequent)
bounds(node.location)
if node.if_keyword == "if"
on_if(predicate, statements, subsequent)
else
on_elsif(predicate, statements, subsequent)
end
else
statements = visit(node.statements.body.first)
predicate = visit(node.predicate)
bounds(node.location)
on_if_mod(predicate, statements)
end
end
if foo then bar end ^^^^^^^^^^^^^^^^^^^
bar if foo ^^^^^^^^^^
foo ? bar : baz ^^^^^^^^^^^^^^^