changeset 250:194f927d8c5a

add a __cmp__ to Message that correctly sorts by id, taking into account plurals thanks zepolen
author pjenvey
date Mon, 13 Aug 2007 00:59:09 +0000
parents d42e85b23272
children 3b9d993b7aa3
files babel/messages/catalog.py babel/messages/mofile.py babel/messages/pofile.py
diffstat 3 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/babel/messages/catalog.py
+++ b/babel/messages/catalog.py
@@ -79,6 +79,19 @@
         return '<%s %r (flags: %r)>' % (type(self).__name__, self.id,
                                         list(self.flags))
 
+    def __cmp__(self, obj):
+        """Compare Messages, taking into account plural ids"""
+        if isinstance(obj, Message):
+            plural = self.pluralizable
+            obj_plural = obj.pluralizable
+            if plural and obj_plural:
+                return cmp(self.id[0], obj.id[0])
+            elif plural:
+                return cmp(self.id[0], obj.id)
+            elif obj_plural:
+                return cmp(self.id, obj.id[0])
+        return cmp(self.id, obj.id)
+
     def fuzzy(self):
         return 'fuzzy' in self.flags
     fuzzy = property(fuzzy, doc="""\
--- a/babel/messages/mofile.py
+++ b/babel/messages/mofile.py
@@ -66,7 +66,7 @@
     messages = list(catalog)
     if not use_fuzzy:
         messages[1:] = [m for m in messages[1:] if not m.fuzzy]
-    messages.sort(lambda x,y: cmp(x.id, y.id))
+    messages.sort()
 
     ids = strs = ''
     offsets = []
--- a/babel/messages/pofile.py
+++ b/babel/messages/pofile.py
@@ -392,7 +392,7 @@
 
     messages = list(catalog)
     if sort_output:
-        messages.sort(lambda x,y: cmp(x.id, y.id))
+        messages.sort()
     elif sort_by_file:
         messages.sort(lambda x,y: cmp(x.locations, y.locations))
 
Copyright (C) 2012-2017 Edgewall Software