pry 0.11.3-java → 0.12.0-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +139 -1
- data/LICENSE +1 -1
- data/README.md +13 -30
- data/bin/pry +0 -4
- data/lib/pry.rb +17 -47
- data/lib/pry/cli.rb +17 -24
- data/lib/pry/code.rb +6 -6
- data/lib/pry/code/code_file.rb +5 -4
- data/lib/pry/code/code_range.rb +3 -3
- data/lib/pry/code/loc.rb +14 -8
- data/lib/pry/code_object.rb +4 -4
- data/lib/pry/color_printer.rb +1 -0
- data/lib/pry/command.rb +36 -29
- data/lib/pry/command_set.rb +17 -52
- data/lib/pry/commands/amend_line.rb +3 -4
- data/lib/pry/commands/bang.rb +1 -1
- data/lib/pry/commands/cat.rb +7 -6
- data/lib/pry/commands/cat/exception_formatter.rb +9 -8
- data/lib/pry/commands/cat/input_expression_formatter.rb +1 -1
- data/lib/pry/commands/change_prompt.rb +29 -9
- data/lib/pry/commands/clear_screen.rb +14 -0
- data/lib/pry/commands/code_collector.rb +9 -9
- data/lib/pry/commands/easter_eggs.rb +3 -3
- data/lib/pry/commands/edit.rb +8 -7
- data/lib/pry/commands/exit.rb +2 -1
- data/lib/pry/commands/find_method.rb +11 -13
- data/lib/pry/commands/gem_cd.rb +1 -1
- data/lib/pry/commands/gem_install.rb +2 -2
- data/lib/pry/commands/gem_list.rb +2 -2
- data/lib/pry/commands/gem_open.rb +1 -1
- data/lib/pry/commands/gem_search.rb +2 -2
- data/lib/pry/commands/gem_stats.rb +83 -0
- data/lib/pry/commands/gist.rb +7 -6
- data/lib/pry/commands/help.rb +3 -3
- data/lib/pry/commands/hist.rb +9 -8
- data/lib/pry/commands/import_set.rb +2 -1
- data/lib/pry/commands/install_command.rb +7 -6
- data/lib/pry/commands/list_inspectors.rb +2 -2
- data/lib/pry/commands/ls.rb +27 -30
- data/lib/pry/commands/ls/constants.rb +4 -4
- data/lib/pry/commands/ls/formatter.rb +3 -2
- data/lib/pry/commands/ls/globals.rb +0 -2
- data/lib/pry/commands/ls/grep.rb +0 -2
- data/lib/pry/commands/ls/instance_vars.rb +0 -1
- data/lib/pry/commands/ls/local_names.rb +0 -2
- data/lib/pry/commands/ls/local_vars.rb +0 -2
- data/lib/pry/commands/ls/ls_entity.rb +0 -1
- data/lib/pry/commands/ls/methods.rb +0 -3
- data/lib/pry/commands/ls/methods_helper.rb +1 -1
- data/lib/pry/commands/ls/self_methods.rb +0 -1
- data/lib/pry/commands/play.rb +1 -2
- data/lib/pry/commands/pry_backtrace.rb +1 -1
- data/lib/pry/commands/raise_up.rb +2 -1
- data/lib/pry/commands/ri.rb +5 -4
- data/lib/pry/commands/shell_command.rb +3 -2
- data/lib/pry/commands/shell_mode.rb +6 -6
- data/lib/pry/commands/show_doc.rb +5 -7
- data/lib/pry/commands/show_info.rb +25 -18
- data/lib/pry/commands/show_source.rb +5 -2
- data/lib/pry/commands/stat.rb +1 -1
- data/lib/pry/commands/watch_expression.rb +9 -7
- data/lib/pry/commands/whereami.rb +4 -4
- data/lib/pry/commands/wtf.rb +15 -2
- data/lib/pry/config.rb +33 -9
- data/lib/pry/config/behavior.rb +229 -205
- data/lib/pry/config/convenience.rb +24 -21
- data/lib/pry/config/default.rb +153 -143
- data/lib/pry/config/memoization.rb +41 -37
- data/lib/pry/core_extensions.rb +4 -3
- data/lib/pry/editor.rb +5 -12
- data/lib/pry/exceptions.rb +0 -2
- data/lib/pry/helpers.rb +1 -0
- data/lib/pry/helpers/base_helpers.rb +133 -4
- data/lib/pry/helpers/command_helpers.rb +5 -4
- data/lib/pry/helpers/documentation_helpers.rb +2 -2
- data/lib/pry/helpers/options_helpers.rb +5 -5
- data/lib/pry/helpers/platform.rb +58 -0
- data/lib/pry/helpers/table.rb +20 -15
- data/lib/pry/helpers/text.rb +3 -4
- data/lib/pry/history.rb +21 -8
- data/lib/pry/hooks.rb +3 -3
- data/lib/pry/indent.rb +15 -17
- data/lib/pry/input_completer.rb +12 -7
- data/lib/pry/input_lock.rb +0 -2
- data/lib/pry/last_exception.rb +1 -1
- data/lib/pry/method.rb +37 -31
- data/lib/pry/method/disowned.rb +2 -1
- data/lib/pry/method/patcher.rb +2 -2
- data/lib/pry/method/weird_method_locator.rb +7 -8
- data/lib/pry/object_path.rb +5 -4
- data/lib/pry/output.rb +3 -2
- data/lib/pry/pager.rb +4 -3
- data/lib/pry/platform.rb +79 -81
- data/lib/pry/plugins.rb +7 -3
- data/lib/pry/prompt.rb +144 -25
- data/lib/pry/pry_class.rb +53 -29
- data/lib/pry/pry_instance.rb +88 -55
- data/lib/pry/repl.rb +33 -4
- data/lib/pry/repl_file_loader.rb +1 -2
- data/lib/pry/ring.rb +84 -0
- data/lib/pry/rubygem.rb +6 -6
- data/lib/pry/slop.rb +17 -17
- data/lib/pry/slop/commands.rb +3 -4
- data/lib/pry/slop/option.rb +19 -21
- data/lib/pry/terminal.rb +2 -1
- data/lib/pry/testable/mockable.rb +2 -2
- data/lib/pry/testable/pry_tester.rb +1 -1
- data/lib/pry/testable/utility.rb +2 -2
- data/lib/pry/testable/variables.rb +1 -1
- data/lib/pry/version.rb +1 -1
- data/lib/pry/wrapped_module.rb +15 -15
- data/lib/pry/wrapped_module/candidate.rb +2 -2
- metadata +19 -31
- data/lib/pry/commands/list_prompts.rb +0 -35
- data/lib/pry/commands/simple_prompt.rb +0 -22
- data/lib/pry/history_array.rb +0 -121
- data/lib/pry/rbx_path.rb +0 -22
data/lib/pry/pry_class.rb
CHANGED
@@ -1,7 +1,16 @@
|
|
1
|
-
require 'pry/config'
|
2
1
|
class Pry
|
3
|
-
|
4
|
-
|
2
|
+
HOME_RC_FILE =
|
3
|
+
if ENV.key?('PRYRC')
|
4
|
+
ENV['PRYRC']
|
5
|
+
elsif File.exist?(File.expand_path('~/.pryrc'))
|
6
|
+
'~/.pryrc'
|
7
|
+
elsif ENV.key?('XDG_CONFIG_HOME') && ENV['XDG_CONFIG_HOME'] != ''
|
8
|
+
# See XDG Base Directory Specification at
|
9
|
+
# https://standards.freedesktop.org/basedir-spec/basedir-spec-0.8.html
|
10
|
+
ENV['XDG_CONFIG_HOME'] + '/pry/pryrc'
|
11
|
+
else
|
12
|
+
'~/.config/pry/pryrc'
|
13
|
+
end
|
5
14
|
LOCAL_RC_FILE = "./.pryrc"
|
6
15
|
|
7
16
|
class << self
|
@@ -93,9 +102,7 @@ class Pry
|
|
93
102
|
|
94
103
|
# Expand a file to its canonical name (following symlinks as appropriate)
|
95
104
|
def self.real_path_to(file)
|
96
|
-
|
97
|
-
# For rbx 1.9 mode [see rubinius issue #2165]
|
98
|
-
File.exist?(expanded) ? expanded : nil
|
105
|
+
Pathname.new(File.expand_path(file)).realpath.to_s
|
99
106
|
rescue Errno::ENOENT, Errno::EACCES
|
100
107
|
nil
|
101
108
|
end
|
@@ -110,7 +117,7 @@ class Pry
|
|
110
117
|
# Trap interrupts on jruby, and make them behave like MRI so we can
|
111
118
|
# catch them.
|
112
119
|
def self.load_traps
|
113
|
-
trap('INT'){ raise Interrupt }
|
120
|
+
trap('INT') { raise Interrupt }
|
114
121
|
end
|
115
122
|
|
116
123
|
def self.load_win32console
|
@@ -124,16 +131,16 @@ class Pry
|
|
124
131
|
For a better Pry experience on Windows, please use ansicon:
|
125
132
|
https://github.com/adoxa/ansicon
|
126
133
|
If you use an alternative to ansicon and don't want to see this warning again,
|
127
|
-
you can add "Pry.config.windows_console_warning = false" to your
|
134
|
+
you can add "Pry.config.windows_console_warning = false" to your pryrc.
|
128
135
|
WARNING
|
129
136
|
end
|
130
137
|
end
|
131
138
|
|
132
|
-
# Do basic setup for initial session
|
133
|
-
#
|
134
|
-
# loading history.
|
139
|
+
# Do basic setup for initial session including: loading pryrc, plugins,
|
140
|
+
# requires, and history.
|
135
141
|
def self.initial_session_setup
|
136
142
|
return unless initial_session?
|
143
|
+
|
137
144
|
@initial_session = false
|
138
145
|
|
139
146
|
# note these have to be loaded here rather than in pry_instance as
|
@@ -143,27 +150,28 @@ you can add "Pry.config.windows_console_warning = false" to your .pryrc.
|
|
143
150
|
|
144
151
|
def self.final_session_setup
|
145
152
|
return if @session_finalized
|
153
|
+
|
146
154
|
@session_finalized = true
|
147
155
|
load_plugins if Pry.config.should_load_plugins
|
148
156
|
load_requires if Pry.config.should_load_requires
|
149
157
|
load_history if Pry.config.history.should_load
|
150
158
|
load_traps if Pry.config.should_trap_interrupts
|
151
|
-
load_win32console if
|
159
|
+
load_win32console if Helpers::Platform.windows? && !Helpers::Platform.windows_ansi?
|
152
160
|
end
|
153
161
|
|
154
162
|
# Start a Pry REPL.
|
155
|
-
# This method also loads
|
156
|
-
# first time it is invoked.
|
163
|
+
# This method also loads `pryrc` as necessary the first time it is invoked.
|
157
164
|
# @param [Object, Binding] target The receiver of the Pry session
|
158
165
|
# @param [Hash] options
|
159
166
|
# @option options (see Pry#initialize)
|
160
167
|
# @example
|
161
168
|
# Pry.start(Object.new, :input => MyInput.new)
|
162
|
-
def self.start(target=nil, options={})
|
169
|
+
def self.start(target = nil, options = {})
|
163
170
|
return if ENV['DISABLE_PRY']
|
164
171
|
if ENV['FAIL_PRY']
|
165
172
|
raise 'You have FAIL_PRY set to true, which results in Pry calls failing'
|
166
173
|
end
|
174
|
+
|
167
175
|
options = options.to_hash
|
168
176
|
|
169
177
|
if in_critical_section?
|
@@ -231,7 +239,7 @@ you can add "Pry.config.windows_console_warning = false" to your .pryrc.
|
|
231
239
|
# fixed as of https://github.com/jruby/jruby/commit/d365ebd309cf9df3dde28f5eb36ea97056e0c039
|
232
240
|
# we can drop in the future.
|
233
241
|
obj.to_s
|
234
|
-
elsif Pry.config.
|
242
|
+
elsif Pry.config.prompt_safe_contexts.any? { |v| v === obj } && obj.inspect.length <= max
|
235
243
|
obj.inspect
|
236
244
|
else
|
237
245
|
id == true ? "#<#{obj.class}:0x%x>" % (obj.object_id << 1) : "#<#{obj.class}>"
|
@@ -267,19 +275,19 @@ you can add "Pry.config.windows_console_warning = false" to your .pryrc.
|
|
267
275
|
# Pry.run_command "ls -m", :target => Pry
|
268
276
|
# @example Display command output.
|
269
277
|
# Pry.run_command "ls -av", :show_output => true
|
270
|
-
def self.run_command(command_string, options={})
|
278
|
+
def self.run_command(command_string, options = {})
|
271
279
|
options = {
|
272
|
-
:
|
273
|
-
:
|
274
|
-
:
|
275
|
-
:
|
280
|
+
target: TOPLEVEL_BINDING,
|
281
|
+
show_output: true,
|
282
|
+
output: Pry.config.output,
|
283
|
+
commands: Pry.config.commands
|
276
284
|
}.merge!(options)
|
277
285
|
|
278
286
|
# :context for compatibility with <= 0.9.11.4
|
279
287
|
target = options[:context] || options[:target]
|
280
288
|
output = options[:show_output] ? options[:output] : StringIO.new
|
281
289
|
|
282
|
-
pry = Pry.new(:
|
290
|
+
pry = Pry.new(output: output, target: target, commands: options[:commands])
|
283
291
|
pry.eval command_string
|
284
292
|
nil
|
285
293
|
end
|
@@ -287,12 +295,10 @@ you can add "Pry.config.windows_console_warning = false" to your .pryrc.
|
|
287
295
|
def self.default_editor_for_platform
|
288
296
|
return ENV['VISUAL'] if ENV['VISUAL'] and not ENV['VISUAL'].empty?
|
289
297
|
return ENV['EDITOR'] if ENV['EDITOR'] and not ENV['EDITOR'].empty?
|
290
|
-
if Helpers::
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
system("which #{editor} > /dev/null 2>&1")
|
295
|
-
end
|
298
|
+
return 'notepad' if Helpers::Platform.windows?
|
299
|
+
|
300
|
+
%w(editor nano vi).detect do |editor|
|
301
|
+
system("which #{editor} > /dev/null 2>&1")
|
296
302
|
end
|
297
303
|
end
|
298
304
|
|
@@ -389,13 +395,31 @@ Readline version #{Readline::VERSION} detected - will not auto_resize! correctly
|
|
389
395
|
Thread.current[:pry_critical_section] > 0
|
390
396
|
end
|
391
397
|
|
392
|
-
def self.critical_section
|
398
|
+
def self.critical_section
|
393
399
|
Thread.current[:pry_critical_section] ||= 0
|
394
400
|
Thread.current[:pry_critical_section] += 1
|
395
401
|
yield
|
396
402
|
ensure
|
397
403
|
Thread.current[:pry_critical_section] -= 1
|
398
404
|
end
|
405
|
+
|
406
|
+
# Wraps a block in a named block called `Pry::Config::Lazy`. This is used for
|
407
|
+
# dynamic config values, which are calculated every time
|
408
|
+
# {Pry::Config::Lazy#call} is called.
|
409
|
+
#
|
410
|
+
# @example
|
411
|
+
# # pryrc
|
412
|
+
# Pry.config.prompt_name = Pry.lazy { rand(100) }
|
413
|
+
#
|
414
|
+
# # Session
|
415
|
+
# [1] 96(main)>
|
416
|
+
# [2] 19(main)>
|
417
|
+
# [3] 80(main)>
|
418
|
+
#
|
419
|
+
# @return [#call]
|
420
|
+
def self.lazy(&block)
|
421
|
+
Pry::Config::Lazy.new(&block)
|
422
|
+
end
|
399
423
|
end
|
400
424
|
|
401
425
|
Pry.init
|
data/lib/pry/pry_instance.rb
CHANGED
@@ -21,6 +21,7 @@
|
|
21
21
|
# * the IRC channel, which is #pry on the Freenode network
|
22
22
|
#
|
23
23
|
|
24
|
+
# rubocop:disable Metrics/ClassLength
|
24
25
|
class Pry
|
25
26
|
attr_accessor :binding_stack
|
26
27
|
attr_accessor :custom_completions
|
@@ -34,8 +35,13 @@ class Pry
|
|
34
35
|
attr_reader :last_exception
|
35
36
|
attr_reader :command_state
|
36
37
|
attr_reader :exit_value
|
37
|
-
|
38
|
-
|
38
|
+
|
39
|
+
# @since v0.12.0
|
40
|
+
attr_reader :input_ring
|
41
|
+
|
42
|
+
# @since v0.12.0
|
43
|
+
attr_reader :output_ring
|
44
|
+
|
39
45
|
attr_reader :config
|
40
46
|
|
41
47
|
extend Pry::Config::Convenience
|
@@ -62,7 +68,7 @@ class Pry
|
|
62
68
|
# The backtrace of the session's `binding.pry` line, if applicable.
|
63
69
|
# @option options [Object] :target
|
64
70
|
# The initial context for this session.
|
65
|
-
def initialize(options={})
|
71
|
+
def initialize(options = {})
|
66
72
|
@binding_stack = []
|
67
73
|
@indent = Pry::Indent.new
|
68
74
|
@command_state = {}
|
@@ -72,23 +78,47 @@ class Pry
|
|
72
78
|
@config = Pry::Config.new
|
73
79
|
config.merge!(options)
|
74
80
|
push_prompt(config.prompt)
|
75
|
-
@
|
76
|
-
@
|
81
|
+
@input_ring = Pry::Ring.new(config.memory_size)
|
82
|
+
@output_ring = Pry::Ring.new(config.memory_size)
|
77
83
|
@custom_completions = config.command_completions
|
78
84
|
set_last_result nil
|
79
|
-
@
|
85
|
+
@input_ring << nil
|
80
86
|
push_initial_binding(target)
|
81
87
|
exec_hook(:when_started, target, options, self)
|
82
88
|
end
|
83
89
|
|
84
|
-
|
90
|
+
@input_array_warn = false
|
91
|
+
# @deprecated Use {#input_ring} instead.
|
92
|
+
def input_array
|
93
|
+
unless @input_array_warn
|
94
|
+
loc = caller_locations(1..1).first
|
95
|
+
warn(
|
96
|
+
"#{loc.path}:#{loc.lineno}: warning: method #{self.class}##{__method__} " \
|
97
|
+
"is deprecated. Use #{self.class}#input_ring instead"
|
98
|
+
)
|
99
|
+
@input_array_warn = true
|
100
|
+
end
|
101
|
+
|
102
|
+
@input_ring
|
103
|
+
end
|
104
|
+
|
105
|
+
@output_array_warn = false
|
106
|
+
# @deprecated Use {#output_ring} instead.
|
107
|
+
def output_array
|
108
|
+
unless @output_array_warn
|
109
|
+
loc = caller_locations(1..1).first
|
110
|
+
warn(
|
111
|
+
"#{loc.path}:#{loc.lineno}: warning: method #{self.class}##{__method__} " \
|
112
|
+
"is deprecated. Use #{self.class}#output_ring instead"
|
113
|
+
)
|
114
|
+
@output_array_warn = true
|
115
|
+
end
|
116
|
+
|
117
|
+
@output_ring
|
118
|
+
end
|
119
|
+
|
85
120
|
# This is the prompt at the top of the prompt stack.
|
86
|
-
#
|
87
|
-
# @example
|
88
|
-
# self.prompt = Pry::SIMPLE_PROMPT
|
89
|
-
# self.prompt # => Pry::SIMPLE_PROMPT
|
90
|
-
#
|
91
|
-
# @return [Array<Proc>] Current prompt.
|
121
|
+
# @return [Array<Proc>] the current prompt
|
92
122
|
def prompt
|
93
123
|
prompt_stack.last
|
94
124
|
end
|
@@ -103,7 +133,7 @@ class Pry
|
|
103
133
|
|
104
134
|
# Initialize this instance by pushing its initial context into the binding
|
105
135
|
# stack. If no target is given, start at the top level.
|
106
|
-
def push_initial_binding(target=nil)
|
136
|
+
def push_initial_binding(target = nil)
|
107
137
|
push_binding(target || Pry.toplevel_binding)
|
108
138
|
end
|
109
139
|
|
@@ -132,6 +162,7 @@ class Pry
|
|
132
162
|
#
|
133
163
|
def complete(str)
|
134
164
|
return EMPTY_COMPLETIONS unless config.completer
|
165
|
+
|
135
166
|
Pry.critical_section do
|
136
167
|
completer = config.completer.new(config.input, self)
|
137
168
|
completer.call str, target: current_binding, custom_completions: custom_completions.call.push(*sticky_locals.keys)
|
@@ -171,13 +202,13 @@ class Pry
|
|
171
202
|
# @return [Integer] The maximum amount of objects remembered by the inp and
|
172
203
|
# out arrays. Defaults to 100.
|
173
204
|
def memory_size
|
174
|
-
@
|
205
|
+
@output_ring.max_size
|
175
206
|
end
|
176
207
|
|
177
208
|
undef :memory_size= if method_defined? :memory_size=
|
178
209
|
def memory_size=(size)
|
179
|
-
@
|
180
|
-
@
|
210
|
+
@input_ring = Pry::Ring.new(size)
|
211
|
+
@output_ring = Pry::Ring.new(size)
|
181
212
|
end
|
182
213
|
|
183
214
|
# Inject all the sticky locals into the current binding.
|
@@ -197,14 +228,14 @@ class Pry
|
|
197
228
|
end
|
198
229
|
|
199
230
|
def sticky_locals
|
200
|
-
{ _in_:
|
201
|
-
_out_:
|
231
|
+
{ _in_: input_ring,
|
232
|
+
_out_: output_ring,
|
202
233
|
_pry_: self,
|
203
234
|
_ex_: last_exception && last_exception.wrapped_exception,
|
204
235
|
_file_: last_file,
|
205
236
|
_dir_: last_dir,
|
206
237
|
_: proc { last_result },
|
207
|
-
__: proc {
|
238
|
+
__: proc { output_ring[-2] }
|
208
239
|
}.merge(config.extra_sticky_locals)
|
209
240
|
end
|
210
241
|
|
@@ -234,7 +265,7 @@ class Pry
|
|
234
265
|
# @return [Boolean] Is Pry ready to accept more input?
|
235
266
|
# @raise [Exception] If the user uses the `raise-up` command, this method
|
236
267
|
# will raise that exception.
|
237
|
-
def eval(line, options={})
|
268
|
+
def eval(line, options = {})
|
238
269
|
return false if @stopped
|
239
270
|
|
240
271
|
exit_value = nil
|
@@ -254,6 +285,7 @@ class Pry
|
|
254
285
|
|
255
286
|
# TODO: make this configurable?
|
256
287
|
raise exception if exception
|
288
|
+
|
257
289
|
return false
|
258
290
|
end
|
259
291
|
|
@@ -310,7 +342,7 @@ class Pry
|
|
310
342
|
# This workaround has a side effect: java exceptions specified
|
311
343
|
# in `Pry.config.exception_whitelist` are ignored.
|
312
344
|
jruby_exceptions = []
|
313
|
-
if
|
345
|
+
if Helpers::Platform.jruby?
|
314
346
|
jruby_exceptions << Java::JavaLang::Exception
|
315
347
|
end
|
316
348
|
|
@@ -325,7 +357,7 @@ class Pry
|
|
325
357
|
# Eliminate following warning:
|
326
358
|
# warning: singleton on non-persistent Java type X
|
327
359
|
# (http://wiki.jruby.org/Persistence)
|
328
|
-
if
|
360
|
+
if Helpers::Platform.jruby? && e.class.respond_to?('__persistent__')
|
329
361
|
e.class.__persistent__ = true
|
330
362
|
end
|
331
363
|
self.last_exception = e
|
@@ -345,7 +377,7 @@ class Pry
|
|
345
377
|
# (If nested sessions are going to exist, this method is fine, but a goal is
|
346
378
|
# to come up with an alternative to nested sessions altogether.)
|
347
379
|
def repl(target = nil)
|
348
|
-
Pry::REPL.new(self, :
|
380
|
+
Pry::REPL.new(self, target: target).start
|
349
381
|
end
|
350
382
|
|
351
383
|
def evaluate_ruby(code)
|
@@ -403,11 +435,11 @@ class Pry
|
|
403
435
|
val = val.lstrip if /^\s\S/ !~ val
|
404
436
|
val = val.chomp
|
405
437
|
result = commands.process_line(val,
|
406
|
-
:
|
407
|
-
:
|
408
|
-
:
|
409
|
-
:
|
410
|
-
:
|
438
|
+
target: current_binding,
|
439
|
+
output: output,
|
440
|
+
eval_string: @eval_string,
|
441
|
+
pry_instance: self,
|
442
|
+
hooks: hooks
|
411
443
|
)
|
412
444
|
|
413
445
|
# set a temporary (just so we can inject the value we want into eval_string)
|
@@ -448,10 +480,10 @@ class Pry
|
|
448
480
|
# pry_instance.run_command("ls -m")
|
449
481
|
def run_command(val)
|
450
482
|
commands.process_line(val,
|
451
|
-
:
|
452
|
-
:
|
453
|
-
:
|
454
|
-
:
|
483
|
+
eval_string: @eval_string,
|
484
|
+
target: current_binding,
|
485
|
+
pry_instance: self,
|
486
|
+
output: output
|
455
487
|
)
|
456
488
|
Pry::Command::VOID_VALUE
|
457
489
|
end
|
@@ -479,9 +511,9 @@ class Pry
|
|
479
511
|
# This method should not need to be invoked directly.
|
480
512
|
# @param [Object] result The result.
|
481
513
|
# @param [String] code The code that was run.
|
482
|
-
def set_last_result(result, code="")
|
514
|
+
def set_last_result(result, code = "")
|
483
515
|
@last_result_is_exception = false
|
484
|
-
@
|
516
|
+
@output_ring << result
|
485
517
|
|
486
518
|
self.last_result = result unless code =~ /\A\s*\z/
|
487
519
|
end
|
@@ -495,7 +527,7 @@ class Pry
|
|
495
527
|
def last_exception=(e)
|
496
528
|
last_exception = Pry::LastException.new(e)
|
497
529
|
@last_result_is_exception = true
|
498
|
-
@
|
530
|
+
@output_ring << last_exception
|
499
531
|
@last_exception = last_exception
|
500
532
|
end
|
501
533
|
|
@@ -503,8 +535,8 @@ class Pry
|
|
503
535
|
# This method should not need to be invoked directly.
|
504
536
|
# @param [String] code The code we just eval'd
|
505
537
|
def update_input_history(code)
|
506
|
-
# Always push to the @
|
507
|
-
@
|
538
|
+
# Always push to the @input_ring as the @output_ring is always pushed to.
|
539
|
+
@input_ring << code
|
508
540
|
if code
|
509
541
|
Pry.line_buffer.push(*code.each_line)
|
510
542
|
Pry.current_line += code.lines.count
|
@@ -529,28 +561,26 @@ class Pry
|
|
529
561
|
# @return [String] The prompt.
|
530
562
|
def select_prompt
|
531
563
|
object = current_binding.eval('self')
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
:cont => !@eval_string.empty?})
|
564
|
+
open_token = @indent.open_delimiters.last || @indent.stack.last
|
565
|
+
|
566
|
+
c = Pry::Config.assign({
|
567
|
+
object: object,
|
568
|
+
nesting_level: binding_stack.size - 1,
|
569
|
+
open_token: open_token,
|
570
|
+
session_line: Pry.history.session_line_count + 1,
|
571
|
+
history_line: Pry.history.history_line_count + 1,
|
572
|
+
expr_number: input_ring.count,
|
573
|
+
_pry_: self,
|
574
|
+
binding_stack: binding_stack,
|
575
|
+
input_ring: input_ring,
|
576
|
+
eval_string: @eval_string,
|
577
|
+
cont: !@eval_string.empty?
|
578
|
+
})
|
548
579
|
|
549
580
|
Pry.critical_section do
|
550
581
|
# If input buffer is empty then use normal prompt
|
551
582
|
if eval_string.empty?
|
552
583
|
generate_prompt(Array(prompt).first, c)
|
553
|
-
|
554
584
|
# Otherwise use the wait prompt (indicating multi-line expression)
|
555
585
|
else
|
556
586
|
generate_prompt(Array(prompt).last, c)
|
@@ -655,7 +685,9 @@ class Pry
|
|
655
685
|
raise exception
|
656
686
|
end
|
657
687
|
end
|
688
|
+
|
658
689
|
def raise_up(*args); raise_up_common(false, *args); end
|
690
|
+
|
659
691
|
def raise_up!(*args); raise_up_common(true, *args); end
|
660
692
|
|
661
693
|
# Convenience accessor for the `quiet` config key.
|
@@ -664,3 +696,4 @@ class Pry
|
|
664
696
|
config.quiet
|
665
697
|
end
|
666
698
|
end
|
699
|
+
# rubocop:enable Metrics/ClassLength
|