pry 0.10.2-i386-mingw32 → 1.0.0.pre1-i386-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +2 -0
- data/.gitignore +16 -0
- data/.travis.yml +21 -0
- data/.yardopts +3 -0
- data/CHANGELOG +503 -0
- data/CONTRIBUTORS +55 -0
- data/Gemfile +9 -0
- data/Guardfile +62 -0
- data/LICENSE +2 -2
- data/{README.md → README.markdown} +31 -37
- data/Rakefile +144 -0
- data/TODO +117 -0
- data/lib/pry.rb +146 -33
- data/lib/pry/cli.rb +13 -35
- data/lib/pry/code.rb +63 -24
- data/lib/pry/code/loc.rb +2 -2
- data/lib/pry/code_object.rb +21 -40
- data/lib/pry/command.rb +6 -9
- data/lib/pry/command_set.rb +37 -80
- data/lib/pry/commands.rb +1 -1
- data/lib/pry/commands/amend_line.rb +1 -1
- data/lib/pry/commands/bang.rb +1 -1
- data/lib/pry/commands/cat.rb +2 -11
- data/lib/pry/commands/cat/abstract_formatter.rb +1 -1
- data/lib/pry/commands/cat/exception_formatter.rb +7 -6
- data/lib/pry/commands/cat/file_formatter.rb +32 -15
- data/lib/pry/commands/cat/input_expression_formatter.rb +1 -1
- data/lib/pry/commands/cd.rb +3 -14
- data/lib/pry/commands/code_collector.rb +4 -4
- data/lib/pry/commands/easter_eggs.rb +3 -3
- data/lib/pry/commands/edit.rb +22 -10
- data/lib/pry/commands/edit/exception_patcher.rb +1 -1
- data/lib/pry/commands/edit/file_and_line_locator.rb +2 -0
- data/lib/pry/{method/patcher.rb → commands/edit/method_patcher.rb} +37 -40
- data/lib/pry/commands/find_method.rb +22 -16
- data/lib/pry/commands/gem_install.rb +2 -5
- data/lib/pry/commands/gem_open.rb +1 -1
- data/lib/pry/commands/gist.rb +11 -10
- data/lib/pry/commands/help.rb +14 -14
- data/lib/pry/commands/hist.rb +5 -24
- data/lib/pry/commands/ls.rb +287 -56
- data/lib/pry/commands/play.rb +10 -44
- data/lib/pry/commands/pry_backtrace.rb +2 -1
- data/lib/pry/commands/raise_up.rb +1 -1
- data/lib/pry/commands/reload_code.rb +15 -31
- data/lib/pry/commands/ri.rb +3 -7
- data/lib/pry/commands/shell_command.rb +12 -17
- data/lib/pry/commands/shell_mode.rb +2 -2
- data/lib/pry/commands/show_doc.rb +0 -5
- data/lib/pry/commands/show_info.rb +10 -11
- data/lib/pry/commands/show_source.rb +3 -15
- data/lib/pry/commands/simple_prompt.rb +1 -1
- data/lib/pry/commands/toggle_color.rb +4 -8
- data/lib/pry/commands/whereami.rb +10 -18
- data/lib/pry/completion.rb +293 -0
- data/lib/pry/config.rb +233 -20
- data/lib/pry/core_extensions.rb +19 -29
- data/lib/pry/custom_completions.rb +6 -0
- data/lib/pry/editor.rb +103 -109
- data/lib/pry/helpers/base_helpers.rb +109 -22
- data/lib/pry/helpers/command_helpers.rb +8 -10
- data/lib/pry/helpers/documentation_helpers.rb +2 -1
- data/lib/pry/helpers/text.rb +5 -4
- data/lib/pry/history.rb +10 -21
- data/lib/pry/history_array.rb +0 -5
- data/lib/pry/hooks.rb +29 -9
- data/lib/pry/indent.rb +10 -5
- data/lib/pry/method.rb +86 -81
- data/lib/pry/method/weird_method_locator.rb +2 -4
- data/lib/pry/module_candidate.rb +14 -5
- data/lib/pry/pager.rb +48 -193
- data/lib/pry/plugins.rb +2 -2
- data/lib/pry/pry_class.rb +193 -104
- data/lib/pry/pry_instance.rb +154 -152
- data/lib/pry/rbx_method.rb +13 -0
- data/lib/pry/rbx_path.rb +1 -1
- data/lib/pry/repl.rb +14 -17
- data/lib/pry/repl_file_loader.rb +3 -8
- data/lib/pry/rubygem.rb +3 -3
- data/lib/pry/terminal.rb +3 -4
- data/lib/pry/test/helper.rb +11 -6
- data/lib/pry/version.rb +1 -1
- data/lib/pry/wrapped_module.rb +56 -49
- data/man/pry.1 +195 -0
- data/man/pry.1.html +204 -0
- data/man/pry.1.ronn +141 -0
- data/pry.gemspec +31 -0
- data/spec/Procfile +3 -0
- data/spec/cli_spec.rb +78 -0
- data/spec/code_object_spec.rb +277 -0
- data/spec/code_spec.rb +219 -0
- data/spec/command_helpers_spec.rb +29 -0
- data/spec/command_integration_spec.rb +562 -0
- data/spec/command_set_spec.rb +627 -0
- data/spec/command_spec.rb +821 -0
- data/spec/commands/amend_line_spec.rb +247 -0
- data/spec/commands/bang_spec.rb +18 -0
- data/spec/commands/cat_spec.rb +164 -0
- data/spec/commands/cd_spec.rb +250 -0
- data/spec/commands/disable_pry_spec.rb +25 -0
- data/spec/commands/edit_spec.rb +725 -0
- data/spec/commands/exit_all_spec.rb +27 -0
- data/spec/commands/exit_program_spec.rb +19 -0
- data/spec/commands/exit_spec.rb +28 -0
- data/spec/commands/find_method_spec.rb +70 -0
- data/spec/commands/gem_list_spec.rb +26 -0
- data/spec/commands/gist_spec.rb +79 -0
- data/spec/commands/help_spec.rb +56 -0
- data/spec/commands/hist_spec.rb +172 -0
- data/spec/commands/jump_to_spec.rb +15 -0
- data/spec/commands/ls_spec.rb +189 -0
- data/spec/commands/play_spec.rb +136 -0
- data/spec/commands/raise_up_spec.rb +56 -0
- data/spec/commands/save_file_spec.rb +177 -0
- data/spec/commands/show_doc_spec.rb +488 -0
- data/spec/commands/show_input_spec.rb +17 -0
- data/spec/commands/show_source_spec.rb +760 -0
- data/spec/commands/whereami_spec.rb +203 -0
- data/spec/completion_spec.rb +221 -0
- data/spec/control_d_handler_spec.rb +62 -0
- data/spec/documentation_helper_spec.rb +73 -0
- data/spec/editor_spec.rb +79 -0
- data/spec/exception_whitelist_spec.rb +21 -0
- data/spec/fixtures/candidate_helper1.rb +11 -0
- data/spec/fixtures/candidate_helper2.rb +8 -0
- data/spec/fixtures/example.erb +5 -0
- data/spec/fixtures/example_nesting.rb +33 -0
- data/spec/fixtures/show_source_doc_examples.rb +15 -0
- data/spec/fixtures/testlinkrc +2 -0
- data/spec/fixtures/testrc +2 -0
- data/spec/fixtures/testrcbad +2 -0
- data/spec/fixtures/whereami_helper.rb +6 -0
- data/spec/helper.rb +35 -0
- data/spec/helpers/bacon.rb +86 -0
- data/spec/helpers/mock_pry.rb +44 -0
- data/spec/helpers/repl_tester.rb +112 -0
- data/spec/helpers/table_spec.rb +105 -0
- data/spec/history_array_spec.rb +67 -0
- data/spec/hooks_spec.rb +522 -0
- data/spec/indent_spec.rb +301 -0
- data/spec/method_spec.rb +482 -0
- data/spec/prompt_spec.rb +61 -0
- data/spec/pry_defaults_spec.rb +420 -0
- data/spec/pry_history_spec.rb +69 -0
- data/spec/pry_output_spec.rb +95 -0
- data/spec/pry_repl_spec.rb +86 -0
- data/spec/pry_spec.rb +394 -0
- data/spec/pryrc_spec.rb +97 -0
- data/spec/run_command_spec.rb +25 -0
- data/spec/sticky_locals_spec.rb +147 -0
- data/spec/syntax_checking_spec.rb +81 -0
- data/spec/wrapped_module_spec.rb +261 -0
- data/wiki/Customizing-pry.md +397 -0
- data/wiki/Home.md +4 -0
- metadata +272 -61
- checksums.yaml +0 -7
- data/CHANGELOG.md +0 -714
- data/lib/pry/code/code_file.rb +0 -103
- data/lib/pry/color_printer.rb +0 -55
- data/lib/pry/commands/change_inspector.rb +0 -27
- data/lib/pry/commands/change_prompt.rb +0 -26
- data/lib/pry/commands/list_inspectors.rb +0 -35
- data/lib/pry/commands/list_prompts.rb +0 -35
- data/lib/pry/commands/ls/constants.rb +0 -47
- data/lib/pry/commands/ls/formatter.rb +0 -49
- data/lib/pry/commands/ls/globals.rb +0 -48
- data/lib/pry/commands/ls/grep.rb +0 -21
- data/lib/pry/commands/ls/instance_vars.rb +0 -39
- data/lib/pry/commands/ls/interrogatable.rb +0 -18
- data/lib/pry/commands/ls/jruby_hacks.rb +0 -49
- data/lib/pry/commands/ls/local_names.rb +0 -35
- data/lib/pry/commands/ls/local_vars.rb +0 -39
- data/lib/pry/commands/ls/ls_entity.rb +0 -70
- data/lib/pry/commands/ls/methods.rb +0 -57
- data/lib/pry/commands/ls/methods_helper.rb +0 -46
- data/lib/pry/commands/ls/self_methods.rb +0 -32
- data/lib/pry/commands/watch_expression.rb +0 -105
- data/lib/pry/commands/watch_expression/expression.rb +0 -38
- data/lib/pry/config/behavior.rb +0 -139
- data/lib/pry/config/convenience.rb +0 -25
- data/lib/pry/config/default.rb +0 -161
- data/lib/pry/exceptions.rb +0 -78
- data/lib/pry/input_completer.rb +0 -242
- data/lib/pry/input_lock.rb +0 -132
- data/lib/pry/inspector.rb +0 -27
- data/lib/pry/last_exception.rb +0 -61
- data/lib/pry/object_path.rb +0 -82
- data/lib/pry/output.rb +0 -50
- data/lib/pry/prompt.rb +0 -26
data/lib/pry/pry_instance.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
require "pry/indent"
|
2
|
+
|
2
3
|
##
|
3
4
|
# Pry is a powerful alternative to the standard IRB shell for Ruby. It
|
4
5
|
# features syntax highlighting, a flexible plugin architecture, runtime
|
@@ -20,27 +21,54 @@
|
|
20
21
|
# * https://github.com/pry/pry
|
21
22
|
# * the IRC channel, which is #pry on the Freenode network
|
22
23
|
#
|
23
|
-
|
24
24
|
class Pry
|
25
|
-
attr_accessor :
|
25
|
+
attr_accessor :input
|
26
|
+
attr_accessor :output
|
27
|
+
attr_accessor :commands
|
28
|
+
attr_accessor :print
|
29
|
+
attr_accessor :exception_handler
|
30
|
+
attr_accessor :quiet
|
31
|
+
alias :quiet? :quiet
|
32
|
+
|
26
33
|
attr_accessor :custom_completions
|
34
|
+
|
35
|
+
attr_accessor :binding_stack
|
27
36
|
attr_accessor :eval_string
|
28
|
-
|
29
|
-
attr_accessor :suppress_output
|
37
|
+
|
30
38
|
attr_accessor :last_result
|
31
39
|
attr_accessor :last_file
|
32
40
|
attr_accessor :last_dir
|
33
41
|
|
34
42
|
attr_reader :last_exception
|
35
|
-
|
36
|
-
attr_reader :exit_value
|
43
|
+
|
37
44
|
attr_reader :input_array
|
38
45
|
attr_reader :output_array
|
39
|
-
attr_reader :config
|
40
46
|
|
41
|
-
|
42
|
-
|
43
|
-
|
47
|
+
attr_accessor :backtrace
|
48
|
+
|
49
|
+
attr_accessor :extra_sticky_locals
|
50
|
+
|
51
|
+
attr_accessor :suppress_output
|
52
|
+
|
53
|
+
# This is exposed via Pry::Command#state.
|
54
|
+
attr_reader :command_state
|
55
|
+
|
56
|
+
attr_reader :exit_value
|
57
|
+
|
58
|
+
attr_reader :hooks # Special treatment as we want to alert people of the
|
59
|
+
# changed API.
|
60
|
+
|
61
|
+
# FIXME: This is a hack to alert people of the new API.
|
62
|
+
# @param [Pry::Hooks] hooks
|
63
|
+
def hooks=(hooks)
|
64
|
+
if hooks.is_a?(Hash)
|
65
|
+
warn "Hash-based hooks are now deprecated! Use a `Pry::Hooks` object " \
|
66
|
+
"instead! http://rubydoc.info/github/pry/pry/master/Pry/Hooks"
|
67
|
+
@hooks = Pry::Hooks.from_hash(hooks)
|
68
|
+
else
|
69
|
+
@hooks = hooks
|
70
|
+
end
|
71
|
+
end
|
44
72
|
|
45
73
|
# Create a new {Pry} instance.
|
46
74
|
# @param [Hash] options
|
@@ -67,38 +95,40 @@ class Pry
|
|
67
95
|
@indent = Pry::Indent.new
|
68
96
|
@command_state = {}
|
69
97
|
@eval_string = ""
|
70
|
-
@backtrace = options
|
71
|
-
target = options.delete(:target)
|
72
|
-
@config = Pry::Config.new
|
73
|
-
config.merge!(options)
|
74
|
-
push_prompt(config.prompt)
|
75
|
-
@input_array = Pry::HistoryArray.new config.memory_size
|
76
|
-
@output_array = Pry::HistoryArray.new config.memory_size
|
77
|
-
@custom_completions = config.command_completions
|
78
|
-
set_last_result nil
|
79
|
-
@input_array << nil
|
80
|
-
push_initial_binding(target)
|
81
|
-
exec_hook(:when_started, target, options, self)
|
82
|
-
end
|
98
|
+
@backtrace = options[:backtrace] || caller
|
83
99
|
|
84
|
-
|
85
|
-
# 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.
|
92
|
-
def prompt
|
93
|
-
prompt_stack.last
|
94
|
-
end
|
100
|
+
refresh_config(options)
|
95
101
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
102
|
+
push_initial_binding(options[:target])
|
103
|
+
|
104
|
+
set_last_result nil
|
105
|
+
@input_array << nil # add empty input so _in_ and _out_ match
|
106
|
+
|
107
|
+
# yield the binding_stack to the hook for modification
|
108
|
+
exec_hook(:when_started, options[:target], options, self)
|
109
|
+
end
|
110
|
+
|
111
|
+
# Refresh the Pry instance settings from the Pry class.
|
112
|
+
# Allows options to be specified to override settings from Pry class.
|
113
|
+
# @param [Hash] options The options to override Pry class settings
|
114
|
+
# for this instance.
|
115
|
+
def refresh_config(options={})
|
116
|
+
defaults = {}
|
117
|
+
attributes = [
|
118
|
+
:input, :output, :commands, :print, :quiet,
|
119
|
+
:exception_handler, :hooks, :custom_completions,
|
120
|
+
:prompt, :memory_size, :extra_sticky_locals
|
121
|
+
]
|
122
|
+
|
123
|
+
attributes.each do |attribute|
|
124
|
+
defaults[attribute] = Pry.send attribute
|
101
125
|
end
|
126
|
+
|
127
|
+
defaults.merge!(options).each do |key, value|
|
128
|
+
send("#{key}=", value) if respond_to?("#{key}=")
|
129
|
+
end
|
130
|
+
|
131
|
+
true
|
102
132
|
end
|
103
133
|
|
104
134
|
# Initialize this instance by pushing its initial context into the binding
|
@@ -121,60 +151,55 @@ class Pry
|
|
121
151
|
binding_stack << Pry.binding_for(object)
|
122
152
|
end
|
123
153
|
|
154
|
+
# The current prompt.
|
155
|
+
# This is the prompt at the top of the prompt stack.
|
124
156
|
#
|
125
|
-
#
|
126
|
-
#
|
127
|
-
#
|
128
|
-
# What the user has typed so far
|
129
|
-
#
|
130
|
-
# @return [Array<String>]
|
131
|
-
# Possible completions
|
157
|
+
# @example
|
158
|
+
# self.prompt = Pry::SIMPLE_PROMPT
|
159
|
+
# self.prompt # => Pry::SIMPLE_PROMPT
|
132
160
|
#
|
133
|
-
|
134
|
-
|
161
|
+
# @return [Array<Proc>] Current prompt.
|
162
|
+
def prompt
|
163
|
+
prompt_stack.last
|
164
|
+
end
|
165
|
+
|
166
|
+
def prompt=(new_prompt)
|
167
|
+
if prompt_stack.empty?
|
168
|
+
push_prompt new_prompt
|
169
|
+
else
|
170
|
+
prompt_stack[-1] = new_prompt
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
# Generate completions.
|
175
|
+
# @param [String] input What the user has typed so far
|
176
|
+
# @return [Array<String>] Possible completions
|
177
|
+
def complete(input)
|
135
178
|
Pry.critical_section do
|
136
|
-
|
137
|
-
|
179
|
+
Pry.config.completer.call(input, :target => current_binding,
|
180
|
+
:pry => self,
|
181
|
+
:custom_completions => instance_eval(&custom_completions))
|
138
182
|
end
|
139
183
|
end
|
140
184
|
|
141
|
-
#
|
142
185
|
# Injects a local variable into the provided binding.
|
143
|
-
#
|
144
|
-
# @param [
|
145
|
-
#
|
146
|
-
#
|
147
|
-
# @param [Object] value
|
148
|
-
# The value to set the local to.
|
149
|
-
#
|
150
|
-
# @param [Binding] b
|
151
|
-
# The binding to set the local on.
|
152
|
-
#
|
153
|
-
# @return [Object]
|
154
|
-
# The value the local was set to.
|
155
|
-
#
|
186
|
+
# @param [String] name The name of the local to inject.
|
187
|
+
# @param [Object] value The value to set the local to.
|
188
|
+
# @param [Binding] b The binding to set the local on.
|
189
|
+
# @return [Object] The value the local was set to.
|
156
190
|
def inject_local(name, value, b)
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
begin
|
162
|
-
Pry.current[:pry_local] = value
|
163
|
-
b.eval "#{name} = ::Pry.current[:pry_local]"
|
164
|
-
ensure
|
165
|
-
Pry.current[:pry_local] = nil
|
166
|
-
end
|
167
|
-
end
|
191
|
+
Pry.current[:pry_local] = value.is_a?(Proc) ? value.call : value
|
192
|
+
b.eval("#{name} = ::Pry.current[:pry_local]")
|
193
|
+
ensure
|
194
|
+
Pry.current[:pry_local] = nil
|
168
195
|
end
|
169
196
|
|
170
|
-
undef :memory_size if method_defined? :memory_size
|
171
197
|
# @return [Integer] The maximum amount of objects remembered by the inp and
|
172
198
|
# out arrays. Defaults to 100.
|
173
199
|
def memory_size
|
174
200
|
@output_array.max_size
|
175
201
|
end
|
176
202
|
|
177
|
-
undef :memory_size= if method_defined? :memory_size=
|
178
203
|
def memory_size=(size)
|
179
204
|
@input_array = Pry::HistoryArray.new(size)
|
180
205
|
@output_array = Pry::HistoryArray.new(size)
|
@@ -193,19 +218,21 @@ class Pry
|
|
193
218
|
# @yield The block that defines the content of the local. The local
|
194
219
|
# will be refreshed at each tick of the repl loop.
|
195
220
|
def add_sticky_local(name, &block)
|
196
|
-
|
221
|
+
sticky_locals[name] = block
|
197
222
|
end
|
198
223
|
|
224
|
+
# @return [Hash] The currently defined sticky locals.
|
199
225
|
def sticky_locals
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
226
|
+
@sticky_locals ||= {
|
227
|
+
:_in_ => proc { @input_array },
|
228
|
+
:_out_ => proc { @output_array },
|
229
|
+
:_pry_ => self,
|
230
|
+
:_ex_ => proc { last_exception },
|
231
|
+
:_file_ => proc { last_file },
|
232
|
+
:_dir_ => proc { last_dir },
|
233
|
+
:_ => proc { last_result },
|
234
|
+
:__ => proc { @output_array[-2] }
|
235
|
+
}.merge(extra_sticky_locals)
|
209
236
|
end
|
210
237
|
|
211
238
|
# Reset the current eval string. If the user has entered part of a multiline
|
@@ -222,7 +249,7 @@ class Pry
|
|
222
249
|
# 1. Pry commands will be executed immediately if the line matches.
|
223
250
|
# 2. Partial lines of input will be queued up until a complete expression has
|
224
251
|
# been accepted.
|
225
|
-
# 3. Output is written to
|
252
|
+
# 3. Output is written to {#output} in pretty colours, not returned.
|
226
253
|
#
|
227
254
|
# Once this method has raised an exception or returned false, this instance
|
228
255
|
# is no longer usable. {#exit_value} will return the session's breakout
|
@@ -259,7 +286,7 @@ class Pry
|
|
259
286
|
|
260
287
|
def handle_line(line, options)
|
261
288
|
if line.nil?
|
262
|
-
config.control_d_handler.call(@eval_string, self)
|
289
|
+
Pry.config.control_d_handler.call(@eval_string, self)
|
263
290
|
return
|
264
291
|
end
|
265
292
|
|
@@ -298,22 +325,6 @@ class Pry
|
|
298
325
|
@suppress_output = true
|
299
326
|
end
|
300
327
|
|
301
|
-
# A bug in jruby makes java.lang.Exception not rescued by
|
302
|
-
# `rescue Pry::RescuableException` clause.
|
303
|
-
#
|
304
|
-
# * https://github.com/pry/pry/issues/854
|
305
|
-
# * https://jira.codehaus.org/browse/JRUBY-7100
|
306
|
-
#
|
307
|
-
# Until that gets fixed upstream, treat java.lang.Exception
|
308
|
-
# as an additional exception to be rescued explicitly.
|
309
|
-
#
|
310
|
-
# This workaround has a side effect: java exceptions specified
|
311
|
-
# in `Pry.config.exception_whitelist` are ignored.
|
312
|
-
jruby_exceptions = []
|
313
|
-
if Pry::Helpers::BaseHelpers.jruby?
|
314
|
-
jruby_exceptions << Java::JavaLang::Exception
|
315
|
-
end
|
316
|
-
|
317
328
|
begin
|
318
329
|
# Reset eval string, in case we're evaluating Ruby that does something
|
319
330
|
# like open a nested REPL on this instance.
|
@@ -321,13 +332,7 @@ class Pry
|
|
321
332
|
reset_eval_string
|
322
333
|
|
323
334
|
result = evaluate_ruby(eval_string)
|
324
|
-
rescue RescuableException
|
325
|
-
# Eliminate following warning:
|
326
|
-
# warning: singleton on non-persistent Java type X
|
327
|
-
# (http://wiki.jruby.org/Persistence)
|
328
|
-
if Pry::Helpers::BaseHelpers.jruby? && e.class.respond_to?('__persistent__')
|
329
|
-
e.class.__persistent__ = true
|
330
|
-
end
|
335
|
+
rescue RescuableException => e
|
331
336
|
self.last_exception = e
|
332
337
|
result = e
|
333
338
|
end
|
@@ -341,10 +346,19 @@ class Pry
|
|
341
346
|
end
|
342
347
|
private :handle_line
|
343
348
|
|
344
|
-
#
|
345
|
-
# (If nested sessions are going to exist, this method is fine, but a goal is
|
346
|
-
# to come up with an alternative to nested sessions altogether.)
|
349
|
+
# @deprecated Use `Pry::REPL.new(pry, :target => target).start` instead.
|
347
350
|
def repl(target = nil)
|
351
|
+
@@repl_warning ||= (warn Pry::Helpers::CommandHelpers.unindent(<<-S); true)
|
352
|
+
DEPRECATION: Pry#repl is deprecated. Instead, use
|
353
|
+
|
354
|
+
Pry::REPL.new(pry, :target => target).start
|
355
|
+
|
356
|
+
where pry is the Pry instance you called #repl on and target is the
|
357
|
+
optional target parameter of #repl.
|
358
|
+
|
359
|
+
Call stack:
|
360
|
+
#{caller.join("\n" + (' ' * 8))}
|
361
|
+
S
|
348
362
|
Pry::REPL.new(self, :target => target).start
|
349
363
|
end
|
350
364
|
|
@@ -364,7 +378,7 @@ class Pry
|
|
364
378
|
if last_result_is_exception?
|
365
379
|
exception_handler.call(output, result, self)
|
366
380
|
elsif should_print?
|
367
|
-
print.call(output, result
|
381
|
+
print.call(output, result)
|
368
382
|
else
|
369
383
|
# nothin'
|
370
384
|
end
|
@@ -427,7 +441,7 @@ class Pry
|
|
427
441
|
end
|
428
442
|
end
|
429
443
|
|
430
|
-
# Same as process_command, but outputs exceptions to
|
444
|
+
# Same as process_command, but outputs exceptions to {#output} instead of
|
431
445
|
# raising.
|
432
446
|
# @param [String] val The line to process.
|
433
447
|
# @return [Boolean] `true` if `val` is a command, `false` otherwise
|
@@ -484,17 +498,27 @@ class Pry
|
|
484
498
|
self.last_result = result unless code =~ /\A\s*\z/
|
485
499
|
end
|
486
500
|
|
487
|
-
#
|
488
501
|
# Set the last exception for a session.
|
489
|
-
#
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
502
|
+
# @param [Exception] ex
|
503
|
+
def last_exception=(ex)
|
504
|
+
class << ex
|
505
|
+
attr_accessor :file, :line, :bt_index
|
506
|
+
def bt_source_location_for(index)
|
507
|
+
backtrace[index] =~ /(.*):(\d+)/
|
508
|
+
[$1, $2.to_i]
|
509
|
+
end
|
510
|
+
|
511
|
+
def inc_bt_index
|
512
|
+
@bt_index = (@bt_index + 1) % backtrace.size
|
513
|
+
end
|
514
|
+
end
|
515
|
+
|
516
|
+
ex.bt_index = 0
|
517
|
+
ex.file, ex.line = ex.bt_source_location_for(0)
|
518
|
+
|
495
519
|
@last_result_is_exception = true
|
496
|
-
@output_array <<
|
497
|
-
@last_exception =
|
520
|
+
@output_array << ex
|
521
|
+
@last_exception = ex
|
498
522
|
end
|
499
523
|
|
500
524
|
# Update Pry's internal state after evalling code.
|
@@ -505,7 +529,7 @@ class Pry
|
|
505
529
|
@input_array << code
|
506
530
|
if code
|
507
531
|
Pry.line_buffer.push(*code.each_line)
|
508
|
-
Pry.current_line += code.
|
532
|
+
Pry.current_line += code.each_line.count
|
509
533
|
end
|
510
534
|
end
|
511
535
|
|
@@ -531,7 +555,7 @@ class Pry
|
|
531
555
|
open_token = @indent.open_delimiters.any? ? @indent.open_delimiters.last :
|
532
556
|
@indent.stack.last
|
533
557
|
|
534
|
-
c =
|
558
|
+
c = OpenStruct.new(
|
535
559
|
:object => object,
|
536
560
|
:nesting_level => binding_stack.size - 1,
|
537
561
|
:open_token => open_token,
|
@@ -542,7 +566,7 @@ class Pry
|
|
542
566
|
:binding_stack => binding_stack,
|
543
567
|
:input_array => input_array,
|
544
568
|
:eval_string => @eval_string,
|
545
|
-
:cont => !@eval_string.empty?
|
569
|
+
:cont => !@eval_string.empty?)
|
546
570
|
|
547
571
|
Pry.critical_section do
|
548
572
|
# If input buffer is empty then use normal prompt
|
@@ -598,22 +622,6 @@ class Pry
|
|
598
622
|
prompt_stack.size > 1 ? prompt_stack.pop : prompt
|
599
623
|
end
|
600
624
|
|
601
|
-
undef :pager if method_defined? :pager
|
602
|
-
# Returns the currently configured pager
|
603
|
-
# @example
|
604
|
-
# _pry_.pager.page text
|
605
|
-
def pager
|
606
|
-
Pry::Pager.new(self)
|
607
|
-
end
|
608
|
-
|
609
|
-
undef :output if method_defined? :output
|
610
|
-
# Returns an output device
|
611
|
-
# @example
|
612
|
-
# _pry_.output.puts "ohai!"
|
613
|
-
def output
|
614
|
-
Pry::Output.new(self)
|
615
|
-
end
|
616
|
-
|
617
625
|
# Raise an exception out of Pry.
|
618
626
|
#
|
619
627
|
# See Kernel#raise for documentation of parameters.
|
@@ -655,10 +663,4 @@ class Pry
|
|
655
663
|
end
|
656
664
|
def raise_up(*args); raise_up_common(false, *args); end
|
657
665
|
def raise_up!(*args); raise_up_common(true, *args); end
|
658
|
-
|
659
|
-
# Convenience accessor for the `quiet` config key.
|
660
|
-
# @return [Boolean]
|
661
|
-
def quiet?
|
662
|
-
config.quiet
|
663
|
-
end
|
664
666
|
end
|