Commits

mtre...@bcc190cf-cafb-0310-a4f2-bffc1f526a37  committed 3ca6e50

unicode: Implemented comparisons between *_lazy() objects. comparing
ugettext_lazy() instances to each other now works, for example.

  • Participants
  • Parent commits a65beae
  • Branches unicode

Comments (0)

Files changed (2)

File django/utils/functional.py

             else:
                 return Promise.__str__(self)
 
+        def __cmp__(self, rhs):
+            if self._delegate_str:
+                s = str(self.__func(*self.__args, **self.__kw))
+            elif self._delegate_unicode:
+                s = unicode(self.__func(*self.__args, **self.__kw))
+            else:
+                s = self.__func(*self.__args, **self.__kw)
+            if isinstance(rhs, Promise):
+                return -cmp(rhs, s)
+            else:
+                return cmp(s, rhs)
+
         def __mod__(self, rhs):
             if self._delegate_str:
                 return str(self) % rhs

File tests/regressiontests/i18n/tests.py

 # coding: utf-8
 
 ur"""
->>> from django.utils.translation import ugettext_lazy, activate, deactivate
+Format string interpolation should work with *_lazy objects.
+
+>>> from django.utils.translation import ugettext_lazy, activate, deactivate, gettext_lazy
 >>> s = ugettext_lazy('Add %(name)s')
 >>> d = {'name': 'Ringo'}
 >>> s % d
 u'Dodaj Ringo'
 >>> deactivate()
 
+It should be possible to compare *_lazy objects.
+
+>>> s1 = ugettext_lazy('Add %(name)s')
+>>> s == s1
+True
+>>> s2 = gettext_lazy('Add %(name)s')
+>>> s3 = gettext_lazy('Add %(name)s')
+>>> s2 == s3
+True
+>>> s == s2
+True
+>>> s4 = ugettext_lazy('Some other string')
+>>> s == s4
+False
 """