Sha256: deeb85e33061b144e2792097a690ac3607a1f5128b15855ca6e2b245d4e28b21

Contents?: true

Size: 941 Bytes

Versions: 5

Compression:

Stored size: 941 Bytes

Contents

require 'ripl/rc/u'

module Ripl::Rc::StripBacktrace
  include Ripl::Rc::U

  # strip backtrace until ripl
  def format_error e
    return super if StripBacktrace.disabled?
    message, backtrace = get_error(e, U.strip_backtrace(e, @name))
    "#{message}\n  #{backtrace.join("\n  ")}"
  end

  def get_error e, backtrace=e.backtrace
    return super if StripBacktrace.disabled?
    ["#{e.class}: #{e.message}", backtrace]
  end

  module Imp
    def strip_backtrace e, name
      home(cwd(snip(e, name)))
    end

    def home b
      b.map{ |p| p.sub(ENV['HOME'], '~') }
    end

    def cwd b
      b.map{ |p| p.sub(Dir.pwd, '.') }
    end

    def snip e, name
      return [] if e.kind_of?(SyntaxError)
      e.backtrace[
        0..
        e.backtrace.rindex{ |l| l =~ /\(#{name}\):\d+:in `.+?'/ } || -1]
    end
  end
end

module Ripl::Rc::U; extend Ripl::Rc::StripBacktrace::Imp; end

Ripl::Shell.include(Ripl::Rc::StripBacktrace)

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ripl-rc-0.2.4 lib/ripl/rc/strip_backtrace.rb
ripl-rc-0.2.3 lib/ripl/rc/strip_backtrace.rb
ripl-rc-0.2.2 lib/ripl/rc/strip_backtrace.rb
ripl-rc-0.2.1 lib/ripl/rc/strip_backtrace.rb
ripl-rc-0.2.0 lib/ripl/rc/strip_backtrace.rb