Class: VisualizeRuby::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/visualize_ruby/builder.rb

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Constructor Details

#initialize(ruby_code:, in_line_local_method_calls: true) ⇒ Builder

Returns a new instance of Builder.

Parameters:

  • ruby_code (String)


7
8
9
10
# File 'lib/visualize_ruby/builder.rb', line 7

def initialize(ruby_code:, in_line_local_method_calls: true)
  @ruby_code                  = InputCoercer.new(ruby_code, name: :ruby_code)
  @in_line_local_method_calls = in_line_local_method_calls
end

Instance Method Details

#buildObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/visualize_ruby/builder.rb', line 12

def build
  ruby_code  = DissociatedIntrospection::RubyCode.build_from_source(@ruby_code.read)
  ruby_class = DissociatedIntrospection::RubyClass.new(ruby_code)

  if ruby_class.class?
    if @in_line_local_method_calls
      do_in_lining(ruby_class)
    else
      Result.new(
          ruby_code: @ruby_code.input,
          ast:       ruby_code.ast,
          graphs:    build_from_class(ruby_class),
          options:   { label: ruby_class.class_name }
      )
    end
  elsif bare_methods?(ruby_code)
    Result.new(
        ruby_code: @ruby_code.input,
        ast:       ruby_code.ast,
        graphs:    wrap_bare_methods(ruby_code)
    )
  else
    Result.new(
        ruby_code: @ruby_code.input,
        ast:       ruby_code.ast,
        graphs:    [Graph.new(ast: ruby_code.ast)]
    )
  end
end