Module: Blab::Tracer

Extended by:
Tracer
Included in:
Tracer
Defined in:
lib/blab/tracer.rb

Constant Summary collapse

FILE_NAME =
/.+\/blab\.rb$/
C_CALLS =
["c-call", "c-return"].freeze

Instance Method Summary collapse

Instance Method Details

#resetObject



10
11
12
13
# File 'lib/blab/tracer.rb', line 10

def reset
  printer.reset_files
  @defined_vars = {}
end

#traceObject



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
41
42
# File 'lib/blab/tracer.rb', line 15

def trace
  proc do |event, file, line, method_name, context, class_name|
    next if file =~ FILE_NAME
    next if skip_c_calls? && C_CALLS.include?(event)
    next if original_scope_only? && !original_scope?(file, method_name, class_name)

    context.local_variables.each do |v|
      next unless context.local_variable_defined?(v)

      val = context.local_variable_get(v)
      old_v = defined_vars[v]

      next if val == old_v

      formatted_output(v, val)
      defined_vars[v] = val
    end

    printer.print(
      time: Time.now.strftime(datetime_format),
      event: event,
      file: file,
      line: line,
      method_name: method_name.to_s,
      class_name: class_name.to_s
    )
  end
end