From: Christopher Lenz Date: Tue, 24 Jul 2007 21:16:57 +0000 (+0000) Subject: Remove duplicate locations of catalog messages. X-Git-Tag: 1.0~420 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b35aebdbf4f1911929a0bc96f65f116f9625c2f3;p=thirdparty%2Fbabel.git Remove duplicate locations of catalog messages. --- diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py index fc39a019..dfe980b5 100644 --- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -33,7 +33,8 @@ from babel.util import odict, distinct, LOCALTZ, UTC, FixedOffsetTimezone __all__ = ['Message', 'Catalog', 'TranslationError'] __docformat__ = 'restructuredtext en' -PYTHON_FORMAT = re.compile(r'\%(\([\w]+\))?([-#0\ +])?(\*|[\d]+)?(\.(\*|[\d]+))?([hlL])?[diouxXeEfFgGcrs]') +PYTHON_FORMAT = re.compile(r'\%(\([\w]+\))?([-#0\ +])?(\*|[\d]+)?' + r'(\.(\*|[\d]+))?([hlL])?[diouxXeEfFgGcrs]') class Message(object): @@ -60,7 +61,7 @@ class Message(object): if not string and self.pluralizable: string = (u'', u'') self.string = string #: The message translation - self.locations = list(locations) + self.locations = list(distinct(locations)) self.flags = set(flags) if id and self.python_format: self.flags.add('python-format') @@ -470,7 +471,8 @@ class Catalog(object): # The new message adds pluralization current.id = message.id current.string = message.string - current.locations.extend(message.locations) + current.locations = list(distinct(current.locations + + message.locations)) current.auto_comments = list(distinct(current.auto_comments + message.auto_comments)) current.user_comments = list(distinct(current.user_comments + diff --git a/babel/messages/pofile.py b/babel/messages/pofile.py index 554328a8..4ed55544 100644 --- a/babel/messages/pofile.py +++ b/babel/messages/pofile.py @@ -356,7 +356,7 @@ def write_po(fileobj, catalog, width=76, no_location=False, omit_header=False, them in the output; by default they are included as comments :param include_previous: include the old msgid as a comment when - updating the catalog + updating the catalog """ def _normalize(key, prefix=''): return normalize(key, prefix=prefix, width=width) \ diff --git a/babel/messages/tests/catalog.py b/babel/messages/tests/catalog.py index c2b6f45f..a084d73d 100644 --- a/babel/messages/tests/catalog.py +++ b/babel/messages/tests/catalog.py @@ -67,6 +67,12 @@ class CatalogTestCase(unittest.TestCase): self.assertEqual(['A comment', 'Another comment'], cat['foo'].user_comments) + def test_duplicate_user_comment(self): + cat = catalog.Catalog() + cat.add('foo', locations=[('foo.py', 1)]) + cat.add('foo', locations=[('foo.py', 1)]) + self.assertEqual([('foo.py', 1)], cat['foo'].locations) + def test_update_message_updates_comments(self): cat = catalog.Catalog() cat[u'foo'] = catalog.Message('foo', locations=[('main.py', 5)])