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 22 23 24 25 26 |
# File 'lib/visualize_ruby/parser/case.rb', line 5 def parse ast_condition_node, *ast_when_nodes, ast_else_node = @ast.children condition_node = Node.new(ast: ast_condition_node, type: :decision) nodes << condition_node ast_when_nodes.each do |ast_when_node| edge_name, actions = ast_when_node.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 if ast_else_node else_node = Node.new(ast: ast_else_node, type: :action) else_edge = Edge.new(name: "else", nodes: [condition_node, else_node]) nodes << else_node edges << else_edge end return nodes, edges end |