1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00

* version bump to 0.2.0

* added bunch of new nesting functionality
* added input/output accessors instead of binding to stdin/stdout
* added _ for last result
* changed command format (no more sigils)
This commit is contained in:
John Mair 2010-12-11 18:22:17 +13:00
parent a25c40d2db
commit 191eb63c6a
2 changed files with 18 additions and 8 deletions

View file

@ -47,7 +47,9 @@ effect:
Test.instance_variable_get(:@y) #=> 20 Test.instance_variable_get(:@y) #=> 20
Note: you can also use the `obj.pry` syntax to start a pry session on #### Alternative Syntax
You can also use the `obj.pry` syntax to start a pry session on
`obj`. e.g `obj`. e.g
5.pry 5.pry
@ -97,7 +99,7 @@ command. E.g
We can then jump back to any of the previous nesting levels by using We can then jump back to any of the previous nesting levels by using
the `jump_to` or `exit_at` commands: the `jump_to` or `exit_at` commands:
pry(100:2)> jump_to 1 pry("friend":3)> jump_to 1
Ending Pry session for "friend" Ending Pry session for "friend"
Ending Pry session for 100 Ending Pry session for 100
=> 100 => 100
@ -106,7 +108,7 @@ the `jump_to` or `exit_at` commands:
If we just want to go back one level of nesting we can of course just If we just want to go back one level of nesting we can of course just
use the `quit` or `exit` or `back` commands. use the `quit` or `exit` or `back` commands.
To breakout of all levels of pry nesting and return immediately to the To break out of all levels of Pry nesting and return immediately to the
calling process use `exit_all`: calling process use `exit_all`:
pry("friend":3) exit_all pry("friend":3) exit_all
@ -135,6 +137,7 @@ Features:
* Pry sessions can nest arbitrarily deeply -- to go back one level of nesting type 'exit' or 'quit' or 'back' * Pry sessions can nest arbitrarily deeply -- to go back one level of nesting type 'exit' or 'quit' or 'back'
* Use `_` to recover last result. * Use `_` to recover last result.
* Pry has multi-line support built in. * Pry has multi-line support built in.
* Pry gives good control over nested sessions (important when exploring complicated runtime state)
* Pry is not based on the IRB codebase. * Pry is not based on the IRB codebase.
* Pry is small; around 230 LOC. * Pry is small; around 230 LOC.
* Pry implements all the methods in the REPL chain separately: `Pry.r` * Pry implements all the methods in the REPL chain separately: `Pry.r`
@ -159,7 +162,7 @@ Limitations:
Commands Commands
----------- -----------
The Pry API: ### The Pry API:
* `Pry.start()` and `Pry.into()` and `Pry.repl()` are all aliases of * `Pry.start()` and `Pry.into()` and `Pry.repl()` are all aliases of
oneanother. They all start a Read-Eval-Print-Loop on the object they oneanother. They all start a Read-Eval-Print-Loop on the object they
@ -177,7 +180,9 @@ case of error. It also takes the same parameters as `Pry.repl()`
* Similarly `Pry.r()` only performs the Read section of the REPL, only * Similarly `Pry.r()` only performs the Read section of the REPL, only
returning the Ruby expression (as a string). It takes the same parameters as all the others. returning the Ruby expression (as a string). It takes the same parameters as all the others.
Pry supports a few commands inside the session itself; these are ### Session commands
Pry supports a few commands inside the session itself. These commands are
not methods and must start at the beginning of a line, with no not methods and must start at the beginning of a line, with no
whitespace in between. whitespace in between.
@ -187,7 +192,8 @@ If you want to access a method of the same name, prefix the invocation by whites
getting you out of a situation if the parsing process getting you out of a situation if the parsing process
goes wrong. goes wrong.
* `exit` or `quit` or `back` will end the current Pry session and go * `exit` or `quit` or `back` will end the current Pry session and go
back to the calling process or back one level of nesting. back to the calling process or back one level of nesting (if there
are nested sessions).
* `exit_program` or `quit_program` will end the currently running * `exit_program` or `quit_program` will end the currently running
program. program.
* `nesting` shows Pry nesting information. * `nesting` shows Pry nesting information.

View file

@ -162,13 +162,17 @@ module Pry
if target.is_a?(Binding) if target.is_a?(Binding)
target target
else else
target.instance_eval { binding } if target == TOPLEVEL_BINDING.eval('self')
TOPLEVEL_BINDING
else
target.instance_eval { binding }
end
end end
end end
module ObjectExtensions module ObjectExtensions
def pry def pry
Pry.start(self) Pry.start(Pry.binding_for(self))
end end
end end
end end