class Pry::Testable::PryTester

Attributes

out[R]
pry[R]

Public Class Methods

new(target = TOPLEVEL_BINDING, options = {}) click to toggle source
# File lib/pry/testable/pry_tester.rb, line 12
def initialize(target = TOPLEVEL_BINDING, options = {})
  @pry = Pry.new(options.merge(target: target))
  @history = options[:history]
  @pry.inject_sticky_locals!
  reset_output
end

Public Instance Methods

eval(*strs) click to toggle source
# File lib/pry/testable/pry_tester.rb, line 19
def eval(*strs)
  reset_output
  result = nil

  strs.flatten.each do |str|
    # Check for space prefix. See #1369.
    str = "#{str.strip}\n" if str !~ /^\s\S/
    @history.push str if @history

    result =
      if @pry.process_command(str)
        last_command_result_or_output
      else
        # Check if this is a multiline paste.
        begin
          complete_expr = Pry::Code.complete_expression?(str)
        rescue SyntaxError => exception
          @pry.output.puts(
            "SyntaxError: #{exception.message.sub(/.*syntax error, */m, '')}"
          )
        end
        @pry.evaluate_ruby(str) if complete_expr
      end
  end

  result
end
last_command_result() click to toggle source
# File lib/pry/testable/pry_tester.rb, line 66
def last_command_result
  result = Pry.current[:pry_cmd_result]
  result.retval if result
end
last_output() click to toggle source
# File lib/pry/testable/pry_tester.rb, line 57
def last_output
  @out.string if @out
end
process_command(command_str) click to toggle source
# File lib/pry/testable/pry_tester.rb, line 61
def process_command(command_str)
  @pry.process_command(command_str) || raise("Not a valid command")
  last_command_result_or_output
end
push(*lines) click to toggle source
# File lib/pry/testable/pry_tester.rb, line 47
def push(*lines)
  Array(lines).flatten.each do |line|
    @pry.eval(line)
  end
end
push_binding(context) click to toggle source
# File lib/pry/testable/pry_tester.rb, line 53
def push_binding(context)
  @pry.push_binding context
end

Protected Instance Methods

last_command_result_or_output() click to toggle source
# File lib/pry/testable/pry_tester.rb, line 73
def last_command_result_or_output
  result = last_command_result
  if result != Pry::Command::VOID_VALUE
    result
  else
    last_output
  end
end
reset_output() click to toggle source
# File lib/pry/testable/pry_tester.rb, line 82
def reset_output
  @out = StringIO.new
  @pry.output = @out
end