Class: VisualizeRuby::Parser::Case

Inherits:
Base
  • Object
show all
Defined in:
lib/visualize_ruby/parser/case.rb

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from VisualizeRuby::Parser::Base

Instance Method Details

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

Returns:



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/visualize_ruby/parser/case.rb', line 5

def parse
  condition, *_whens, _else = @ast.children
  condition_node = Node.new(name: AstHelper.new(condition).description, type: :decision)
  nodes << condition_node
  _whens.each do |_when|
    edge_name, actions = _when.children
    action_nodes, action_edges = Parser.new(ast: actions).parse
    edges << Edge.new(name:  AstHelper.new(edge_name).description, nodes: [condition_node, action_nodes.first])
    nodes.concat(action_nodes)
    edges.concat(action_edges)
  end
  _else_node = Node.new(name: AstHelper.new(_else).description, type: :action)
  _else_edge = Edge.new(name: "else", nodes: [condition_node, _else_node])
  nodes << _else_node
  edges << _else_edge
  return nodes, edges
end