class Batbugger::Backtrace::Line
Constants
- INPUT_FORMAT
Attributes
file[RW]
filtered_file[RW]
filtered_method[RW]
filtered_number[RW]
method[RW]
number[RW]
Public Class Methods
new(file, number, method, filtered_file = file, filtered_number = number, filtered_method = method)
click to toggle source
# File lib/batbugger/backtrace.rb, line 30 def initialize(file, number, method, filtered_file = file, filtered_number = number, filtered_method = method) self.filtered_file = filtered_file self.filtered_number = filtered_number self.filtered_method = filtered_method self.file = file self.number = number self.method = method end
parse(unparsed_line, opts = {})
click to toggle source
# File lib/batbugger/backtrace.rb, line 15 def self.parse(unparsed_line, opts = {}) filters = opts[:filters] || [] filtered_line = filters.inject(unparsed_line) do |line, proc| proc.call(line) end if filtered_line _, file, number, method = unparsed_line.match(INPUT_FORMAT).to_a _, *filtered_args = filtered_line.match(INPUT_FORMAT).to_a new(file, number, method, *filtered_args) else nil end end
Public Instance Methods
==(other)
click to toggle source
# File lib/batbugger/backtrace.rb, line 44 def ==(other) to_s == other.to_s end
application?()
click to toggle source
# File lib/batbugger/backtrace.rb, line 52 def application? (filtered_file =~ /^\[PROJECT_ROOT\]/i) && !(filtered_file =~ /^\[PROJECT_ROOT\]\/vendor/i) end
inspect()
click to toggle source
# File lib/batbugger/backtrace.rb, line 48 def inspect "<Line:#{to_s}>" end
source(radius = 2)
click to toggle source
# File lib/batbugger/backtrace.rb, line 56 def source(radius = 2) @source ||= get_source(file, number, radius) end
to_s()
click to toggle source
# File lib/batbugger/backtrace.rb, line 40 def to_s "#{filtered_file}:#{filtered_number}:in `#{filtered_method}'" end
Private Instance Methods
get_source(file, number, radius = 2)
click to toggle source
# File lib/batbugger/backtrace.rb, line 64 def get_source(file, number, radius = 2) if file && File.exists?(file) before = after = radius start = (number.to_i - 1) - before start = 0 and before = 1 if start <= 0 duration = before + 1 + after l = 0 File.open(file) do |f| start.times { f.gets ; l += 1 } return Hash[duration.times.map { (line = f.gets) ? [(l += 1), line] : nil }.compact] end else {} end end