Class: VisualizeRuby::Parser::Case
- Defined in:
- lib/visualize_ruby/parser/case.rb
Instance Method Summary collapse
Methods inherited from Base
Constructor Details
This class inherits a constructor from VisualizeRuby::Parser::Base
Instance Method Details
#parse ⇒ Array<VisualizeRuby::Node>, Array<VisualizeRuby::Edge>
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 |