From: Philip Jenvey Date: Mon, 13 Aug 2007 00:59:09 +0000 (+0000) Subject: add a __cmp__ to Message that correctly sorts by id, taking into account plurals X-Git-Tag: 1.0~401 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1825aefbcb5e4936310c8df1e9afc4eb71540f55;p=thirdparty%2Fbabel.git add a __cmp__ to Message that correctly sorts by id, taking into account plurals thanks zepolen --- diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py index dfe980b5..946763ad 100644 --- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -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="""\ diff --git a/babel/messages/mofile.py b/babel/messages/mofile.py index 2f095087..49069c31 100644 --- a/babel/messages/mofile.py +++ b/babel/messages/mofile.py @@ -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 = [] diff --git a/babel/messages/pofile.py b/babel/messages/pofile.py index 4ed55544..a64c6a89 100644 --- a/babel/messages/pofile.py +++ b/babel/messages/pofile.py @@ -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))