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:
Kyrylo Silin 2012-06-07 02:20:51 +03:00
parent e189538570
commit c8fc0e52a3
1 changed files with 10 additions and 12 deletions

View File

@ -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