Module: VisualizeRuby::Parser::Conditions

Included in:
And, If, Or
Defined in:
lib/visualize_ruby/parser/conditions.rb

Instance Method Summary collapse

Instance Method Details

#parseArray<VisualizeRuby::Node>, Array<VisualizeRuby::Edge>

Returns:



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/visualize_ruby/parser/conditions.rb', line 13

def parse
  last_node = nil
  @ast.children.reverse.map do |c|
    node = set_conditions(c).last
    if last_node
      edges << Edge.new(name: self.class.name.split("::").last.upcase, nodes: [node, last_node])
      last_node.lineno_connection = edges.last
    end
    last_node = node
    node
  end
  return nodes, edges
end

#set_conditions(condition) ⇒ Object



4
5
6
7
8
9
10
# File 'lib/visualize_ruby/parser/conditions.rb', line 4

def set_conditions(condition)
  condition_nodes, condition_edges = Parser.new(ast: condition).parse
  condition_nodes.first.type       = :decision
  nodes.unshift(*condition_nodes)
  edges.unshift(*condition_edges)
  condition_nodes
end