class Skiptrace::BindingLocations

Public Class Methods

new(locations, bindings) click to toggle source
# File lib/skiptrace/binding_locations.rb, line 3
def initialize(locations, bindings)
  @locations = locations
  @bindings = bindings
  @cached_locations = {}
end

Private Instance Methods

cached_location(location) click to toggle source
# File lib/skiptrace/binding_locations.rb, line 11
def cached_location(location)
  @cached_locations[location.to_s] ||= Location.new(location, guess_binding_around(location))
end
guess_binding_around(location) click to toggle source
# File lib/skiptrace/binding_locations.rb, line 15
def guess_binding_around(location)
  location && @bindings.find do |binding|
    binding.source_location == [location.path, location.lineno]
  end
end
method_missing(name, *args, &block) click to toggle source
# File lib/skiptrace/binding_locations.rb, line 21
def method_missing(name, *args, &block)
  case maybe_location = @locations.public_send(name, *args, &block)
  when ::Thread::Backtrace::Location
    cached_location(maybe_location)
  else
    maybe_location
  end
end
respond_to_missing?(name, include_all = false) click to toggle source
# File lib/skiptrace/binding_locations.rb, line 30
def respond_to_missing?(name, include_all = false)
  @locations.respond_to?(name, include_all)
end