pry 0.10.4-java → 0.11.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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +52 -18
  3. data/LICENSE +1 -1
  4. data/README.md +32 -31
  5. data/bin/pry +3 -7
  6. data/lib/pry.rb +4 -4
  7. data/lib/pry/basic_object.rb +6 -0
  8. data/lib/pry/cli.rb +39 -34
  9. data/lib/pry/code.rb +6 -1
  10. data/lib/pry/code/code_file.rb +8 -2
  11. data/lib/pry/code_object.rb +23 -0
  12. data/lib/pry/color_printer.rb +20 -11
  13. data/lib/pry/command.rb +40 -16
  14. data/lib/pry/command_set.rb +9 -2
  15. data/lib/pry/commands/cat/exception_formatter.rb +11 -10
  16. data/lib/pry/commands/cat/file_formatter.rb +7 -3
  17. data/lib/pry/commands/code_collector.rb +16 -14
  18. data/lib/pry/commands/easter_eggs.rb +9 -9
  19. data/lib/pry/commands/edit.rb +7 -3
  20. data/lib/pry/commands/edit/file_and_line_locator.rb +1 -1
  21. data/lib/pry/commands/find_method.rb +1 -1
  22. data/lib/pry/commands/gem_open.rb +1 -1
  23. data/lib/pry/commands/gem_readme.rb +25 -0
  24. data/lib/pry/commands/gem_search.rb +40 -0
  25. data/lib/pry/commands/hist.rb +2 -2
  26. data/lib/pry/commands/jump_to.rb +7 -7
  27. data/lib/pry/commands/ls.rb +3 -1
  28. data/lib/pry/commands/ls/constants.rb +12 -1
  29. data/lib/pry/commands/ls/formatter.rb +1 -0
  30. data/lib/pry/commands/ls/jruby_hacks.rb +2 -2
  31. data/lib/pry/commands/ls/self_methods.rb +2 -0
  32. data/lib/pry/commands/play.rb +2 -2
  33. data/lib/pry/commands/reload_code.rb +2 -2
  34. data/lib/pry/commands/ri.rb +4 -0
  35. data/lib/pry/commands/shell_command.rb +34 -8
  36. data/lib/pry/commands/show_info.rb +10 -2
  37. data/lib/pry/commands/watch_expression/expression.rb +1 -1
  38. data/lib/pry/commands/whereami.rb +7 -6
  39. data/lib/pry/config.rb +3 -16
  40. data/lib/pry/config/behavior.rb +140 -49
  41. data/lib/pry/config/default.rb +21 -33
  42. data/lib/pry/config/memoization.rb +44 -0
  43. data/lib/pry/core_extensions.rb +12 -2
  44. data/lib/pry/editor.rb +1 -1
  45. data/lib/pry/exceptions.rb +1 -1
  46. data/lib/pry/forwardable.rb +23 -0
  47. data/lib/pry/helpers/base_helpers.rb +6 -10
  48. data/lib/pry/helpers/documentation_helpers.rb +1 -0
  49. data/lib/pry/helpers/options_helpers.rb +1 -1
  50. data/lib/pry/helpers/text.rb +69 -75
  51. data/lib/pry/history.rb +22 -1
  52. data/lib/pry/history_array.rb +1 -1
  53. data/lib/pry/hooks.rb +48 -107
  54. data/lib/pry/indent.rb +6 -2
  55. data/lib/pry/input_completer.rb +138 -120
  56. data/lib/pry/last_exception.rb +2 -2
  57. data/lib/pry/method.rb +15 -15
  58. data/lib/pry/method/disowned.rb +1 -0
  59. data/lib/pry/method/patcher.rb +0 -3
  60. data/lib/pry/output.rb +37 -38
  61. data/lib/pry/pager.rb +11 -8
  62. data/lib/pry/plugins.rb +20 -5
  63. data/lib/pry/pry_class.rb +30 -4
  64. data/lib/pry/pry_instance.rb +8 -6
  65. data/lib/pry/repl.rb +38 -8
  66. data/lib/pry/repl_file_loader.rb +1 -1
  67. data/lib/pry/rubygem.rb +3 -1
  68. data/lib/pry/slop.rb +661 -0
  69. data/lib/pry/slop/LICENSE +20 -0
  70. data/lib/pry/slop/commands.rb +196 -0
  71. data/lib/pry/slop/option.rb +208 -0
  72. data/lib/pry/terminal.rb +16 -5
  73. data/lib/pry/test/helper.rb +12 -3
  74. data/lib/pry/version.rb +1 -1
  75. data/lib/pry/wrapped_module.rb +7 -7
  76. data/lib/pry/{module_candidate.rb → wrapped_module/candidate.rb} +7 -13
  77. metadata +14 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a5fb1955b168cfa4949d5c7f74265caeceb5dfd3
4
- data.tar.gz: 08a2b56e67aef2cdaf4fb6c4aa3ac0c1e8bf395f
3
+ metadata.gz: b5929b7f4d236512da2e03bc50270cd4fc6c9b2b
4
+ data.tar.gz: 4576abab2169c70a2b7a156a69773e6ca5412af0
5
5
  SHA512:
6
- metadata.gz: ac3e0dc8d3caca34ebcb87674604f64c0008c8dbead47e072530509cae9d80e1d1bc364b6fc8bfde7bfe9b18c84c8ec32528f60dfdc4c7d99206097c732b19ac
7
- data.tar.gz: 088a2f47add7c3e16ca078f4e84ebac15b05051d945b3f5c25a295292ec6478bf5bbe0c6752a143f16d323116fbf1e19ebd72b5fbbfa716830a9181a768fe20a
6
+ metadata.gz: b034eb8f0ed3a69ee772e4d173e790d44d424a8a17e139440520b04a971a8c1ddf475c935d374e35cddcc9d50e1ff46b4b612cbb2773337fc79ada870830df7d
7
+ data.tar.gz: c1599009f2077755538bb189b6a5bd47baf28611efc612b5039411a10042f9995dad3d5c3dfb48715e8c244781e892377560005e75bb174ab2c5316fba8839f2
data/CHANGELOG.md CHANGED
@@ -1,11 +1,45 @@
1
- ### 0.10.3
2
-
3
- * cherry-pick 0d1d72b and e0e5c75 to fix the install of Pry on Windows.
4
-
5
- ### 0.10.2
6
-
7
- * cherry-pick c2ed9ec135bd791a32c70fbe05cc0508ea17c4040e from master (fix inf. loop with prepended methods source retrieval)
8
- * Update some specs for recent ruby versions (2.2+)
1
+ ### HEAD
2
+
3
+ * Add alias 'whereami[?!]+' for 'whereami' command. ([#1597](https://github.com/pry/pry/pull/1597))
4
+ * Improve Ruby 2.4 support ([#1611](https://github.com/pry/pry/pull/1611)):
5
+ * Deprecated constants are hidden from `ls` output by default, use the `-d` switch to see them.
6
+ * Fix warnings that originate in Pry while using the repl.
7
+ * Improve completion speed in large applications. ([#1588](https://github.com/pry/pry/pull/1588))
8
+ * Pry::ColorPrinter.pp: add `newline` argument and pass it on to PP. ([#1603](https://github.com/pry/pry/pull/1603))
9
+ * Use `less` or system pager pager on MS Windows if it is available. ([#1512](https://github.com/pry/pry/pull/1512))
10
+ * 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))
11
+ * Add `Pry::Config::Behavior#eager_load!` to add a possible workaround for issues like ([#1501](https://github.com/pry/pry/issues/1501))
12
+ * Remove Slop as a runtime dependency by vendoring v3.4 as Pry::Slop.
13
+ 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))
14
+ * Fix auto-indentation of code that uses a single-line rescue ([#1450](https://github.com/pry/pry/issues/1450))
15
+ * Remove "Pry::Config#refresh", please use "Pry::Config#clear" instead.
16
+ * Defining a method called "ls" no longer breaks the "ls" command ([#1407](https://github.com/pry/pry/issues/1407))
17
+ * Don't raise when directory permissions don't allow file expansion ([#1432](https://github.com/pry/pry/issues/1432))
18
+ * Syntax highlight <tt> tags in documentation output.
19
+ * Add support for BasicObject subclasses who implement their own #inspect (#1341)
20
+ * Fix 'include RSpec::Matchers' at the top-level (#1277)
21
+ * Add 'gem-readme' command, prints the README file bundled with a rubygem
22
+ * Add 'gem-search' command, searches for a gem with the rubygems.org HTTP API
23
+ * Fixed bug in the `cat` command where it was impossible to use line numbers with files ([#1349](https://github.com/pry/pry/issues/1349))
24
+ * Fixed uncaught Errno::EOPNOTSUPP exception when $stdout is a socket ([#1352](https://github.com/pry/pry/issues/1352))
25
+ * 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))
26
+ * Make the stagger_output method more reliable by reusing possibly available Pry instance ([#1364](https://github.com/pry/pry/pull/1364))
27
+ * Make the 'gem-install' message less confusing by removing backticks ([#1350](https://github.com/pry/pry/pull/1350))
28
+ * Fixed error when Pry was trying to load incompatible versions of plugins ([#1312](https://github.com/pry/pry/issues/1312))
29
+ * Fixed bug when `hist --clear` led to ArgumentError ([#1340](https://github.com/pry/pry/pull/1340))
30
+ * Fixed the "uninitialized constant Pry::ObjectPath::StringScanner" exception during autocomplete ([#1330](https://github.com/pry/pry/issues/1330))
31
+ * 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))
32
+ * Fixed regression with `pry -e` when it messes the terminal ([#1387](https://github.com/pry/pry/issues/1387))
33
+ * Fixed regression with space prefixes of expressions ([#1369](https://github.com/pry/pry/issues/1369))
34
+ * 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))
35
+ * Removed old API's using `Pry::Hooks.from_hash` altogether
36
+ * Removed hints on Foreman support (see [this](https://github.com/ddollar/foreman/pull/536))
37
+ * Fixed support for the tee command ([#1334](https://github.com/pry/pry/issues/1334))
38
+ * Implemented support for CDPATH for ShellCommand ([#1433](https://github.com/pry/pry/issues/1433), [#1434](https://github.com/pry/pry/issues/1434))
39
+ * `Pry::CLI.parse_options` does not start Pry anymore ([#1393](https://github.com/pry/pry/pull/1393))
40
+ * The gem uses CPU-less platforms for Windows now ([#1410](https://github.com/pry/pry/pull/1410))
41
+ * Add `Pry::Config::Memoization` to make it easier to implement your own `Pry::Config::Default` class.([#1503](https://github.com/pry/pry/pull/1503/))
42
+ * Lazy load the config defaults for `Pry.config.history` and `Pry.config.gist`.
9
43
 
10
44
  ### 0.10.1
11
45
 
@@ -376,7 +410,7 @@
376
410
  * Fewer internal methods polluting output
377
411
 
378
412
  ### 0.9.8.4 (2012/6/3)
379
- * ~/.pry_history wasnt being created (if it did not exist)! FIXED
413
+ * ~/.pry_history wasn't being created (if it did not exist)! FIXED
380
414
  * `hist --save` saved colors! FIXED
381
415
  * added Pry#add_sticky_local API for adding sticky locals to individual pry instances
382
416
 
@@ -384,7 +418,7 @@
384
418
  * various tweaks to improve rbx support
385
419
  * commands now support optional block arguments
386
420
  * much improved help command
387
- * updated method_source dependencya
421
+ * updated method_source dependency
388
422
  * added wtf command
389
423
  * jruby should now work in windows (though without color)
390
424
 
@@ -412,7 +446,7 @@ MAJOR NEW FEATURES
412
446
  - added gist command (removed gist-method, new gist command is more general)
413
447
 
414
448
  complete CHANGELOG:
415
- * CommandError's no longer cause the current input to be disgarded
449
+ * CommandError's no longer cause the current input to be discarded
416
450
  * Better syntax highlighting for rbx code code
417
451
  * added cat --in to show pry input history
418
452
  * prefixed temporary file names with 'pry'
@@ -425,7 +459,7 @@ complete CHANGELOG:
425
459
  * added CommandSet#{before_command,after_command} for enhancing builtin commands
426
460
  * added checking for namespace collisions with pry commands, set Pry.config.collision_warning
427
461
  * work around namespace collisions by ensuring lines starting with a space are executed as
428
- * ruby.work around namespace collisions by prensuring lines starting with a space are executed as ruby
462
+ * ruby.work around namespace collisions by pressuring lines starting with a space are executed as ruby
429
463
  * added handlers for Ctrl+C (SIGINT) on jruby, these are now caught as in other ruby versions
430
464
  * removed dependency on ruby_parser
431
465
  * prevented colours leaking across the pry prompt
@@ -445,7 +479,7 @@ complete CHANGELOG:
445
479
 
446
480
  ### 0.9.7.4 (2011/11/5)
447
481
  * ls -M now works in modules (bugfix)
448
- * added exception msg for bad cd object/path
482
+ * added exception message for bad cd object/path
449
483
  * no longer die when encounter exceptions in .pryrc
450
484
  * baked in CoolLine support
451
485
  * Pry.config.input in .pryrc now respected
@@ -462,7 +496,7 @@ complete CHANGELOG:
462
496
  * changed ^D so it no longer resets indent level automatically
463
497
 
464
498
  ### 0.9.7.1 (2011/10/26)
465
- * fixed gem dependecy issues
499
+ * fixed gem dependency issues
466
500
 
467
501
  ### 0.9.7 (2011/10/25)
468
502
 
@@ -503,7 +537,7 @@ complete CHANGELOG:
503
537
  * play -m --open uses show-input to show play'd code
504
538
  * added "unindent" helper to make adding help to commands easier
505
539
  * 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 throuh successive levels of the backtrace automatically with state stored on the exceptino object itself
540
+ * 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
541
  * new option Pry.config.exception_window_size determines window size for cat --ex
508
542
  * 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
543
  * Pry.config.system() defines how pry runs system commands
@@ -536,10 +570,10 @@ complete CHANGELOG:
536
570
  * fixed bug #200 ( https://github.com/pry/pry/issues/200 )- string interpolation bug (thanks to ryanf)
537
571
  * show-doc and stat now display method visibility (update WIKI)
538
572
  * got rid of warnings caused by stricter ruby 1.9.3 rules
539
- * remove interpolation of command names and fix interpolation error messag (update WIKI) (thanks ryanf!)
573
+ * remove interpolation of command names and fix interpolation error message (update WIKI) (thanks ryanf!)
540
574
  * 'nested sessions' now use binding stacks (so each instance manages its own collection of bindings without spawning other instances)
541
575
  * '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 doesnt unwind the stack)
576
+ * added switch-to command (like jump-to but doesn't unwind the stack)
543
577
  * show-method and show-doc now accept multiple method names
544
578
  * control_d hook added (Pry.config.control_d_handler)
545
579
  * 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 +667,7 @@ complete CHANGELOG:
633
667
  * -I mode for pry commandline
634
668
  * --color mode for pry commandline
635
669
  * clean up requires (put them all in one place)
636
- * simple-prompt command and toggle-color commandd.
670
+ * simple-prompt command and toggle-color command.
637
671
 
638
672
  ### 0.6.3 (2011/2/28)
639
673
  * Using MethodSource 0.3.4 so 1.8 show-method support provided
data/LICENSE CHANGED
@@ -3,7 +3,7 @@ License
3
3
 
4
4
  (The MIT License)
5
5
 
6
- Copyright (c) 2013 John Mair (banisterfiend)
6
+ Copyright (c) 2016 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
data/README.md CHANGED
@@ -1,27 +1,26 @@
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
+ <br><br>
5
+ ![logo for Pry](https://dl.dropbox.com/u/26521875/pry%20stuff/logo/pry_logo_350.png)
4
6
 
5
- <center>
6
- ![The Pry Logo](https://dl.dropbox.com/u/26521875/pry%20stuff/logo/pry_logo_350.png)
7
+ © John Mair ([banisterfiend](https://twitter.com/banisterfiend)) 2016<br>
7
8
 
8
- © John Mair ([banisterfiend](https://twitter.com/banisterfiend)) 2013<br>
9
-
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
+ **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
10
 
12
11
  **Sponsors**
13
12
 
14
- [Tealeaf Academy](http://www.gotealeaf.com)<br/>
15
- [Atomic Object](http://www.atomicobject.com/)<br/>
16
- [Hashrocket](http://hashrocket.com/)<br/>
17
- [Intridea](http://intridea.com/)<br/>
18
- [Gaslight](http://gaslight.co/home)<br/>
13
+ [Launch School](https://launchschool.com)<br/>
14
+ [Atomic Object](https://atomicobject.com/)<br/>
15
+ [Hashrocket](https://hashrocket.com/)<br/>
16
+ [Intridea](http://www.intridea.com)<br/>
17
+ [Gaslight](https://teamgaslight.com)<br/>
19
18
 
20
19
  **Other Resources**
21
20
 
22
- [Skip to the website (recommended)](http://pry.github.com) <br />
21
+ [Skip to the website (recommended)](http://pryrepl.org/) <br />
23
22
  [Skip to the wiki](https://github.com/pry/pry/wiki)
24
- </center>
23
+
25
24
 
26
25
  Pry is a powerful alternative to the standard IRB shell for Ruby. It is
27
26
  written from scratch to provide a number of advanced features,
@@ -44,7 +43,7 @@ including:
44
43
 
45
44
  Pry also aims to be more than an IRB replacement; it is an
46
45
  attempt to bring REPL driven programming to the Ruby language. It is
47
- currently not as powerful as tools like [SLIME](http://en.wikipedia.org/wiki/SLIME) for lisp, but that is the
46
+ currently not as powerful as tools like [SLIME](https://en.wikipedia.org/wiki/SLIME) for lisp, but that is the
48
47
  general direction Pry is heading.
49
48
 
50
49
  Pry is also fairly flexible and allows significant user
@@ -64,8 +63,8 @@ methods. The additional docs are accessed through the `show-doc` and
64
63
 
65
64
  * Install the [gem](https://rubygems.org/gems/pry): `gem install pry`
66
65
  * Browse the comprehensive [documentation at the official Pry wiki](https://github.com/pry/pry/wiki)
67
- * Read the [YARD API documentation](http://rdoc.info/github/pry/pry/master/file/README.markdown)
68
- * See the [source code](http://github.com/pry/pry)
66
+ * Read the [YARD API documentation](http://www.rubydoc.info/github/pry/pry/)
67
+ * See the [source code](https://github.com/pry/pry)
69
68
 
70
69
  ### Commands
71
70
 
@@ -137,20 +136,22 @@ implementing developer consoles and applying hot patches.
137
136
 
138
137
  code:
139
138
 
140
- # test.rb
141
- require 'pry'
139
+ ```ruby
140
+ # test.rb
141
+ require 'pry'
142
142
 
143
- class A
144
- def hello() puts "hello world!" end
145
- end
143
+ class A
144
+ def hello() puts "hello world!" end
145
+ end
146
146
 
147
- a = A.new
147
+ a = A.new
148
148
 
149
- # start a REPL session
150
- binding.pry
149
+ # start a REPL session
150
+ binding.pry
151
151
 
152
- # program resumes here (after pry session)
153
- puts "program resumes here."
152
+ # program resumes here (after pry session)
153
+ puts "program resumes here."
154
+ ```
154
155
 
155
156
  Pry session:
156
157
 
@@ -314,10 +315,10 @@ We can also use `ri` in the normal way:
314
315
 
315
316
  ### Gist integration
316
317
 
317
- If the `gist` gem is installed then method source or documentation can be gisted to github with the
318
+ If the `gist` gem is installed then method source or documentation can be gisted to GitHub with the
318
319
  `gist` command. The `gist` command is capable of gisting [almost any REPL content](https://gist.github.com/cae143e4533416529726), including methods, documentation,
319
320
  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 github:
321
+ code for the `Symbol#to_proc` method to GitHub:
321
322
 
322
323
  pry(main)> gist -m Symbol#to_proc
323
324
  Gist created at https://gist.github.com/5332c38afc46d902ce46 and added to clipboard.
@@ -351,7 +352,7 @@ Many other commands are available in Pry; to see the full list type
351
352
  with basic instructions for use; some commands have a more extensive
352
353
  help that can be accessed via typing `command_name --help`. A command
353
354
  will typically say in its description if the `--help` option is
354
- avaiable.
355
+ available.
355
356
 
356
357
  ### Use Pry as your Rails Console
357
358
 
@@ -397,10 +398,10 @@ between commands and running commands in background
397
398
 
398
399
  ### Contact
399
400
 
400
- Problems or questions? file an issue at [github](https://github.com/pry/pry/issues)
401
+ Problems or questions? File an issue at [GitHub](https://github.com/pry/pry/issues).
401
402
 
402
403
  ### Contributors
403
404
 
404
- Pry is primarily the work of [John Mair (banisterfiend)](http://github.com/banister), for full list
405
+ Pry is primarily the work of [John Mair (banisterfiend)](https://github.com/banister), for full list
405
406
  of contributors see the
406
407
  [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
- begin
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,13 +1,12 @@
1
- # (C) John Mair (banisterfiend) 2013
1
+ # (C) John Mair (banisterfiend) 2016
2
2
  # MIT License
3
3
  #
4
4
  require 'pp'
5
-
5
+ require 'pry/forwardable'
6
6
  require 'pry/input_lock'
7
7
  require 'pry/exceptions'
8
8
  require 'pry/helpers/base_helpers'
9
9
  require 'pry/hooks'
10
- require 'forwardable'
11
10
 
12
11
  class Pry
13
12
  # The default hooks - display messages when beginning and ending Pry sessions.
@@ -124,8 +123,9 @@ end
124
123
  require 'method_source'
125
124
  require 'shellwords'
126
125
  require 'stringio'
126
+ require 'strscan'
127
127
  require 'coderay'
128
- require 'slop'
128
+ require 'pry/slop'
129
129
  require 'rbconfig'
130
130
  require 'tempfile'
131
131
  require 'pathname'
@@ -0,0 +1,6 @@
1
+ class Pry::BasicObject < BasicObject
2
+ [:Kernel, :Pry].each do |constant|
3
+ const_set constant, ::Object.const_get(constant)
4
+ end
5
+ include Kernel
6
+ end
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
- self
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) 2013 John Mair (banisterfiend)
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 << input << "\n"
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