Class: PrettyTrace::StructuredBacktrace

Inherits:
Object
  • Object
show all
Defined in:
lib/pretty_trace/structured_backtrace.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(backtrace, options = {}) ⇒ StructuredBacktrace

Returns a new instance of StructuredBacktrace.



5
6
7
8
# File 'lib/pretty_trace/structured_backtrace.rb', line 5

def initialize(backtrace, options={})
  @options = options
  @backtrace = backtrace
end

Instance Attribute Details

#backtraceObject (readonly)

Returns the value of attribute backtrace.



3
4
5
# File 'lib/pretty_trace/structured_backtrace.rb', line 3

def backtrace
  @backtrace
end

#optionsObject (readonly)

Returns the value of attribute options.



3
4
5
# File 'lib/pretty_trace/structured_backtrace.rb', line 3

def options
  @options
end

Instance Method Details

#formatted_backtraceObject



30
31
32
# File 'lib/pretty_trace/structured_backtrace.rb', line 30

def formatted_backtrace
  structure.map(&:formatted_line)
end

#structureObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/pretty_trace/structured_backtrace.rb', line 10

def structure
  filter = options[:filter] || []
  filter = [filter] unless filter.is_a? Array

  result = backtrace.dup

  filter.each do |expression|
    result.reject! { |trace| trace =~ expression }
  end

  result.map! { |line| BacktraceItem.new line }
  first_line = result[0]
  result.reverse!
  result.uniq!(&:path) if should_trim? result

  result.push first_line unless first_line.original_line == result[-1].original_line

  result
end

#to_sObject



34
35
36
# File 'lib/pretty_trace/structured_backtrace.rb', line 34

def to_s
  formatted_backtrace.join "\n"
end