class RubyAstVisualizer::Core
Public Class Methods
new(ast)
click to toggle source
# File lib/ruby_ast_visualizer.rb, line 5 def initialize(ast) @node_id = 0 @ast = ast end
Public Instance Methods
visualize()
click to toggle source
# File lib/ruby_ast_visualizer.rb, line 10 def visualize GraphViz.new(:G, type: :digraph) {|g| reconfigure(g, @ast) } end
Private Instance Methods
fetch_node_id(node)
click to toggle source
# File lib/ruby_ast_visualizer.rb, line 37 def fetch_node_id(node) case node when Integer, NilClass, String, Symbol (@node_id += 1).to_s else node.object_id.to_s end end
reconfigure(g, node)
click to toggle source
# File lib/ruby_ast_visualizer.rb, line 18 def reconfigure(g, node) self_node = g.add_nodes(fetch_node_id(node), label: node.type) node.children.each {|child| label = case child when Integer; child when NilClass; 'nil' when String; "\"#{child}\"" when Symbol; ":#{child}" else child.type.to_s end self_node << g.add_nodes(fetch_node_id(child), label: label) reconfigure(g, child) if child.respond_to? :children } end