Module: Rib::Caller::Imp

Included in:
Rib
Defined in:
lib/rib/more/caller.rb

Instance Method Summary collapse

Instance Method Details

#caller(*filters) ⇒ Object



9
10
11
12
13
# File 'lib/rib/more/caller.rb', line 9

def caller *filters
  return if Rib::Caller.disabled?

  display_backtrace(super().drop(1), *filters)
end

#display_backtrace(raw_backtrace, *filters) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/rib/more/caller.rb', line 15

def display_backtrace raw_backtrace, *filters
  backtrace = Rib.shell.format_backtrace(raw_backtrace)

  lib = %r{\brib-#{Rib::VERSION}/lib/rib/}
  if backtrace.first =~ lib
    backtrace.shift while backtrace.first =~ lib
  elsif backtrace.last =~ lib
    backtrace.pop while backtrace.last =~ lib
  end

  result = filters.map do |f|
    case f
    when Regexp
      f
    when String
      %r{\bgems/#{Regexp.escape(f)}\-[\d\.]+/lib/}
    end
  end.inject(backtrace, &:grep_v)

  Rib.shell.puts result.map{ |l| "  #{l}" }.join("\n")

  Rib::Skip
end