From 33ebe7acec14b25c5f84f35a664803fcab2f7781 Mon Sep 17 00:00:00 2001 From: Michael Trier Date: Wed, 7 May 2008 16:49:48 -0400 Subject: initial project --- lib/git_python/method_missing.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 lib/git_python/method_missing.py (limited to 'lib/git_python/method_missing.py') diff --git a/lib/git_python/method_missing.py b/lib/git_python/method_missing.py new file mode 100644 index 00000000..63bc36a9 --- /dev/null +++ b/lib/git_python/method_missing.py @@ -0,0 +1,21 @@ +class MethodMissingMixin(object): + """ + A Mixin' to implement the 'method_missing' Ruby-like protocol. + + This was `taken from a blog post `_ + """ + def __getattribute__(self, attr): + try: + return object.__getattribute__(self, attr) + except: + class MethodMissing(object): + def __init__(self, wrapped, method): + self.__wrapped__ = wrapped + self.__method__ = method + def __call__(self, *args, **kwargs): + return self.__wrapped__.method_missing(self.__method__, *args, **kwargs) + return MethodMissing(self, attr) + + def method_missing(self, *args, **kwargs): + """ This method should be overridden in the derived class. """ + raise NotImplementedError(str(self.__wrapped__) + " 'method_missing' method has not been implemented.") -- cgit v1.2.1