class VisualizeRuby::Parser

Attributes

ast[R]

Public Class Methods

new(ruby_code = nil, ast: ::Parser::CurrentRuby.parse(ruby_code)) click to toggle source
# File lib/visualize_ruby/parser.rb, line 21
def initialize(ruby_code = nil, ast: ::Parser::CurrentRuby.parse(ruby_code))
  @ast = ast
end

Public Instance Methods

edges() click to toggle source
# File lib/visualize_ruby/parser.rb, line 36
def edges
  @edges ||= []
end
nodes() click to toggle source
# File lib/visualize_ruby/parser.rb, line 32
def nodes
  @nodes ||= []
end
parse() click to toggle source

@return [Array<VisualizeRuby::Node>, Array<VisualizeRuby::Edge>]

# File lib/visualize_ruby/parser.rb, line 26
def parse
  merge *parse_by_type

  return nodes, edges
end

Private Instance Methods

merge(nodes, edges) click to toggle source
# File lib/visualize_ruby/parser.rb, line 48
def merge(nodes, edges)
  self.nodes.concat(nodes)
  self.edges.concat(edges)
end
parse_by_type() click to toggle source
# File lib/visualize_ruby/parser.rb, line 42
def parse_by_type
  Parser.const_get(ast.type.to_s.capitalize, false).new(ast).parse
rescue NameError
  Str.new(ast).parse
end