Class: DiyProf::DotReporter

Inherits:
Object
  • Object
show all
Defined in:
lib/diy_prof/lib/diy_prof/dot_reporter.rb

Instance Method Summary collapse

Constructor Details

#initializeDotReporter


7
8
9
10
11
12
13
14
# File 'lib/diy_prof/lib/diy_prof/dot_reporter.rb', line 7

def initialize
  # A stack for pushing/popping methods when methods get called/returned
  @call_stack = []
  # Holds nodes
  @methods = {}
  # Holds connections among nodes
  @calls = {}
end

Instance Method Details

#record(event, method_name, time) ⇒ Object


16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/diy_prof/lib/diy_prof/dot_reporter.rb', line 16

def record(event, method_name, time)
  case event
  when :call
    @call_stack << CallInfo.new(method_name, time)
  when :return
    # Return cannot be the first event in the call stack
    return if @call_stack.empty?

    method = @call_stack.pop
    # Set execution time of method in call info
    method.time = time - method.time
    add_method_to_call_tree(method)
  end
end

#resultObject


31
32
33
# File 'lib/diy_prof/lib/diy_prof/dot_reporter.rb', line 31

def result
  dot_notation
end