Class: VisualizeRuby::Parser::If
- Inherits:
-
Object
- Object
- VisualizeRuby::Parser::If
- Defined in:
- lib/visualize_ruby/parser/if.rb
Instance Method Summary collapse
- #branch(on_bool) ⇒ Object
-
#initialize(ast) ⇒ If
constructor
A new instance of If.
- #parse ⇒ Array<VisualizeRuby::Node>, Array<VisualizeRuby::Edge>
Constructor Details
#initialize(ast) ⇒ If
Returns a new instance of If.
4 5 6 |
# File 'lib/visualize_ruby/parser/if.rb', line 4 def initialize(ast) @ast = ast end |
Instance Method Details
#branch(on_bool) ⇒ Object
25 26 27 28 29 30 |
# File 'lib/visualize_ruby/parser/if.rb', line 25 def branch(on_bool) on_bool_nodes, on_bool_edges = Parser.new(ast: on_bool).parse on_bool_node = on_bool_nodes.first nodes.concat(on_bool_nodes) return on_bool_node, on_bool_edges end |
#parse ⇒ Array<VisualizeRuby::Node>, Array<VisualizeRuby::Edge>
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/visualize_ruby/parser/if.rb', line 9 def parse break_ast condition_nodes = set_conditions(condition) on_true_node, on_true_edges = branch(on_true) on_false_node, on_false_edges = branch(on_false) if on_false condition_nodes.each do |condition_node| edges << Edge.new(name: "true", nodes: [condition_node, on_true_node]) edges << Edge.new(name: "false", nodes: [condition_node, on_false_node]) if on_false end edges.concat(on_false_edges) if on_false edges.concat(on_true_edges) return [nodes, edges] end |