class PrettyTrace::StructuredBacktrace

Attributes

backtrace[R]
options[R]

Public Class Methods

new(backtrace, options={}) click to toggle source
# File lib/pretty_trace/structured_backtrace.rb, line 5
def initialize(backtrace, options={})
  @options = options
  @backtrace = backtrace
end

Public Instance Methods

empty?() click to toggle source
# File lib/pretty_trace/structured_backtrace.rb, line 42
def empty?
  formatted_backtrace.empty?
end
formatted_backtrace() click to toggle source
# File lib/pretty_trace/structured_backtrace.rb, line 34
def formatted_backtrace
  structure.map(&:formatted_line)
end
structure() click to toggle source
# File lib/pretty_trace/structured_backtrace.rb, line 10
def structure
  filter = options[:filter] || []
  filter = [filter] unless filter.is_a? Array

  result = backtrace.dup

  unless ENV['PRETTY_TRACE'] == 'full'
    filter.each do |expression|
      result.reject! { |trace| trace =~ expression }
    end
  end

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

  if first_line and first_line.original_line != result[-1].original_line
    result.push first_line
  end

  result
end
to_s() click to toggle source
# File lib/pretty_trace/structured_backtrace.rb, line 38
def to_s
  formatted_backtrace.join "\n"
end

Private Instance Methods

should_trim?(backtrace) click to toggle source
# File lib/pretty_trace/structured_backtrace.rb, line 48
def should_trim?(backtrace)
  options[:trim] and ENV['PRETTY_TRACE'] != 'full' and backtrace.size > 3
end