Class: Yeller::BacktraceFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/yeller/backtrace_filter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filename_filters, method_filters, project_root) ⇒ BacktraceFilter

Returns a new instance of BacktraceFilter.



4
5
6
7
8
# File 'lib/yeller/backtrace_filter.rb', line 4

def initialize(filename_filters, method_filters, project_root)
  @filename_filters = filename_filters
  @method_filters = method_filters
  @project_root = project_root
end

Instance Attribute Details

#filename_filtersObject (readonly)

Returns the value of attribute filename_filters.



3
4
5
# File 'lib/yeller/backtrace_filter.rb', line 3

def filename_filters
  @filename_filters
end

#method_filtersObject (readonly)

Returns the value of attribute method_filters.



3
4
5
# File 'lib/yeller/backtrace_filter.rb', line 3

def method_filters
  @method_filters
end

#project_rootObject (readonly)

Returns the value of attribute project_root.



3
4
5
# File 'lib/yeller/backtrace_filter.rb', line 3

def project_root
  @project_root
end

Instance Method Details

#filter(trace) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/yeller/backtrace_filter.rb', line 10

def filter(trace)
  trace.map do |frame|
    in_app = filter_in_app(frame)
    res = [filter_filename(in_app[0]), in_app[1], filter_method(in_app[2])]
    if in_app[3]
      res << in_app[3]
    end
    res
  end
end

#filter_filename(filename) ⇒ Object



21
22
23
24
25
26
# File 'lib/yeller/backtrace_filter.rb', line 21

def filter_filename(filename)
  filename_filters.each do |filter|
    filename.sub!(filter[0], filter[1])
  end
  filename
end

#filter_in_app(frame) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/yeller/backtrace_filter.rb', line 36

def filter_in_app(frame)
  filename = frame[0]
  if filename.start_with?(project_root)
    frame << {"in-app" => true}
  end
  frame
end

#filter_method(method) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/yeller/backtrace_filter.rb', line 28

def filter_method(method)
  return '' if method.nil?
  method_filters.each do |filter|
    method.gsub!(filter[0], filter[1])
  end
  method
end