class BetterErrors::REPL::Pry

Public Class Methods

new(binding) click to toggle source
# File lib/better_errors/repl/pry.rb, line 35
def initialize(binding)
  @fiber = Fiber.new do
    @pry.repl binding
  end
  @input = BetterErrors::REPL::Pry::Input.new
  @output = BetterErrors::REPL::Pry::Output.new
  @pry = ::Pry.new input: @input, output: @output
  @pry.hooks.clear_all if defined?(@pry.hooks.clear_all)
  @fiber.resume
end

Public Instance Methods

prompt() click to toggle source
# File lib/better_errors/repl/pry.rb, line 53
def prompt
  if indent = @pry.instance_variable_get(:@indent) and !indent.indent_level.empty?
    ["..", indent.indent_level]
  else
    [">>", ""]
  end
rescue
  [">>", ""]
end
send_input(str) click to toggle source
# File lib/better_errors/repl/pry.rb, line 46
def send_input(str)
  local ::Pry.config, color: false, pager: false do
    @fiber.resume "#{str}\n"
    [@output.read_buffer, *prompt]
  end
end

Private Instance Methods

local(obj, attrs) { || ... } click to toggle source
# File lib/better_errors/repl/pry.rb, line 64
def local(obj, attrs)
  old_attrs = {}
  attrs.each do |k, v|
    old_attrs[k] = obj.send k
    obj.send "#{k}=", v
  end
  yield
ensure
  old_attrs.each do |k, v|
    obj.send "#{k}=", v
  end
end