Class: VisualizeRuby::Parser::If
Instance Method Summary
collapse
Methods included from Conditions
#set_conditions
Methods inherited from Base
#initialize
Instance Method Details
#branch(on_bool) ⇒ Object
24
25
26
27
28
|
# File 'lib/visualize_ruby/parser/if.rb', line 24
def branch(on_bool)
return [], [] unless on_bool
on_bool_nodes, on_bool_edges = Parser.new(ast: on_bool).parse
return on_bool_nodes, on_bool_edges
end
|
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/visualize_ruby/parser/if.rb', line 6
def parse
break_ast
condition_nodes = set_conditions(condition)
on_true_nodes, on_true_edges = branch(on_true)
on_false_nodes, on_false_edges = branch(on_false)
last_condition = condition_nodes.last
on_true_nodes[0] = on_true_node = (on_true_nodes.first || branch_leaf(last_condition, "true"))
on_false_nodes[0] = on_false_node = (on_false_nodes.first || branch_leaf(last_condition, "false"))
nodes.concat(on_true_nodes)
nodes.concat(on_false_nodes)
edges << Edge.new(name: "true", nodes: [last_condition, on_true_node])
edges << Edge.new(name: "false", nodes: [last_condition, on_false_node])
edges.concat(on_false_edges)
edges.concat(on_true_edges)
return [nodes, edges]
end
|