]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
add a __cmp__ to Message that correctly sorts by id, taking into account plurals
authorPhilip Jenvey <pjenvey@underboss.org>
Mon, 13 Aug 2007 00:59:09 +0000 (00:59 +0000)
committerPhilip Jenvey <pjenvey@underboss.org>
Mon, 13 Aug 2007 00:59:09 +0000 (00:59 +0000)
thanks zepolen

babel/messages/catalog.py
babel/messages/mofile.py
babel/messages/pofile.py

index dfe980b59a359b7fce8aa7466f048da5b522bdab..946763ad78f6022981d0b015eadacfaa31977b4c 100644 (file)
@@ -79,6 +79,19 @@ class Message(object):
         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="""\
index 2f0950877e7d44326ec1a2433b65bdf57f105bcb..49069c31c4d035f81e8be23654057a9c0f2afb02 100644 (file)
@@ -66,7 +66,7 @@ def write_mo(fileobj, catalog, use_fuzzy=False):
     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 = []
index 4ed555448f5997b3edc0d3a20acbb0b74c353114..a64c6a894f28f91d2412eff0da2977349459c9e8 100644 (file)
@@ -392,7 +392,7 @@ def write_po(fileobj, catalog, width=76, no_location=False, omit_header=False,
 
     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))