2011-06-09 02:49:35 +12:00
|
|
|
require 'pp'
|
2017-06-03 11:53:14 +01:00
|
|
|
require 'pry/forwardable'
|
2013-09-03 11:04:25 +03:00
|
|
|
require 'pry/input_lock'
|
|
|
|
require 'pry/exceptions'
|
|
|
|
require 'pry/helpers/base_helpers'
|
|
|
|
require 'pry/hooks'
|
2013-10-24 02:17:51 +03:00
|
|
|
|
2011-05-20 15:50:55 +01:00
|
|
|
class Pry
|
|
|
|
# The default hooks - display messages when beginning and ending Pry sessions.
|
2018-11-11 20:22:03 +08:00
|
|
|
DEFAULT_HOOKS = Pry::Hooks.new.add_hook(:before_session, :default) do |_out, _target, _pry_|
|
2012-03-31 14:18:03 -07:00
|
|
|
next if _pry_.quiet?
|
2018-10-14 09:44:58 -04:00
|
|
|
|
2012-12-18 00:26:51 -08:00
|
|
|
_pry_.run_command("whereami --quiet")
|
2011-10-17 14:09:12 +13:00
|
|
|
end
|
2011-05-20 15:50:55 +01:00
|
|
|
|
2011-09-08 14:17:41 +12:00
|
|
|
# The default print
|
2018-11-11 20:22:03 +08:00
|
|
|
DEFAULT_PRINT = proc do |_output, value, _pry_|
|
2014-04-30 02:08:29 -07:00
|
|
|
_pry_.pager.open do |pager|
|
2014-02-05 22:29:25 +09:00
|
|
|
pager.print _pry_.config.output_prefix
|
2013-11-09 12:53:39 -08:00
|
|
|
Pry::ColorPrinter.pp(value, pager, Pry::Terminal.width! - 1)
|
2013-11-03 16:35:33 -08:00
|
|
|
end
|
2011-05-20 15:50:55 +01:00
|
|
|
end
|
|
|
|
|
2011-09-07 19:56:23 +12:00
|
|
|
# may be convenient when working with enormous objects and
|
|
|
|
# pretty_print is too slow
|
|
|
|
SIMPLE_PRINT = proc do |output, value|
|
|
|
|
begin
|
2012-11-07 23:58:18 -08:00
|
|
|
output.puts value.inspect
|
2011-09-07 19:56:23 +12:00
|
|
|
rescue RescuableException
|
2012-11-07 23:58:18 -08:00
|
|
|
output.puts "unknown"
|
2011-09-07 19:56:23 +12:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2011-09-08 15:36:24 +12:00
|
|
|
# useful when playing with truly enormous objects
|
|
|
|
CLIPPED_PRINT = proc do |output, value|
|
2014-03-16 06:58:28 +01:00
|
|
|
output.puts Pry.view_clip(value, id: true)
|
2011-09-08 15:36:24 +12:00
|
|
|
end
|
|
|
|
|
2011-05-20 15:50:55 +01:00
|
|
|
# Will only show the first line of the backtrace
|
2011-09-11 04:39:51 +12:00
|
|
|
DEFAULT_EXCEPTION_HANDLER = proc do |output, exception, _|
|
2013-01-12 11:26:02 -08:00
|
|
|
if UserError === exception && SyntaxError === exception
|
|
|
|
output.puts "SyntaxError: #{exception.message.sub(/.*syntax error, */m, '')}"
|
|
|
|
else
|
|
|
|
output.puts "#{exception.class}: #{exception.message}"
|
|
|
|
output.puts "from #{exception.backtrace.first}"
|
2016-03-01 23:59:30 +02:00
|
|
|
|
|
|
|
if exception.respond_to? :cause
|
|
|
|
cause = exception.cause
|
|
|
|
while cause
|
|
|
|
output.puts "Caused by #{cause.class}: #{cause}\n"
|
|
|
|
output.puts "from #{cause.backtrace.first}"
|
|
|
|
cause = cause.cause
|
|
|
|
end
|
|
|
|
end
|
2013-01-12 11:26:02 -08:00
|
|
|
end
|
2011-05-20 15:50:55 +01:00
|
|
|
end
|
|
|
|
|
2012-12-15 03:23:24 +02:00
|
|
|
# Deal with the ^D key being pressed. Different behaviour in different cases:
|
|
|
|
# 1. In an expression behave like `!` command.
|
|
|
|
# 2. At top-level session behave like `exit` command.
|
|
|
|
# 3. In a nested session behave like `cd ..`.
|
2011-09-28 03:25:09 +13:00
|
|
|
DEFAULT_CONTROL_D_HANDLER = proc do |eval_string, _pry_|
|
|
|
|
if !eval_string.empty?
|
2012-12-15 03:23:24 +02:00
|
|
|
eval_string.replace('') # Clear input buffer.
|
2011-09-28 03:25:09 +13:00
|
|
|
elsif _pry_.binding_stack.one?
|
|
|
|
_pry_.binding_stack.clear
|
|
|
|
throw(:breakout)
|
|
|
|
else
|
2012-06-27 14:54:07 +03:00
|
|
|
# Otherwise, saves current binding stack as old stack and pops last
|
|
|
|
# binding out of binding stack (the old stack still has that binding).
|
2018-11-20 10:46:08 +01:00
|
|
|
_pry_.command_state["cd"] ||= Pry::Config.from_hash({})
|
2012-12-15 03:23:24 +02:00
|
|
|
_pry_.command_state['cd'].old_stack = _pry_.binding_stack.dup
|
2012-06-27 14:54:07 +03:00
|
|
|
_pry_.binding_stack.pop
|
2011-09-28 03:25:09 +13:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2011-09-18 00:42:29 +12:00
|
|
|
DEFAULT_SYSTEM = proc do |output, cmd, _|
|
2019-03-02 02:03:35 +02:00
|
|
|
output.puts "Error: there was a problem executing system command: #{cmd}" if !system(cmd)
|
2011-09-17 18:35:17 +12:00
|
|
|
end
|
2011-05-20 15:50:55 +01:00
|
|
|
|
2012-01-22 22:33:34 -08:00
|
|
|
# This is to keep from breaking under Rails 3.2 for people who are doing that
|
|
|
|
# IRB = Pry thing.
|
2013-09-03 11:04:25 +03:00
|
|
|
module ExtendCommandBundle; end
|
2012-04-18 18:18:33 +12:00
|
|
|
end
|
|
|
|
|
2012-08-18 21:18:54 +00:00
|
|
|
require 'method_source'
|
2011-03-03 00:18:26 +13:00
|
|
|
require 'shellwords'
|
2012-08-18 21:18:54 +00:00
|
|
|
require 'stringio'
|
2015-03-02 16:58:40 -05:00
|
|
|
require 'strscan'
|
2012-08-18 21:18:54 +00:00
|
|
|
require 'coderay'
|
2015-12-11 06:04:54 +00:00
|
|
|
require 'pry/slop'
|
2012-08-18 21:18:54 +00:00
|
|
|
require 'rbconfig'
|
2012-08-11 17:22:29 -07:00
|
|
|
require 'tempfile'
|
2013-02-17 20:43:07 -08:00
|
|
|
require 'pathname'
|
2011-03-03 00:18:26 +13:00
|
|
|
|
2012-08-18 21:18:54 +00:00
|
|
|
require 'pry/version'
|
2019-02-27 02:22:32 +02:00
|
|
|
require 'pry/last_exception'
|
2018-11-22 17:37:22 +01:00
|
|
|
require 'pry/input_completer'
|
2012-12-21 00:02:13 -08:00
|
|
|
require 'pry/repl'
|
2012-08-18 21:18:54 +00:00
|
|
|
require 'pry/code'
|
2018-10-19 22:03:41 +08:00
|
|
|
require 'pry/ring'
|
2012-08-18 21:18:54 +00:00
|
|
|
require 'pry/helpers'
|
2012-12-25 13:47:33 +01:00
|
|
|
require 'pry/code_object'
|
|
|
|
require 'pry/method'
|
|
|
|
require 'pry/wrapped_module'
|
2012-08-18 21:18:54 +00:00
|
|
|
require 'pry/history'
|
|
|
|
require 'pry/command'
|
|
|
|
require 'pry/command_set'
|
|
|
|
require 'pry/commands'
|
|
|
|
require 'pry/plugins'
|
|
|
|
require 'pry/core_extensions'
|
2018-10-28 17:45:29 +08:00
|
|
|
require 'pry/basic_object'
|
2018-11-11 04:20:45 +08:00
|
|
|
require "pry/prompt"
|
2018-11-18 01:31:33 +01:00
|
|
|
require 'pry/config/lazy'
|
2018-10-28 17:45:29 +08:00
|
|
|
require 'pry/config/behavior'
|
|
|
|
require 'pry/config/convenience'
|
|
|
|
require 'pry/config'
|
2012-08-18 21:18:54 +00:00
|
|
|
require 'pry/pry_class'
|
|
|
|
require 'pry/pry_instance'
|
|
|
|
require 'pry/cli'
|
2013-10-28 21:36:00 -07:00
|
|
|
require 'pry/color_printer'
|
2012-08-18 21:18:54 +00:00
|
|
|
require 'pry/pager'
|
2013-01-30 21:14:06 -06:00
|
|
|
require 'pry/terminal'
|
2012-12-29 23:34:59 +01:00
|
|
|
require 'pry/editor'
|
2013-01-09 00:24:53 +02:00
|
|
|
require 'pry/rubygem'
|
2014-01-20 09:20:28 +01:00
|
|
|
require "pry/indent"
|
2014-03-19 17:13:20 +01:00
|
|
|
require "pry/inspector"
|
2014-04-27 17:28:56 -07:00
|
|
|
require 'pry/object_path'
|
2014-05-01 01:10:10 -07:00
|
|
|
require 'pry/output'
|