1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00
pry--pry/lib/pry/core_extensions.rb
John Mair 6aacc8721d Made it so defining methods on a pry'd on object puts the methods on the singleton class of the object rather than on the class. Added rubygems-test support.
Alternatively, if the object cannot support singleton methods, e.g immediates and Numerics, the method will go on the class instead.
2011-01-24 03:50:15 +13:00

55 lines
1.5 KiB
Ruby

class Pry
module ObjectExtensions
# Start a Pry REPL.
# This method differs from `Pry.start` in that it does not
# support an options hash. Also, when no parameter is provided, the Pry
# session will start on the implied receiver rather than on
# top-level (as in the case of `Pry.start`).
# It has two forms of invocation. In the first form no parameter
# should be provided and it will start a pry session on the
# receiver. In the second form it should be invoked without an
# explicit receiver and one parameter; this will start a Pry
# session on the parameter.
# @param [Object, Binding] target The receiver of the Pry session.
# @example First form
# "dummy".pry
# @example Second form
# pry "dummy"
# @example Start a Pry session on current self (whatever that is)
# pry
def pry(target=self)
Pry.start(target)
end
# Return a binding object for the receiver.
def __binding__
if is_a?(Module)
return class_eval "binding"
end
unless respond_to? :__binding_impl__
begin
instance_eval %{
def __binding_impl__
binding
end
}
rescue TypeError
self.class.class_eval %{
def __binding_impl__
binding
end
}
end
end
__binding_impl__
end
end
end
# bring the extensions into Object
class Object
include Pry::ObjectExtensions
end