Class: VisualizeRuby::Parser::Case
- Inherits:
-
Object
- Object
- VisualizeRuby::Parser::Case
- Defined in:
- lib/visualize_ruby/parser/case.rb
Instance Method Summary collapse
- #edges ⇒ Object
-
#initialize(ast) ⇒ Case
constructor
A new instance of Case.
- #nodes ⇒ Object
- #parse ⇒ Array<VisualizeRuby::Node>, Array<VisualizeRuby::Edge>
Constructor Details
#initialize(ast) ⇒ Case
Returns a new instance of Case.
4 5 6 |
# File 'lib/visualize_ruby/parser/case.rb', line 4 def initialize(ast) @ast = ast end |
Instance Method Details
#edges ⇒ Object
31 32 33 |
# File 'lib/visualize_ruby/parser/case.rb', line 31 def edges @edges ||= [] end |
#nodes ⇒ Object
27 28 29 |
# File 'lib/visualize_ruby/parser/case.rb', line 27 def nodes @nodes ||= [] end |
#parse ⇒ Array<VisualizeRuby::Node>, Array<VisualizeRuby::Edge>
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/visualize_ruby/parser/case.rb', line 9 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 |