From 6fbe5c4337e14d50a6c060b7a1f3d53097356b04 Mon Sep 17 00:00:00 2001 From: Kelketek Rritaa Date: Sun, 26 Jan 2014 16:42:06 -0600 Subject: [PATCH] Made __radd__ work properly for ANSIString. --- src/utils/ansi.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/utils/ansi.py b/src/utils/ansi.py index ee55fbb377..f5d420c0cc 100644 --- a/src/utils/ansi.py +++ b/src/utils/ansi.py @@ -360,6 +360,12 @@ class ANSIString(unicode): def __len__(self): return len(self.clean_string) + def __radd__(self, other): + if not isinstance(other, basestring): + return NotImplemented + return ANSIString(self.raw_string + getattr( + other, 'raw_string', other), decoded=True) + def __getslice__(self, i, j): return self.__getitem__(slice(i, j)) @@ -511,7 +517,7 @@ def _on_raw(func_name): except IndexError: pass result = _query_super(func_name)(self, *args, **kwargs) - if isinstance(result, unicode): + if isinstance(result, basestring): return ANSIString(result, decoded=True) return result return wrapped @@ -542,8 +548,8 @@ for func_name in [ 'rfind', 'rindex']: setattr(ANSIString, func_name, _query_super(func_name)) for func_name in [ - '__mul__', '__mod__', '__add__', 'expandtabs', - '__rmul__', 'join', 'decode', 'replace', 'format']: + '__mul__', '__mod__', '__add__', 'expandtabs', '__rmul__', 'join', + 'decode', 'replace', 'format']: setattr(ANSIString, func_name, _on_raw(func_name)) for func_name in [ 'capitalize', 'translate', 'lower', 'upper', 'swapcase']: