Currently they just pipe strings around the place, but there's no reason we can't pipe objects instead. Demo commands to use are: grep, sort, less, wc i.e show-source Pry | grep target | sort | wc Limitations: * aliased dont work, so you have to use show-source, not just $ * commands can no longer take 'block' input, and the tests have been commented out * commands are currently too aware of pipes, in the future output should be automatically piped without requiring the command programmer to check for out_pipe?
These were coming from a pretty simple source: the DEFAULT_PRINT prepends them so you can get output like:  pry(main)> 2+3 => 5 But since we're formatting these differently, obviously we don't want that prefix. So this patch extracts a Pry.format_for_output method then calls that iff the user hasn't changed the default. There is some hackitude involved, but the test pass (and are of decent coverage, I think, so feel fry to try to diff this down if you have a good idea.)
added lookup_method_via_binding(), using this rather than safe_send we respect the method object introduced by any refinements in the binding. Further work can be done for refinement support -- such as indicating that the method is a refinement, showing the name of the refining module, and so on.
It's easy to find yourself in 'pry-hell' when you've added a binding.pry in a tight loop, or if you've got pry-rescue or plymouth enabled and you've broken hundreds of tests. To get out of this, the user can just type 'disable-pry'. If you suspect in advance that pry is going to be unhelpful you can temporarily disable it without having to edit the source code of your program by exporting NO_PRY=true.