Sha256: 2619db3a04314e84c42de7689aa122286d8f45ea387e101e525d6f6cc3e1b5ac

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

module Byebug

  class << self

    # interface modules provide +handler+ object
    attr_accessor :handler

  end

  class Context
    def frame_args frame_no = 0
      bind = frame_binding frame_no
      return [] unless eval "__method__", bind
      begin
        eval "self.method(__method__).parameters.map{|(attr, mid)| mid}", bind
      rescue NameError => e
        print "(WARNING: retreving args from frame #{frame_no} => " \
              "#{e.class} Exception: #{e.message})\n     "
        return []
      end
    end

    def frame_locals frame_no = 0
      bind = frame_binding frame_no
      eval "local_variables.inject({}){|h, v| h[v] = eval(v.to_s); h}", bind
    end

    def frame_args_info
      bind = frame_binding frame_no
      return [] unless eval "__method__", bind
      eval "self.method(__method__).parameters", bind
    end

    def handler
      Byebug.handler or raise 'No interface loaded'
    end

    def at_breakpoint(breakpoint)
      handler.at_breakpoint(self, breakpoint)
    end

    def at_catchpoint(excpt)
      handler.at_catchpoint(self, excpt)
    end

    def at_tracing(file, line)
      handler.at_tracing(self, file, line)
    end

    def at_line(file, line)
      handler.at_line(self, file, line) unless
        defined?(Byebug::BYEBUG_SCRIPT) and
        File.identical?(file, Byebug::BYEBUG_SCRIPT)
    end

    #def at_return(file, line)
    #  handler.at_return(self, file, line)
    #end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
byebug-1.3.1 lib/byebug/context.rb