Refactor __binding__ method
Refactor Object#__binding__ method in order to avoid repetitive code of __binding_impl__. Use String variable for the __binding_impl__ method definition to guarantee that class_eval and instance_eval evaluate the same code. Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>
This commit is contained in:
parent
e189538570
commit
c8fc0e52a3
|
@ -22,7 +22,7 @@ class Object
|
|||
if args.first.is_a?(Hash) || args.length == 0
|
||||
args.unshift(self)
|
||||
end
|
||||
|
||||
|
||||
Pry.start(*args)
|
||||
end
|
||||
|
||||
|
@ -32,19 +32,17 @@ class Object
|
|||
return class_eval "binding"
|
||||
end
|
||||
|
||||
unless respond_to? :__binding_impl__
|
||||
unless respond_to?(binding_impl = :__binding_impl__)
|
||||
binding_impl_method = <<-METHOD
|
||||
def #{binding_impl}
|
||||
binding
|
||||
end
|
||||
METHOD
|
||||
|
||||
begin
|
||||
instance_eval %{
|
||||
def __binding_impl__
|
||||
binding
|
||||
end
|
||||
}
|
||||
instance_eval binding_impl_method
|
||||
rescue TypeError
|
||||
self.class.class_eval %{
|
||||
def __binding_impl__
|
||||
binding
|
||||
end
|
||||
}
|
||||
self.class.class_eval binding_impl_method
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue