class VisualizeRuby::Parser::Block
Public Instance Methods
parse()
click to toggle source
@return [Array<VisualizeRuby::Node>, Array<VisualizeRuby::Edge>]
# File lib/visualize_ruby/parser/block.rb, line 5 def parse iterator, arguments, action = @ast.children item = arguments.children[0] collection, iterator_type = iterator.to_a if enumerable?(collection) || enumerable?(iterator_type) yield_block(action, item, iterator, "blue", true) else yield_block(action, item, iterator, "orange", false) end return nodes, edges end
Private Instance Methods
enumerable?(meth)
click to toggle source
# File lib/visualize_ruby/parser/block.rb, line 26 def enumerable?(meth) meth == :each || Enumerable.instance_methods.include?(meth) end
yield_block(action, item, on_object, color, enumerable)
click to toggle source
# File lib/visualize_ruby/parser/block.rb, line 19 def yield_block(action, item, on_object, color, enumerable) nodes << on_object_node = Node.new(ast: on_object, color: color) nodes << action_node = Node.new(ast: action, color: color) edges << Edge.new(nodes: [on_object_node, action_node], name: item, color: color) edges << Edge.new(nodes: [action_node, on_object_node], color: color, name: "↺") if enumerable end