pry 0.9.12.6-java → 0.10.0-java
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +702 -0
- data/LICENSE +2 -2
- data/{README.markdown → README.md} +37 -31
- data/lib/pry.rb +38 -151
- data/lib/pry/cli.rb +35 -17
- data/lib/pry/code.rb +19 -63
- data/lib/pry/code/code_file.rb +103 -0
- data/lib/pry/code/code_range.rb +2 -1
- data/lib/pry/code/loc.rb +2 -2
- data/lib/pry/code_object.rb +40 -21
- data/lib/pry/color_printer.rb +55 -0
- data/lib/pry/command.rb +12 -9
- data/lib/pry/command_set.rb +81 -38
- data/lib/pry/commands.rb +1 -1
- data/lib/pry/commands/amend_line.rb +2 -2
- data/lib/pry/commands/bang.rb +1 -1
- data/lib/pry/commands/cat.rb +11 -2
- data/lib/pry/commands/cat/exception_formatter.rb +6 -7
- data/lib/pry/commands/cat/file_formatter.rb +15 -32
- data/lib/pry/commands/cat/input_expression_formatter.rb +1 -1
- data/lib/pry/commands/cd.rb +14 -3
- data/lib/pry/commands/change_inspector.rb +27 -0
- data/lib/pry/commands/change_prompt.rb +26 -0
- data/lib/pry/commands/code_collector.rb +4 -4
- data/lib/pry/commands/easter_eggs.rb +3 -3
- data/lib/pry/commands/edit.rb +10 -22
- data/lib/pry/commands/edit/exception_patcher.rb +2 -2
- data/lib/pry/commands/edit/file_and_line_locator.rb +0 -2
- data/lib/pry/commands/exit_program.rb +0 -1
- data/lib/pry/commands/find_method.rb +16 -22
- data/lib/pry/commands/gem_install.rb +5 -2
- data/lib/pry/commands/gem_open.rb +1 -1
- data/lib/pry/commands/gist.rb +10 -11
- data/lib/pry/commands/help.rb +14 -14
- data/lib/pry/commands/hist.rb +27 -8
- data/lib/pry/commands/install_command.rb +14 -12
- data/lib/pry/commands/list_inspectors.rb +35 -0
- data/lib/pry/commands/list_prompts.rb +35 -0
- data/lib/pry/commands/ls.rb +72 -296
- data/lib/pry/commands/ls/constants.rb +47 -0
- data/lib/pry/commands/ls/formatter.rb +49 -0
- data/lib/pry/commands/ls/globals.rb +48 -0
- data/lib/pry/commands/ls/grep.rb +21 -0
- data/lib/pry/commands/ls/instance_vars.rb +39 -0
- data/lib/pry/commands/ls/interrogatable.rb +18 -0
- data/lib/pry/commands/ls/jruby_hacks.rb +49 -0
- data/lib/pry/commands/ls/local_names.rb +35 -0
- data/lib/pry/commands/ls/local_vars.rb +39 -0
- data/lib/pry/commands/ls/ls_entity.rb +70 -0
- data/lib/pry/commands/ls/methods.rb +57 -0
- data/lib/pry/commands/ls/methods_helper.rb +46 -0
- data/lib/pry/commands/ls/self_methods.rb +32 -0
- data/lib/pry/commands/play.rb +44 -10
- data/lib/pry/commands/pry_backtrace.rb +1 -2
- data/lib/pry/commands/raise_up.rb +2 -2
- data/lib/pry/commands/reload_code.rb +16 -19
- data/lib/pry/commands/ri.rb +7 -3
- data/lib/pry/commands/shell_command.rb +18 -13
- data/lib/pry/commands/shell_mode.rb +2 -4
- data/lib/pry/commands/show_doc.rb +5 -0
- data/lib/pry/commands/show_info.rb +8 -13
- data/lib/pry/commands/show_source.rb +15 -3
- data/lib/pry/commands/simple_prompt.rb +1 -1
- data/lib/pry/commands/toggle_color.rb +8 -4
- data/lib/pry/commands/watch_expression.rb +105 -0
- data/lib/pry/commands/watch_expression/expression.rb +38 -0
- data/lib/pry/commands/whereami.rb +18 -10
- data/lib/pry/commands/wtf.rb +3 -3
- data/lib/pry/config.rb +20 -254
- data/lib/pry/config/behavior.rb +139 -0
- data/lib/pry/config/convenience.rb +26 -0
- data/lib/pry/config/default.rb +165 -0
- data/lib/pry/core_extensions.rb +31 -21
- data/lib/pry/editor.rb +107 -103
- data/lib/pry/exceptions.rb +77 -0
- data/lib/pry/helpers/base_helpers.rb +22 -109
- data/lib/pry/helpers/command_helpers.rb +10 -8
- data/lib/pry/helpers/documentation_helpers.rb +1 -2
- data/lib/pry/helpers/text.rb +4 -5
- data/lib/pry/history.rb +46 -45
- data/lib/pry/history_array.rb +6 -1
- data/lib/pry/hooks.rb +9 -29
- data/lib/pry/indent.rb +6 -6
- data/lib/pry/input_completer.rb +242 -0
- data/lib/pry/input_lock.rb +132 -0
- data/lib/pry/inspector.rb +27 -0
- data/lib/pry/last_exception.rb +61 -0
- data/lib/pry/method.rb +82 -87
- data/lib/pry/{commands/edit/method_patcher.rb → method/patcher.rb} +41 -38
- data/lib/pry/module_candidate.rb +4 -14
- data/lib/pry/object_path.rb +82 -0
- data/lib/pry/output.rb +50 -0
- data/lib/pry/pager.rb +193 -48
- data/lib/pry/plugins.rb +1 -1
- data/lib/pry/prompt.rb +26 -0
- data/lib/pry/pry_class.rb +149 -230
- data/lib/pry/pry_instance.rb +302 -413
- data/lib/pry/rbx_path.rb +1 -1
- data/lib/pry/repl.rb +202 -0
- data/lib/pry/repl_file_loader.rb +20 -26
- data/lib/pry/rubygem.rb +13 -5
- data/lib/pry/terminal.rb +2 -1
- data/lib/pry/test/helper.rb +26 -41
- data/lib/pry/version.rb +1 -1
- data/lib/pry/wrapped_module.rb +45 -59
- metadata +62 -225
- data/.document +0 -2
- data/.gitignore +0 -16
- data/.travis.yml +0 -25
- data/.yardopts +0 -1
- data/CHANGELOG +0 -534
- data/CONTRIBUTORS +0 -55
- data/Gemfile +0 -12
- data/Rakefile +0 -140
- data/TODO +0 -117
- data/lib/pry/completion.rb +0 -321
- data/lib/pry/custom_completions.rb +0 -6
- data/lib/pry/rbx_method.rb +0 -13
- data/man/pry.1 +0 -195
- data/man/pry.1.html +0 -204
- data/man/pry.1.ronn +0 -141
- data/pry.gemspec +0 -29
- data/spec/Procfile +0 -3
- data/spec/cli_spec.rb +0 -78
- data/spec/code_object_spec.rb +0 -277
- data/spec/code_spec.rb +0 -219
- data/spec/command_helpers_spec.rb +0 -29
- data/spec/command_integration_spec.rb +0 -644
- data/spec/command_set_spec.rb +0 -627
- data/spec/command_spec.rb +0 -821
- data/spec/commands/amend_line_spec.rb +0 -247
- data/spec/commands/bang_spec.rb +0 -19
- data/spec/commands/cat_spec.rb +0 -164
- data/spec/commands/cd_spec.rb +0 -250
- data/spec/commands/disable_pry_spec.rb +0 -25
- data/spec/commands/edit_spec.rb +0 -727
- data/spec/commands/exit_all_spec.rb +0 -34
- data/spec/commands/exit_program_spec.rb +0 -19
- data/spec/commands/exit_spec.rb +0 -34
- data/spec/commands/find_method_spec.rb +0 -70
- data/spec/commands/gem_list_spec.rb +0 -26
- data/spec/commands/gist_spec.rb +0 -79
- data/spec/commands/help_spec.rb +0 -56
- data/spec/commands/hist_spec.rb +0 -181
- data/spec/commands/jump_to_spec.rb +0 -15
- data/spec/commands/ls_spec.rb +0 -181
- data/spec/commands/play_spec.rb +0 -140
- data/spec/commands/raise_up_spec.rb +0 -56
- data/spec/commands/save_file_spec.rb +0 -177
- data/spec/commands/show_doc_spec.rb +0 -510
- data/spec/commands/show_input_spec.rb +0 -17
- data/spec/commands/show_source_spec.rb +0 -782
- data/spec/commands/whereami_spec.rb +0 -203
- data/spec/completion_spec.rb +0 -241
- data/spec/control_d_handler_spec.rb +0 -58
- data/spec/documentation_helper_spec.rb +0 -73
- data/spec/editor_spec.rb +0 -79
- data/spec/exception_whitelist_spec.rb +0 -21
- data/spec/fixtures/candidate_helper1.rb +0 -11
- data/spec/fixtures/candidate_helper2.rb +0 -8
- data/spec/fixtures/example.erb +0 -5
- data/spec/fixtures/example_nesting.rb +0 -33
- data/spec/fixtures/show_source_doc_examples.rb +0 -15
- data/spec/fixtures/testrc +0 -2
- data/spec/fixtures/testrcbad +0 -2
- data/spec/fixtures/whereami_helper.rb +0 -6
- data/spec/helper.rb +0 -34
- data/spec/helpers/bacon.rb +0 -86
- data/spec/helpers/mock_pry.rb +0 -43
- data/spec/helpers/table_spec.rb +0 -105
- data/spec/history_array_spec.rb +0 -67
- data/spec/hooks_spec.rb +0 -522
- data/spec/indent_spec.rb +0 -301
- data/spec/input_stack_spec.rb +0 -90
- data/spec/method_spec.rb +0 -482
- data/spec/prompt_spec.rb +0 -60
- data/spec/pry_defaults_spec.rb +0 -419
- data/spec/pry_history_spec.rb +0 -99
- data/spec/pry_output_spec.rb +0 -95
- data/spec/pry_spec.rb +0 -515
- data/spec/run_command_spec.rb +0 -25
- data/spec/sticky_locals_spec.rb +0 -157
- data/spec/syntax_checking_spec.rb +0 -81
- data/spec/wrapped_module_spec.rb +0 -261
- data/wiki/Customizing-pry.md +0 -397
- data/wiki/Home.md +0 -4
data/LICENSE
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
License
|
|
2
2
|
-------
|
|
3
3
|
|
|
4
|
-
(The MIT License)
|
|
4
|
+
(The MIT License)
|
|
5
5
|
|
|
6
|
-
Copyright (c)
|
|
6
|
+
Copyright (c) 2013 John Mair (banisterfiend)
|
|
7
7
|
|
|
8
8
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
9
9
|
a copy of this software and associated documentation files (the
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
[](https://travis-ci.org/pry/pry)
|
|
2
|
+
[](https://codeclimate.com/github/pry/pry)
|
|
3
|
+
[](http://inch-pages.github.io/github/pry/pry)
|
|
2
4
|
|
|
3
5
|
<center>
|
|
4
6
|

|
|
5
7
|
|
|
6
|
-
© John Mair (banisterfiend)
|
|
8
|
+
© John Mair ([banisterfiend](https://twitter.com/banisterfiend)) 2013<br>
|
|
7
9
|
|
|
8
10
|
**Please** [DONATE](http://www.pledgie.com/campaigns/15899) to the Pry project - Pry was a **huge** amount of work and every donation received is encouraging and supports Pry's continued development!
|
|
9
11
|
|
|
10
12
|
**Sponsors**
|
|
11
13
|
|
|
14
|
+
[Tealeaf Academy](http://www.gotealeaf.com)<br/>
|
|
12
15
|
[Atomic Object](http://www.atomicobject.com/)<br/>
|
|
13
|
-
[
|
|
16
|
+
[Hashrocket](http://hashrocket.com/)<br/>
|
|
14
17
|
[Intridea](http://intridea.com/)<br/>
|
|
15
18
|
[Gaslight](http://gaslight.co/home)<br/>
|
|
16
19
|
|
|
@@ -27,7 +30,7 @@ including:
|
|
|
27
30
|
* Source code browsing (including core C source with the pry-doc gem)
|
|
28
31
|
* Documentation browsing
|
|
29
32
|
* Live help system
|
|
30
|
-
* Open methods in editors (`edit
|
|
33
|
+
* Open methods in editors (`edit Class#method`)
|
|
31
34
|
* Syntax highlighting
|
|
32
35
|
* Command shell integration (start editors, run git, and rake from within Pry)
|
|
33
36
|
* Gist integration
|
|
@@ -36,7 +39,6 @@ including:
|
|
|
36
39
|
* Exotic object support (BasicObject instances, IClasses, ...)
|
|
37
40
|
* A Powerful and flexible command system
|
|
38
41
|
* Ability to view and replay history
|
|
39
|
-
|
|
40
42
|
* Many convenience commands inspired by IPython, Smalltalk and other advanced REPLs
|
|
41
43
|
* A wide-range number of [plugins](https://github.com/pry/pry/wiki/Available-plugins) that provide remote sessions, full debugging functionality, and more.
|
|
42
44
|
|
|
@@ -65,13 +67,6 @@ methods. The additional docs are accessed through the `show-doc` and
|
|
|
65
67
|
* Read the [YARD API documentation](http://rdoc.info/github/pry/pry/master/file/README.markdown)
|
|
66
68
|
* See the [source code](http://github.com/pry/pry)
|
|
67
69
|
|
|
68
|
-
Pry also has `rubygems-test` support; to participate, first install
|
|
69
|
-
Pry, then:
|
|
70
|
-
|
|
71
|
-
1. Install rubygems-test: `gem install rubygems-test`
|
|
72
|
-
2. Run the test: `gem test pry`
|
|
73
|
-
3. Finally choose 'Yes' to upload the results.
|
|
74
|
-
|
|
75
70
|
### Commands
|
|
76
71
|
|
|
77
72
|
Nearly every piece of functionality in a Pry session is implemented as
|
|
@@ -102,9 +97,9 @@ an instance variable inside that class:
|
|
|
102
97
|
pry(Hello):1> ls -i
|
|
103
98
|
instance variables: @x
|
|
104
99
|
pry(Hello):1> cd @x
|
|
105
|
-
pry(20:2
|
|
100
|
+
pry(20):2> self + 10
|
|
106
101
|
=> 30
|
|
107
|
-
pry(20:2
|
|
102
|
+
pry(20):2> cd ..
|
|
108
103
|
pry(Hello):1> cd ..
|
|
109
104
|
pry(main)> cd ..
|
|
110
105
|
|
|
@@ -112,7 +107,7 @@ The number after the `:` in the pry prompt indicates the nesting
|
|
|
112
107
|
level. To display more information about nesting, use the `nesting`
|
|
113
108
|
command. E.g
|
|
114
109
|
|
|
115
|
-
pry("friend":3
|
|
110
|
+
pry("friend"):3> nesting
|
|
116
111
|
Nesting status:
|
|
117
112
|
0. main (Pry top level)
|
|
118
113
|
1. Hello
|
|
@@ -123,7 +118,7 @@ command. E.g
|
|
|
123
118
|
We can then jump back to any of the previous nesting levels by using
|
|
124
119
|
the `jump-to` command:
|
|
125
120
|
|
|
126
|
-
pry("friend":3
|
|
121
|
+
pry("friend"):3> jump-to 1
|
|
127
122
|
=> 100
|
|
128
123
|
pry(Hello):1>
|
|
129
124
|
|
|
@@ -224,7 +219,7 @@ In the following example we will enter the `Pry` class, list the
|
|
|
224
219
|
instance methods beginning with 're' and display the source code for the `rep` method:
|
|
225
220
|
|
|
226
221
|
pry(main)> cd Pry
|
|
227
|
-
pry(Pry)> ls -M --grep re
|
|
222
|
+
pry(Pry):1> ls -M --grep re
|
|
228
223
|
Pry#methods: re readline refresh rep repl repl_epilogue repl_prologue retrieve_line
|
|
229
224
|
pry(Pry):1> show-method rep -l
|
|
230
225
|
|
|
@@ -256,9 +251,9 @@ Note that we can also view C methods (from Ruby Core) using the
|
|
|
256
251
|
RETURN_ENUMERATOR(ary, 0, 0);
|
|
257
252
|
result = rb_ary_new2(RARRAY_LEN(ary));
|
|
258
253
|
for (i = 0; i < RARRAY_LEN(ary); i++) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
254
|
+
if (RTEST(rb_yield(RARRAY_PTR(ary)[i]))) {
|
|
255
|
+
rb_ary_push(result, rb_ary_elt(ary, i));
|
|
256
|
+
}
|
|
262
257
|
}
|
|
263
258
|
return result;
|
|
264
259
|
}
|
|
@@ -332,7 +327,7 @@ You can see the actual gist generated here: [https://gist.github.com/5332c38afc4
|
|
|
332
327
|
|
|
333
328
|
### Edit methods
|
|
334
329
|
|
|
335
|
-
You can use `edit
|
|
330
|
+
You can use `edit Class#method` or `edit my_method`
|
|
336
331
|
(if the method is in scope) to open a method for editing directly in
|
|
337
332
|
your favorite editor. Pry has knowledge of a few different editors and
|
|
338
333
|
will attempt to open the file at the line the method is defined.
|
|
@@ -341,13 +336,13 @@ You can set the editor to use by assigning to the `Pry.editor`
|
|
|
341
336
|
accessor. `Pry.editor` will default to `$EDITOR` or failing that will
|
|
342
337
|
use `nano` as the backup default. The file that is edited will be
|
|
343
338
|
automatically reloaded after exiting the editor - reloading can be
|
|
344
|
-
suppressed by passing the `--no-reload` option to `edit
|
|
339
|
+
suppressed by passing the `--no-reload` option to `edit`
|
|
345
340
|
|
|
346
341
|
In the example below we will set our default editor to "emacsclient"
|
|
347
342
|
and open the `Pry#repl` method for editing:
|
|
348
343
|
|
|
349
344
|
pry(main)> Pry.editor = "emacsclient"
|
|
350
|
-
pry(main)> edit
|
|
345
|
+
pry(main)> edit Pry#repl
|
|
351
346
|
|
|
352
347
|
### Live Help System
|
|
353
348
|
|
|
@@ -360,11 +355,19 @@ avaiable.
|
|
|
360
355
|
|
|
361
356
|
### Use Pry as your Rails Console
|
|
362
357
|
|
|
363
|
-
|
|
358
|
+
The recommended way to use Pry as your Rails console is to add
|
|
359
|
+
[the `pry-rails` gem](https://github.com/rweng/pry-rails) to
|
|
360
|
+
your Gemfile. This replaces the default console with Pry, in
|
|
361
|
+
addition to loading the Rails console helpers and adding some
|
|
362
|
+
useful Rails-specific commands.
|
|
363
|
+
|
|
364
|
+
If you don't want to change your Gemfile, you can still run a Pry
|
|
365
|
+
console in your app's environment using Pry's `-r` flag:
|
|
364
366
|
|
|
365
|
-
|
|
367
|
+
pry -r ./config/environment
|
|
366
368
|
|
|
367
|
-
Also check out the [wiki](https://github.com/pry/pry/wiki/Setting-up-Rails-or-Heroku-to-use-Pry)
|
|
369
|
+
Also check out the [wiki](https://github.com/pry/pry/wiki/Setting-up-Rails-or-Heroku-to-use-Pry)
|
|
370
|
+
for more information about integrating Pry with Rails.
|
|
368
371
|
|
|
369
372
|
### Limitations:
|
|
370
373
|
|
|
@@ -373,17 +376,20 @@ Also check out the [wiki](https://github.com/pry/pry/wiki/Setting-up-Rails-or-He
|
|
|
373
376
|
|
|
374
377
|
### Syntax Highlighting
|
|
375
378
|
|
|
376
|
-
Syntax highlighting is on by default in Pry.
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
379
|
+
Syntax highlighting is on by default in Pry. If you want to change
|
|
380
|
+
the colors, check out the [pry-theme](https://github.com/kyrylo/pry-theme)
|
|
381
|
+
gem.
|
|
382
|
+
|
|
383
|
+
You can toggle the syntax highlighting on and off in a session by
|
|
384
|
+
using the `toggle-color` command. Alternatively, you can turn it off
|
|
385
|
+
permanently by putting the line `Pry.color = false` in your `~/.pryrc`
|
|
386
|
+
file.
|
|
380
387
|
|
|
381
388
|
### Future Directions
|
|
382
389
|
|
|
383
390
|
Many new features are planned such as:
|
|
384
391
|
|
|
385
392
|
* Increase modularity (rely more on plugin system)
|
|
386
|
-
* Much improved tab completion (using [Bond](http://github.com/cldwalker/bond))
|
|
387
393
|
* Much improved documentation system, better support for YARD
|
|
388
394
|
* Better support for code and method reloading and saving code
|
|
389
395
|
* Extended and more sophisticated command system, allowing piping
|
data/lib/pry.rb
CHANGED
|
@@ -1,53 +1,27 @@
|
|
|
1
|
-
# (C) John Mair (banisterfiend)
|
|
1
|
+
# (C) John Mair (banisterfiend) 2013
|
|
2
2
|
# MIT License
|
|
3
3
|
#
|
|
4
|
-
|
|
5
4
|
require 'pp'
|
|
5
|
+
|
|
6
|
+
require 'pry/input_lock'
|
|
7
|
+
require 'pry/exceptions'
|
|
6
8
|
require 'pry/helpers/base_helpers'
|
|
7
9
|
require 'pry/hooks'
|
|
10
|
+
require 'forwardable'
|
|
8
11
|
|
|
9
12
|
class Pry
|
|
10
13
|
# The default hooks - display messages when beginning and ending Pry sessions.
|
|
11
14
|
DEFAULT_HOOKS = Pry::Hooks.new.add_hook(:before_session, :default) do |out, target, _pry_|
|
|
12
15
|
next if _pry_.quiet?
|
|
13
|
-
_pry_.run_command("whereami --quiet"
|
|
16
|
+
_pry_.run_command("whereami --quiet")
|
|
14
17
|
end
|
|
15
18
|
|
|
16
19
|
# The default print
|
|
17
|
-
DEFAULT_PRINT = proc do |output, value|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def self.output_with_default_format(output, value, options = {})
|
|
22
|
-
stringified = begin
|
|
23
|
-
value.pretty_inspect
|
|
24
|
-
rescue RescuableException
|
|
25
|
-
nil
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
unless String === stringified
|
|
29
|
-
# Read the class name off of the singleton class to provide a default
|
|
30
|
-
# inspect.
|
|
31
|
-
klass = (class << value; self; end).ancestors.first
|
|
32
|
-
stringified = "#<#{klass}:0x#{value.__id__.to_s(16)}>"
|
|
20
|
+
DEFAULT_PRINT = proc do |output, value, _pry_|
|
|
21
|
+
_pry_.pager.open do |pager|
|
|
22
|
+
pager.print _pry_.config.output_prefix
|
|
23
|
+
Pry::ColorPrinter.pp(value, pager, Pry::Terminal.width! - 1)
|
|
33
24
|
end
|
|
34
|
-
|
|
35
|
-
nonce = rand(0x100000000).to_s(16) # whatever
|
|
36
|
-
|
|
37
|
-
stringified.gsub!(/#</, "%<#{nonce}")
|
|
38
|
-
# Don't recolorize output with color (for cucumber, looksee, etc.) [Issue #751]
|
|
39
|
-
colorized = if stringified =~ /\e\[/
|
|
40
|
-
stringified
|
|
41
|
-
else
|
|
42
|
-
Helpers::BaseHelpers.colorize_code(stringified)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# avoid colour-leak from CodeRay and any of the users' previous output
|
|
46
|
-
colorized = colorized.sub(/(\n*)\z/, "\e[0m\\1") if Pry.color
|
|
47
|
-
|
|
48
|
-
result = colorized.gsub(/%<(.*?)#{nonce}/, '#<\1')
|
|
49
|
-
result = "=> #{result}"if options[:hashrocket]
|
|
50
|
-
Helpers::BaseHelpers.stagger_output(result, output)
|
|
51
25
|
end
|
|
52
26
|
|
|
53
27
|
# may be convenient when working with enormous objects and
|
|
@@ -62,7 +36,7 @@ class Pry
|
|
|
62
36
|
|
|
63
37
|
# useful when playing with truly enormous objects
|
|
64
38
|
CLIPPED_PRINT = proc do |output, value|
|
|
65
|
-
output.puts Pry.view_clip(value)
|
|
39
|
+
output.puts Pry.view_clip(value, id: true)
|
|
66
40
|
end
|
|
67
41
|
|
|
68
42
|
# Will only show the first line of the backtrace
|
|
@@ -80,32 +54,36 @@ class Pry
|
|
|
80
54
|
# The default prompt; includes the target and nesting level
|
|
81
55
|
DEFAULT_PROMPT = [
|
|
82
56
|
proc { |target_self, nest_level, pry|
|
|
83
|
-
"[#{pry.input_array.size}] #{
|
|
57
|
+
"[#{pry.input_array.size}] #{pry.config.prompt_name}(#{Pry.view_clip(target_self)})#{":#{nest_level}" unless nest_level.zero?}> "
|
|
84
58
|
},
|
|
85
59
|
|
|
86
60
|
proc { |target_self, nest_level, pry|
|
|
87
|
-
"[#{pry.input_array.size}] #{
|
|
61
|
+
"[#{pry.input_array.size}] #{pry.config.prompt_name}(#{Pry.view_clip(target_self)})#{":#{nest_level}" unless nest_level.zero?}* "
|
|
88
62
|
}
|
|
89
63
|
]
|
|
90
64
|
|
|
65
|
+
DEFAULT_PROMPT_SAFE_OBJECTS = [String, Numeric, Symbol, nil, true, false]
|
|
66
|
+
|
|
91
67
|
# A simple prompt - doesn't display target or nesting level
|
|
92
68
|
SIMPLE_PROMPT = [proc { ">> " }, proc { " | " }]
|
|
93
69
|
|
|
70
|
+
NO_PROMPT = [proc { '' }, proc { '' }]
|
|
71
|
+
|
|
94
72
|
SHELL_PROMPT = [
|
|
95
|
-
proc { |target_self, _,
|
|
96
|
-
proc { |target_self, _,
|
|
73
|
+
proc { |target_self, _, _pry_| "#{_pry_.config.prompt_name} #{Pry.view_clip(target_self)}:#{Dir.pwd} $ " },
|
|
74
|
+
proc { |target_self, _, _pry_| "#{_pry_.config.prompt_name} #{Pry.view_clip(target_self)}:#{Dir.pwd} * " }
|
|
97
75
|
]
|
|
98
76
|
|
|
99
77
|
# A prompt that includes the full object path as well as
|
|
100
78
|
# input/output (_in_ and _out_) information. Good for navigation.
|
|
101
79
|
NAV_PROMPT = [
|
|
102
|
-
proc do |
|
|
103
|
-
tree =
|
|
104
|
-
"[#{
|
|
80
|
+
proc do |_, _, _pry_|
|
|
81
|
+
tree = _pry_.binding_stack.map { |b| Pry.view_clip(b.eval("self")) }.join " / "
|
|
82
|
+
"[#{_pry_.input_array.count}] (#{_pry_.config.prompt_name}) #{tree}: #{_pry_.binding_stack.size - 1}> "
|
|
105
83
|
end,
|
|
106
|
-
proc do |
|
|
107
|
-
tree =
|
|
108
|
-
"[#{
|
|
84
|
+
proc do |_, _, _pry_|
|
|
85
|
+
tree = _pry_.binding_stack.map { |b| Pry.view_clip(b.eval("self")) }.join " / "
|
|
86
|
+
"[#{_pry_.input_array.count}] (#{ _pry_.config.prompt_name}) #{tree}: #{_pry_.binding_stack.size - 1}* "
|
|
109
87
|
end,
|
|
110
88
|
]
|
|
111
89
|
|
|
@@ -120,10 +98,9 @@ class Pry
|
|
|
120
98
|
_pry_.binding_stack.clear
|
|
121
99
|
throw(:breakout)
|
|
122
100
|
else
|
|
123
|
-
#
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
end
|
|
101
|
+
# Otherwise, saves current binding stack as old stack and pops last
|
|
102
|
+
# binding out of binding stack (the old stack still has that binding).
|
|
103
|
+
_pry_.command_state["cd"] ||= Pry::Config.from_hash({}) # FIXME
|
|
127
104
|
_pry_.command_state['cd'].old_stack = _pry_.binding_stack.dup
|
|
128
105
|
_pry_.binding_stack.pop
|
|
129
106
|
end
|
|
@@ -139,80 +116,9 @@ class Pry
|
|
|
139
116
|
# your process has changed directory since boot. [Issue #675]
|
|
140
117
|
INITIAL_PWD = Dir.pwd
|
|
141
118
|
|
|
142
|
-
# As a REPL, we often want to catch any unexpected exceptions that may have
|
|
143
|
-
# been raised; however we don't want to go overboard and prevent the user
|
|
144
|
-
# from exiting Pry when they want to.
|
|
145
|
-
module RescuableException
|
|
146
|
-
def self.===(exception)
|
|
147
|
-
case exception
|
|
148
|
-
# Catch when the user hits ^C (Interrupt < SignalException), and assume
|
|
149
|
-
# that they just wanted to stop the in-progress command (just like bash etc.)
|
|
150
|
-
when Interrupt
|
|
151
|
-
true
|
|
152
|
-
# Don't catch signals (particularly not SIGTERM) as these are unlikely to be
|
|
153
|
-
# intended for pry itself. We should also make sure that Kernel#exit works.
|
|
154
|
-
when *Pry.config.exception_whitelist
|
|
155
|
-
false
|
|
156
|
-
# All other exceptions will be caught.
|
|
157
|
-
else
|
|
158
|
-
true
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
# An Exception Tag (cf. Exceptional Ruby) that instructs Pry to show the error in
|
|
164
|
-
# a more user-friendly manner. This should be used when the exception happens within
|
|
165
|
-
# Pry itself as a direct consequence of the user typing something wrong.
|
|
166
|
-
#
|
|
167
|
-
# This allows us to distinguish between the user typing:
|
|
168
|
-
#
|
|
169
|
-
# pry(main)> def )
|
|
170
|
-
# SyntaxError: unexpected )
|
|
171
|
-
#
|
|
172
|
-
# pry(main)> method_that_evals("def )")
|
|
173
|
-
# SyntaxError: (eval):1: syntax error, unexpected ')'
|
|
174
|
-
# from ./a.rb:2 in `eval'
|
|
175
|
-
module UserError; end
|
|
176
|
-
|
|
177
|
-
# Catches SecurityErrors if $SAFE is set
|
|
178
|
-
module TooSafeException
|
|
179
|
-
def self.===(exception)
|
|
180
|
-
$SAFE > 0 && SecurityError === exception
|
|
181
|
-
end
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
# Don't catch these exceptions
|
|
185
|
-
DEFAULT_EXCEPTION_WHITELIST = [SystemExit, SignalException, Pry::TooSafeException]
|
|
186
|
-
|
|
187
|
-
# CommandErrors are caught by the REPL loop and displayed to the user. They
|
|
188
|
-
# indicate an exceptional condition that's fatal to the current command.
|
|
189
|
-
class CommandError < StandardError; end
|
|
190
|
-
class MethodNotFound < CommandError; end
|
|
191
|
-
|
|
192
|
-
# indicates obsolete API
|
|
193
|
-
class ObsoleteError < StandardError; end
|
|
194
|
-
|
|
195
119
|
# This is to keep from breaking under Rails 3.2 for people who are doing that
|
|
196
120
|
# IRB = Pry thing.
|
|
197
|
-
module ExtendCommandBundle
|
|
198
|
-
end
|
|
199
|
-
|
|
200
|
-
def self.require_readline
|
|
201
|
-
return false if @required_readline
|
|
202
|
-
require 'readline'
|
|
203
|
-
@required_readline = true
|
|
204
|
-
rescue LoadError
|
|
205
|
-
warn "Sorry, you can't use Pry without Readline or a compatible library."
|
|
206
|
-
warn "Please `gem install rb-readline` or recompile Ruby --with-readline."
|
|
207
|
-
raise
|
|
208
|
-
end
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
if Pry::Helpers::BaseHelpers.mri_18?
|
|
212
|
-
begin
|
|
213
|
-
require 'ruby18_source_location'
|
|
214
|
-
rescue LoadError
|
|
215
|
-
end
|
|
121
|
+
module ExtendCommandBundle; end
|
|
216
122
|
end
|
|
217
123
|
|
|
218
124
|
require 'method_source'
|
|
@@ -222,34 +128,10 @@ require 'coderay'
|
|
|
222
128
|
require 'slop'
|
|
223
129
|
require 'rbconfig'
|
|
224
130
|
require 'tempfile'
|
|
225
|
-
|
|
226
|
-
if Pry::Helpers::BaseHelpers.jruby?
|
|
227
|
-
begin
|
|
228
|
-
require 'ffi'
|
|
229
|
-
rescue LoadError
|
|
230
|
-
warn "For a better Pry experience on JRuby, please `gem install ffi`."
|
|
231
|
-
end
|
|
232
|
-
end
|
|
233
|
-
|
|
234
|
-
if Pry::Helpers::BaseHelpers.windows? && !Pry::Helpers::BaseHelpers.windows_ansi?
|
|
235
|
-
begin
|
|
236
|
-
require 'win32console'
|
|
237
|
-
# The mswin and mingw versions of pry require win32console, so this should
|
|
238
|
-
# only fail on jruby (where win32console doesn't work).
|
|
239
|
-
# Instead we'll recommend ansicon, which does.
|
|
240
|
-
rescue LoadError
|
|
241
|
-
warn "For a better Pry experience on Windows, please use ansicon:"
|
|
242
|
-
warn " http://adoxa.3eeweb.com/ansicon/"
|
|
243
|
-
end
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
begin
|
|
247
|
-
require 'bond'
|
|
248
|
-
rescue LoadError
|
|
249
|
-
end
|
|
131
|
+
require 'pathname'
|
|
250
132
|
|
|
251
133
|
require 'pry/version'
|
|
252
|
-
require 'pry/
|
|
134
|
+
require 'pry/repl'
|
|
253
135
|
require 'pry/rbx_path'
|
|
254
136
|
require 'pry/code'
|
|
255
137
|
require 'pry/history_array'
|
|
@@ -261,14 +143,19 @@ require 'pry/history'
|
|
|
261
143
|
require 'pry/command'
|
|
262
144
|
require 'pry/command_set'
|
|
263
145
|
require 'pry/commands'
|
|
264
|
-
require 'pry/custom_completions'
|
|
265
|
-
require 'pry/completion'
|
|
266
146
|
require 'pry/plugins'
|
|
267
147
|
require 'pry/core_extensions'
|
|
268
148
|
require 'pry/pry_class'
|
|
269
149
|
require 'pry/pry_instance'
|
|
270
150
|
require 'pry/cli'
|
|
151
|
+
require 'pry/color_printer'
|
|
271
152
|
require 'pry/pager'
|
|
272
153
|
require 'pry/terminal'
|
|
273
154
|
require 'pry/editor'
|
|
274
155
|
require 'pry/rubygem'
|
|
156
|
+
require "pry/indent"
|
|
157
|
+
require "pry/last_exception"
|
|
158
|
+
require "pry/prompt"
|
|
159
|
+
require "pry/inspector"
|
|
160
|
+
require 'pry/object_path'
|
|
161
|
+
require 'pry/output'
|