# class Raven::Backtrace::Line

Handles backtrace parsing line by line

### Constants

APP_DIRS_PATTERN
JAVA_INPUT_FORMAT

  org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)

RUBY_INPUT_FORMAT

  regexp (optionnally allowing leading X: for windows support)

### Attributes

file[RW]

The file portion of the line (such as app/models/user.rb)

method[RW]

The method of the line (such as index)

module_name[RW]

The module name (JRuby)

number[RW]

The line number portion of the line

### Public Class Methods

new(file, number, method, module_name) click to toggle source

    # File lib/raven/backtrace.rb, line 44
    def initialize(file, number, method, module_name)
      self.file = file
      self.module_name = module_name
      self.number = number.to_i
      self.method = method
    end

parse(unparsed_line) click to toggle source

Parses a single line of a given backtrace @param [String] unparsed_line The raw line from `caller` or some backtrace @return [Line] The parsed backtrace line

    # File lib/raven/backtrace.rb, line 32
    def self.parse(unparsed_line)
      ruby_match = unparsed_line.match(RUBY_INPUT_FORMAT)
      if ruby_match
        _, file, number, method = ruby_match.to_a
        module_name = nil
      else
        java_match = unparsed_line.match(JAVA_INPUT_FORMAT)
        _, module_name, method, file, number = java_match.to_a
      end
      new(file, number, method, module_name)
    end

### Public Instance Methods

==(other) click to toggle source

    # File lib/raven/backtrace.rb, line 71
    def ==(other)
      to_s == other.to_s
    end

in_app() click to toggle source

    # File lib/raven/backtrace.rb, line 51
    def in_app
      app_dirs = Raven.configuration.app_dirs_pattern || APP_DIRS_PATTERN
      @in_app_pattern ||= Regexp.new("^(#{project_root}/)?#{app_dirs}")

      if self.file =~ @in_app_pattern
        true
      else
        false
      end
    end

inspect() click to toggle source

    # File lib/raven/backtrace.rb, line 75
    def inspect
      "<Line:#{self}>"
    end

project_root() click to toggle source

    # File lib/raven/backtrace.rb, line 62
    def project_root
      @project_root ||= Raven.configuration.project_root && Raven.configuration.project_root.to_s
    end

to_s() click to toggle source

Reconstructs the line in a readable fashion

    # File lib/raven/backtrace.rb, line 67
    def to_s
      "#{file}:#{number}:in `#{method}'"
    end