pry 0.10.4 → 0.11.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +45 -18
- data/LICENSE +1 -1
- data/README.md +28 -26
- data/bin/pry +3 -7
- data/lib/pry.rb +3 -2
- data/lib/pry/basic_object.rb +6 -0
- data/lib/pry/cli.rb +39 -34
- data/lib/pry/code.rb +6 -1
- data/lib/pry/code/code_file.rb +8 -2
- data/lib/pry/code_object.rb +23 -0
- data/lib/pry/color_printer.rb +11 -8
- data/lib/pry/command.rb +40 -16
- data/lib/pry/command_set.rb +9 -2
- data/lib/pry/commands/cat/exception_formatter.rb +11 -10
- data/lib/pry/commands/cat/file_formatter.rb +7 -3
- data/lib/pry/commands/code_collector.rb +16 -14
- data/lib/pry/commands/easter_eggs.rb +9 -9
- data/lib/pry/commands/edit.rb +6 -2
- data/lib/pry/commands/edit/file_and_line_locator.rb +1 -1
- data/lib/pry/commands/find_method.rb +1 -1
- data/lib/pry/commands/gem_open.rb +1 -1
- data/lib/pry/commands/gem_readme.rb +25 -0
- data/lib/pry/commands/gem_search.rb +40 -0
- data/lib/pry/commands/hist.rb +2 -2
- data/lib/pry/commands/jump_to.rb +7 -7
- data/lib/pry/commands/ls/formatter.rb +1 -0
- data/lib/pry/commands/ls/jruby_hacks.rb +2 -2
- data/lib/pry/commands/ls/self_methods.rb +2 -0
- data/lib/pry/commands/play.rb +2 -2
- data/lib/pry/commands/reload_code.rb +2 -2
- data/lib/pry/commands/ri.rb +4 -0
- data/lib/pry/commands/shell_command.rb +34 -8
- data/lib/pry/commands/show_info.rb +10 -2
- data/lib/pry/commands/watch_expression/expression.rb +1 -1
- data/lib/pry/commands/whereami.rb +6 -6
- data/lib/pry/config.rb +3 -16
- data/lib/pry/config/behavior.rb +139 -49
- data/lib/pry/config/default.rb +21 -33
- data/lib/pry/config/lazy.rb +25 -0
- data/lib/pry/editor.rb +1 -1
- data/lib/pry/exceptions.rb +1 -1
- data/lib/pry/helpers/base_helpers.rb +6 -10
- data/lib/pry/helpers/documentation_helpers.rb +1 -0
- data/lib/pry/helpers/options_helpers.rb +1 -1
- data/lib/pry/helpers/text.rb +69 -76
- data/lib/pry/history.rb +22 -1
- data/lib/pry/history_array.rb +1 -1
- data/lib/pry/hooks.rb +48 -107
- data/lib/pry/indent.rb +6 -2
- data/lib/pry/input_completer.rb +118 -118
- data/lib/pry/method.rb +13 -13
- data/lib/pry/method/disowned.rb +1 -0
- data/lib/pry/method/patcher.rb +0 -3
- data/lib/pry/output.rb +37 -38
- data/lib/pry/pager.rb +11 -8
- data/lib/pry/plugins.rb +20 -5
- data/lib/pry/pry_class.rb +29 -3
- data/lib/pry/pry_instance.rb +8 -6
- data/lib/pry/repl.rb +37 -5
- data/lib/pry/repl_file_loader.rb +1 -1
- data/lib/pry/rubygem.rb +3 -1
- data/lib/pry/slop.rb +661 -0
- data/lib/pry/slop/LICENSE +20 -0
- data/lib/pry/slop/commands.rb +196 -0
- data/lib/pry/slop/option.rb +208 -0
- data/lib/pry/terminal.rb +16 -5
- data/lib/pry/test/helper.rb +11 -2
- data/lib/pry/version.rb +1 -1
- data/lib/pry/wrapped_module.rb +5 -5
- data/lib/pry/{module_candidate.rb → wrapped_module/candidate.rb} +2 -4
- metadata +14 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46f588aa884919f6d4e40f085f85e3cda1fc1976
|
4
|
+
data.tar.gz: a1107f181339016ee7cf4439e1f43ff0aabb4206
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 583cc0eaf4644ddb80520ca52eecbad442d7dc5450e2eed4f32cd201869fb7c24a49bd70effe13355a845d7a99a9e0f1b9d45145e1e0267c2e6c3155fe990cbc
|
7
|
+
data.tar.gz: 37eefe5204e90592a1256d56b90eb2d77af48f4a86b3ce5931ac5582e64536162ee683d627142787e7e838187166f078fd5f1803ee86cc6e811553b6aa2ccd62
|
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,38 @@
|
|
1
|
-
###
|
2
|
-
|
3
|
-
*
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
*
|
8
|
-
*
|
1
|
+
### HEAD
|
2
|
+
* Use `less` or system pager pager on MS Windows if it is available. [#1512](https://github.com/pry/pry/pull/1512)
|
3
|
+
* Add `Pry.configure` as an alternative to the current way of changing configuration options in `.pryrc` files. [#1502](https://github.com/pry/pry/pull/1502)
|
4
|
+
* Add `Pry::Config::Behavior#eager_load!` to add a possible workaround for issues like [#1501](https://github.com/pry/pry/issues/1501)
|
5
|
+
* Remove Slop as a runtime dependency by vendoring v3.4 as Pry::Slop.
|
6
|
+
People can depend on Slop v4 and Pry at the same time without running into version conflicts. ([#1497](https://github.com/pry/pry/issues/1497))
|
7
|
+
* Fix auto-indentation of code that uses a single-line rescue ([#1450](https://github.com/pry/pry/issues/1450))
|
8
|
+
* Remove "Pry::Config#refresh", please use "Pry::Config#clear" instead.
|
9
|
+
* Defining a method called "ls" no longer breaks the "ls" command ([#1407](https://github.com/pry/pry/issues/1407))
|
10
|
+
* Don't raise when directory permissions don't allow file expansion ([#1432](https://github.com/pry/pry/issues/1432))
|
11
|
+
* Syntax highlight <tt> tags in documentation output.
|
12
|
+
* Add support for BasicObject subclasses who implement their own #inspect (#1341)
|
13
|
+
* Fix 'include RSpec::Matchers' at the top-level (#1277)
|
14
|
+
* Add 'gem-readme' command, prints the README file bundled with a rubygem
|
15
|
+
* Add 'gem-search' command, searches for a gem with the rubygems.org HTTP API
|
16
|
+
* Fixed bug in the `cat` command where it was impossible to use line numbers with files ([#1349](https://github.com/pry/pry/issues/1349))
|
17
|
+
* Fixed uncaught Errno::EOPNOTSUPP exception when $stdout is a socket ([#1352](https://github.com/pry/pry/issues/1352))
|
18
|
+
* Display a warning when you cd'ed inside a C object and executed 'show-source' without arguments ([#691](https://github.com/pry/pry/issues/691))
|
19
|
+
* Make the stagger_output method more reliable by reusing possibly available Pry instance ([#1364](https://github.com/pry/pry/pull/1364))
|
20
|
+
* Make the 'gem-install' message less confusing by removing backticks ([#1350](https://github.com/pry/pry/pull/1350))
|
21
|
+
* Fixed error when Pry was trying to load incompatible versions of plugins ([#1312](https://github.com/pry/pry/issues/1312))
|
22
|
+
* Fixed bug when `hist --clear` led to ArgumentError ([#1340](https://github.com/pry/pry/pull/1340))
|
23
|
+
* Fixed the "uninitialized constant Pry::ObjectPath::StringScanner" exception during autocomplete ([#1330](https://github.com/pry/pry/issues/1330))
|
24
|
+
* Secured usage of colours with special characters (RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE) in Pry::Helpers::Text ([#493](https://github.com/pry/pry/issues/493#issuecomment-39232771))
|
25
|
+
* Fixed regression with `pry -e` when it messes the terminal ([#1387](https://github.com/pry/pry/issues/1387))
|
26
|
+
* Fixed regression with space prefixes of expressions ([#1369](https://github.com/pry/pry/issues/1369))
|
27
|
+
* Introduced the new way to define hooks for commands (with `Pry.hooks.add_hook("{before,after}_commandName")`). The old way is deprecated, but still supported (with `Pry.commands.{before,after}_command`) ([#651](https://github.com/pry/pry/issues/651))
|
28
|
+
* Removed old API's using `Pry::Hooks.from_hash` altogether
|
29
|
+
* Removed hints on Foreman support (see [this](https://github.com/ddollar/foreman/pull/536))
|
30
|
+
* Fixed support for the tee command ([#1334](https://github.com/pry/pry/issues/1334))
|
31
|
+
* Implemented support for CDPATH for ShellCommand ([#1433](https://github.com/pry/pry/issues/1433), [#1434](https://github.com/pry/pry/issues/1434))
|
32
|
+
* `Pry::CLI.parse_options` does not start Pry anymore ([#1393](https://github.com/pry/pry/pull/1393))
|
33
|
+
* The gem uses CPU-less platforms for Windows now ([#1410](https://github.com/pry/pry/pull/1410))
|
34
|
+
* Add `Pry::Config::Lazy` to make it easier to reimplement `Pry::Config::Default` without knowing its implementation [#1503](https://github.com/pry/pry/pull/1503/)
|
35
|
+
* Lazy load the config defaults for `Pry.config.history` and `Pry.config.gist`.
|
9
36
|
|
10
37
|
### 0.10.1
|
11
38
|
|
@@ -376,7 +403,7 @@
|
|
376
403
|
* Fewer internal methods polluting output
|
377
404
|
|
378
405
|
### 0.9.8.4 (2012/6/3)
|
379
|
-
* ~/.pry_history
|
406
|
+
* ~/.pry_history wasn't being created (if it did not exist)! FIXED
|
380
407
|
* `hist --save` saved colors! FIXED
|
381
408
|
* added Pry#add_sticky_local API for adding sticky locals to individual pry instances
|
382
409
|
|
@@ -384,7 +411,7 @@
|
|
384
411
|
* various tweaks to improve rbx support
|
385
412
|
* commands now support optional block arguments
|
386
413
|
* much improved help command
|
387
|
-
* updated method_source
|
414
|
+
* updated method_source dependency
|
388
415
|
* added wtf command
|
389
416
|
* jruby should now work in windows (though without color)
|
390
417
|
|
@@ -412,7 +439,7 @@ MAJOR NEW FEATURES
|
|
412
439
|
- added gist command (removed gist-method, new gist command is more general)
|
413
440
|
|
414
441
|
complete CHANGELOG:
|
415
|
-
* CommandError's no longer cause the current input to be
|
442
|
+
* CommandError's no longer cause the current input to be discarded
|
416
443
|
* Better syntax highlighting for rbx code code
|
417
444
|
* added cat --in to show pry input history
|
418
445
|
* prefixed temporary file names with 'pry'
|
@@ -425,7 +452,7 @@ complete CHANGELOG:
|
|
425
452
|
* added CommandSet#{before_command,after_command} for enhancing builtin commands
|
426
453
|
* added checking for namespace collisions with pry commands, set Pry.config.collision_warning
|
427
454
|
* work around namespace collisions by ensuring lines starting with a space are executed as
|
428
|
-
* ruby.work around namespace collisions by
|
455
|
+
* ruby.work around namespace collisions by pressuring lines starting with a space are executed as ruby
|
429
456
|
* added handlers for Ctrl+C (SIGINT) on jruby, these are now caught as in other ruby versions
|
430
457
|
* removed dependency on ruby_parser
|
431
458
|
* prevented colours leaking across the pry prompt
|
@@ -445,7 +472,7 @@ complete CHANGELOG:
|
|
445
472
|
|
446
473
|
### 0.9.7.4 (2011/11/5)
|
447
474
|
* ls -M now works in modules (bugfix)
|
448
|
-
* added exception
|
475
|
+
* added exception message for bad cd object/path
|
449
476
|
* no longer die when encounter exceptions in .pryrc
|
450
477
|
* baked in CoolLine support
|
451
478
|
* Pry.config.input in .pryrc now respected
|
@@ -462,7 +489,7 @@ complete CHANGELOG:
|
|
462
489
|
* changed ^D so it no longer resets indent level automatically
|
463
490
|
|
464
491
|
### 0.9.7.1 (2011/10/26)
|
465
|
-
* fixed gem
|
492
|
+
* fixed gem dependency issues
|
466
493
|
|
467
494
|
### 0.9.7 (2011/10/25)
|
468
495
|
|
@@ -503,7 +530,7 @@ complete CHANGELOG:
|
|
503
530
|
* play -m --open uses show-input to show play'd code
|
504
531
|
* added "unindent" helper to make adding help to commands easier
|
505
532
|
* local ./.pryrc now loaded after ~/.pryrc if it exists
|
506
|
-
* cat --ex N and edit --ex N now can navigate through backtrace, where cat --ex (with no args) moves
|
533
|
+
* cat --ex N and edit --ex N now can navigate through backtrace, where cat --ex (with no args) moves through successive levels of the backtrace automatically with state stored on the exception object itself
|
507
534
|
* new option Pry.config.exception_window_size determines window size for cat --ex
|
508
535
|
* input_stack now implemented - pushing objects onto a pry instance's input_stack causes the instance to read from those objects in turn as it encounters EOF on the previous object. On finishing the input_stack the input object for the pry instance is set back to Pry.config.input, if this fails, pry breaks out of the REPL (throw(:breakout)) with an error message
|
509
536
|
* Pry.config.system() defines how pry runs system commands
|
@@ -536,10 +563,10 @@ complete CHANGELOG:
|
|
536
563
|
* fixed bug #200 ( https://github.com/pry/pry/issues/200 )- string interpolation bug (thanks to ryanf)
|
537
564
|
* show-doc and stat now display method visibility (update WIKI)
|
538
565
|
* got rid of warnings caused by stricter ruby 1.9.3 rules
|
539
|
-
* remove interpolation of command names and fix interpolation error
|
566
|
+
* remove interpolation of command names and fix interpolation error message (update WIKI) (thanks ryanf!)
|
540
567
|
* 'nested sessions' now use binding stacks (so each instance manages its own collection of bindings without spawning other instances)
|
541
568
|
* 'cd ..' just pops a binding off the binding_stack with special behaviour when only one binding in stack - it breaks out of the repl loop
|
542
|
-
* added switch-to command (like jump-to but
|
569
|
+
* added switch-to command (like jump-to but doesn't unwind the stack)
|
543
570
|
* show-method and show-doc now accept multiple method names
|
544
571
|
* control_d hook added (Pry.config.control_d_handler)
|
545
572
|
* behaviour of ^d is now to break out of current expr if in multi-line expr, or break out of current context if nested, or break out of pry repl loop if at top-level
|
@@ -633,7 +660,7 @@ complete CHANGELOG:
|
|
633
660
|
* -I mode for pry commandline
|
634
661
|
* --color mode for pry commandline
|
635
662
|
* clean up requires (put them all in one place)
|
636
|
-
* simple-prompt command and toggle-color
|
663
|
+
* simple-prompt command and toggle-color command.
|
637
664
|
|
638
665
|
### 0.6.3 (2011/2/28)
|
639
666
|
* Using MethodSource 0.3.4 so 1.8 show-method support provided
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
[![Build Status](https://img.shields.io/travis/pry/pry.svg)](https://travis-ci.org/pry/pry)
|
2
2
|
[![Code Climate](https://img.shields.io/codeclimate/github/pry/pry.svg)](https://codeclimate.com/github/pry/pry)
|
3
|
-
[![Inline docs](http://inch-ci.org/github/pry/pry.svg)](http://inch-ci.org/github/pry/pry)
|
3
|
+
[![Inline docs](http://inch-ci.org/github/pry/pry.svg?style=shields)](http://inch-ci.org/github/pry/pry)
|
4
4
|
|
5
5
|
<center>
|
6
6
|
![The Pry Logo](https://dl.dropbox.com/u/26521875/pry%20stuff/logo/pry_logo_350.png)
|
7
7
|
|
8
|
-
© John Mair ([banisterfiend](https://twitter.com/banisterfiend))
|
8
|
+
© John Mair ([banisterfiend](https://twitter.com/banisterfiend)) 2016<br>
|
9
9
|
|
10
|
-
**Please** [DONATE](http://
|
10
|
+
**Please** [DONATE](http://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!
|
11
11
|
|
12
12
|
**Sponsors**
|
13
13
|
|
14
|
-
[
|
15
|
-
[Atomic Object](
|
14
|
+
[Launch School](https://launchschool.com)<br/>
|
15
|
+
[Atomic Object](https://atomicobject.com/)<br/>
|
16
16
|
[Hashrocket](http://hashrocket.com/)<br/>
|
17
|
-
[Intridea](http://intridea.com
|
18
|
-
[Gaslight](
|
17
|
+
[Intridea](http://www.intridea.com)<br/>
|
18
|
+
[Gaslight](https://teamgaslight.com/home)<br/>
|
19
19
|
|
20
20
|
**Other Resources**
|
21
21
|
|
22
|
-
[Skip to the website (recommended)](http://
|
22
|
+
[Skip to the website (recommended)](http://pryrepl.org/) <br />
|
23
23
|
[Skip to the wiki](https://github.com/pry/pry/wiki)
|
24
24
|
</center>
|
25
25
|
|
@@ -44,7 +44,7 @@ including:
|
|
44
44
|
|
45
45
|
Pry also aims to be more than an IRB replacement; it is an
|
46
46
|
attempt to bring REPL driven programming to the Ruby language. It is
|
47
|
-
currently not as powerful as tools like [SLIME](
|
47
|
+
currently not as powerful as tools like [SLIME](https://en.wikipedia.org/wiki/SLIME) for lisp, but that is the
|
48
48
|
general direction Pry is heading.
|
49
49
|
|
50
50
|
Pry is also fairly flexible and allows significant user
|
@@ -64,8 +64,8 @@ methods. The additional docs are accessed through the `show-doc` and
|
|
64
64
|
|
65
65
|
* Install the [gem](https://rubygems.org/gems/pry): `gem install pry`
|
66
66
|
* Browse the comprehensive [documentation at the official Pry wiki](https://github.com/pry/pry/wiki)
|
67
|
-
* Read the [YARD API documentation](http://
|
68
|
-
* See the [source code](
|
67
|
+
* Read the [YARD API documentation](http://www.rubydoc.info/github/pry/pry/)
|
68
|
+
* See the [source code](https://github.com/pry/pry)
|
69
69
|
|
70
70
|
### Commands
|
71
71
|
|
@@ -137,20 +137,22 @@ implementing developer consoles and applying hot patches.
|
|
137
137
|
|
138
138
|
code:
|
139
139
|
|
140
|
-
|
141
|
-
|
140
|
+
```ruby
|
141
|
+
# test.rb
|
142
|
+
require 'pry'
|
142
143
|
|
143
|
-
|
144
|
-
|
145
|
-
|
144
|
+
class A
|
145
|
+
def hello() puts "hello world!" end
|
146
|
+
end
|
146
147
|
|
147
|
-
|
148
|
+
a = A.new
|
148
149
|
|
149
|
-
|
150
|
-
|
150
|
+
# start a REPL session
|
151
|
+
binding.pry
|
151
152
|
|
152
|
-
|
153
|
-
|
153
|
+
# program resumes here (after pry session)
|
154
|
+
puts "program resumes here."
|
155
|
+
```
|
154
156
|
|
155
157
|
Pry session:
|
156
158
|
|
@@ -314,10 +316,10 @@ We can also use `ri` in the normal way:
|
|
314
316
|
|
315
317
|
### Gist integration
|
316
318
|
|
317
|
-
If the `gist` gem is installed then method source or documentation can be gisted to
|
319
|
+
If the `gist` gem is installed then method source or documentation can be gisted to GitHub with the
|
318
320
|
`gist` command. The `gist` command is capable of gisting [almost any REPL content](https://gist.github.com/cae143e4533416529726), including methods, documentation,
|
319
321
|
input expressions, command source, and so on. In the example below we will gist the C source
|
320
|
-
code for the `Symbol#to_proc` method to
|
322
|
+
code for the `Symbol#to_proc` method to GitHub:
|
321
323
|
|
322
324
|
pry(main)> gist -m Symbol#to_proc
|
323
325
|
Gist created at https://gist.github.com/5332c38afc46d902ce46 and added to clipboard.
|
@@ -351,7 +353,7 @@ Many other commands are available in Pry; to see the full list type
|
|
351
353
|
with basic instructions for use; some commands have a more extensive
|
352
354
|
help that can be accessed via typing `command_name --help`. A command
|
353
355
|
will typically say in its description if the `--help` option is
|
354
|
-
|
356
|
+
available.
|
355
357
|
|
356
358
|
### Use Pry as your Rails Console
|
357
359
|
|
@@ -397,10 +399,10 @@ between commands and running commands in background
|
|
397
399
|
|
398
400
|
### Contact
|
399
401
|
|
400
|
-
Problems or questions?
|
402
|
+
Problems or questions? File an issue at [GitHub](https://github.com/pry/pry/issues).
|
401
403
|
|
402
404
|
### Contributors
|
403
405
|
|
404
|
-
Pry is primarily the work of [John Mair (banisterfiend)](
|
406
|
+
Pry is primarily the work of [John Mair (banisterfiend)](https://github.com/banister), for full list
|
405
407
|
of contributors see the
|
406
408
|
[CONTRIBUTORS](https://github.com/pry/pry/blob/master/CONTRIBUTORS) file.
|
data/bin/pry
CHANGED
@@ -5,12 +5,8 @@
|
|
5
5
|
|
6
6
|
$0 = 'pry'
|
7
7
|
|
8
|
-
|
9
|
-
require 'pry'
|
10
|
-
rescue LoadError
|
11
|
-
require 'rubygems'
|
12
|
-
require 'pry'
|
13
|
-
end
|
8
|
+
require 'pry'
|
14
9
|
|
15
10
|
# Process command line options and run Pry
|
16
|
-
Pry::CLI.parse_options
|
11
|
+
opts = Pry::CLI.parse_options
|
12
|
+
Pry::CLI.start(opts)
|
data/lib/pry.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# (C) John Mair (banisterfiend)
|
1
|
+
# (C) John Mair (banisterfiend) 2016
|
2
2
|
# MIT License
|
3
3
|
#
|
4
4
|
require 'pp'
|
@@ -124,8 +124,9 @@ end
|
|
124
124
|
require 'method_source'
|
125
125
|
require 'shellwords'
|
126
126
|
require 'stringio'
|
127
|
+
require 'strscan'
|
127
128
|
require 'coderay'
|
128
|
-
require 'slop'
|
129
|
+
require 'pry/slop'
|
129
130
|
require 'rbconfig'
|
130
131
|
require 'tempfile'
|
131
132
|
require 'pathname'
|
data/lib/pry/cli.rb
CHANGED
@@ -19,7 +19,7 @@ class Pry
|
|
19
19
|
# as CLI options.
|
20
20
|
attr_accessor :input_args
|
21
21
|
|
22
|
-
# Add another set of CLI options (a Slop block)
|
22
|
+
# Add another set of CLI options (a Pry::Slop block)
|
23
23
|
def add_options(&block)
|
24
24
|
if options
|
25
25
|
old_options = options
|
@@ -62,28 +62,58 @@ class Pry
|
|
62
62
|
raise NoOptionsError, "No command line options defined! Use Pry::CLI.add_options to add command line options."
|
63
63
|
end
|
64
64
|
|
65
|
+
# Load config files etc first, ensuring that cli options will take precedence.
|
66
|
+
Pry.initial_session_setup
|
67
|
+
|
65
68
|
self.input_args = args
|
66
69
|
|
67
70
|
begin
|
68
|
-
opts = Slop.parse!(
|
71
|
+
opts = Pry::Slop.parse!(
|
69
72
|
args,
|
70
73
|
:help => true,
|
71
74
|
:multiple_switches => false,
|
72
75
|
:strict => true,
|
73
76
|
&options
|
74
77
|
)
|
75
|
-
rescue Slop::InvalidOptionError
|
78
|
+
rescue Pry::Slop::InvalidOptionError
|
76
79
|
# Display help message on unknown switches and exit.
|
77
|
-
puts Slop.new(&options)
|
80
|
+
puts Pry::Slop.new(&options)
|
78
81
|
exit
|
79
82
|
end
|
80
83
|
|
84
|
+
Pry.final_session_setup
|
85
|
+
|
81
86
|
# Option processors are optional.
|
82
87
|
if option_processors
|
83
88
|
option_processors.each { |processor| processor.call(opts) }
|
84
89
|
end
|
85
90
|
|
86
|
-
|
91
|
+
opts
|
92
|
+
end
|
93
|
+
|
94
|
+
def start(opts)
|
95
|
+
exit if opts.help?
|
96
|
+
|
97
|
+
# invoked via cli
|
98
|
+
Pry.cli = true
|
99
|
+
|
100
|
+
# create the actual context
|
101
|
+
if opts[:context]
|
102
|
+
Pry.initial_session_setup
|
103
|
+
context = Pry.binding_for(eval(opts[:context]))
|
104
|
+
Pry.final_session_setup
|
105
|
+
else
|
106
|
+
context = Pry.toplevel_binding
|
107
|
+
end
|
108
|
+
|
109
|
+
if Pry::CLI.input_args.any? && Pry::CLI.input_args != ["pry"]
|
110
|
+
full_name = File.expand_path(Pry::CLI.input_args.first)
|
111
|
+
Pry.load_file_through_repl(full_name)
|
112
|
+
exit
|
113
|
+
end
|
114
|
+
|
115
|
+
# Start the session (running any code passed with -e, if there is any)
|
116
|
+
Pry.start(context, :input => StringIO.new(Pry.config.exec_string))
|
87
117
|
end
|
88
118
|
|
89
119
|
end
|
@@ -93,11 +123,8 @@ class Pry
|
|
93
123
|
end
|
94
124
|
|
95
125
|
|
96
|
-
# String that is built to be executed on start (created by -e and -exec switches)
|
97
|
-
exec_string = ""
|
98
|
-
|
99
126
|
# Bring in options defined by plugins
|
100
|
-
Slop.new do
|
127
|
+
Pry::Slop.new do
|
101
128
|
on "no-plugins" do
|
102
129
|
Pry.config.should_load_plugins = false
|
103
130
|
end
|
@@ -112,11 +139,12 @@ Pry::CLI.add_options do
|
|
112
139
|
banner %{Usage: pry [OPTIONS]
|
113
140
|
Start a Pry session.
|
114
141
|
See http://pryrepl.org/ for more information.
|
115
|
-
Copyright (c)
|
142
|
+
Copyright (c) 2016 John Mair (banisterfiend)
|
116
143
|
--
|
117
144
|
}
|
118
145
|
on :e, :exec=, "A line of code to execute in context before the session starts" do |input|
|
119
|
-
exec_string
|
146
|
+
Pry.config.exec_string += "\n" if Pry.config.exec_string.length > 0
|
147
|
+
Pry.config.exec_string += input
|
120
148
|
end
|
121
149
|
|
122
150
|
on "no-pager", "Disable pager for long output" do
|
@@ -194,27 +222,4 @@ Copyright (c) 2013 John Mair (banisterfiend)
|
|
194
222
|
"Start the session in the specified context. Equivalent to `context.pry` in a session.",
|
195
223
|
:default => "Pry.toplevel_binding"
|
196
224
|
)
|
197
|
-
end.add_option_processor do |opts|
|
198
|
-
|
199
|
-
exit if opts.help?
|
200
|
-
|
201
|
-
# invoked via cli
|
202
|
-
Pry.cli = true
|
203
|
-
|
204
|
-
# create the actual context
|
205
|
-
if opts[:context]
|
206
|
-
Pry.initial_session_setup
|
207
|
-
context = Pry.binding_for(eval(opts[:context]))
|
208
|
-
else
|
209
|
-
context = Pry.toplevel_binding
|
210
|
-
end
|
211
|
-
|
212
|
-
if Pry::CLI.input_args.any? && Pry::CLI.input_args != ["pry"]
|
213
|
-
full_name = File.expand_path(Pry::CLI.input_args.first)
|
214
|
-
Pry.load_file_through_repl(full_name)
|
215
|
-
exit
|
216
|
-
end
|
217
|
-
|
218
|
-
# Start the session (running any code passed with -e, if there is any)
|
219
|
-
Pry.start(context, :input => StringIO.new(exec_string))
|
220
225
|
end
|
data/lib/pry/code.rb
CHANGED
@@ -92,7 +92,7 @@ class Pry
|
|
92
92
|
LOC.new(line, lineno + start_line.to_i) }
|
93
93
|
@code_type = code_type
|
94
94
|
|
95
|
-
@with_marker = @with_indentation = nil
|
95
|
+
@with_marker = @with_indentation = @with_line_numbers = nil
|
96
96
|
end
|
97
97
|
|
98
98
|
# Append the given line. +lineno+ is one more than the last existing
|
@@ -337,6 +337,11 @@ class Pry
|
|
337
337
|
end
|
338
338
|
undef =~
|
339
339
|
|
340
|
+
# Check whether String responds to missing methods.
|
341
|
+
def respond_to_missing?(name, include_all = false)
|
342
|
+
''.respond_to?(name, include_all)
|
343
|
+
end
|
344
|
+
|
340
345
|
protected
|
341
346
|
|
342
347
|
# An abstraction of the `dup.instance_eval` pattern used throughout this
|