changeset 231:fc8b8c2bba53

Remove duplicate locations of catalog messages.
author cmlenz
date Tue, 24 Jul 2007 21:16:57 +0000
parents aaf36f409166
children 1448b500de40
files babel/messages/catalog.py babel/messages/pofile.py babel/messages/tests/catalog.py
diffstat 3 files changed, 12 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/babel/messages/catalog.py
+++ b/babel/messages/catalog.py
@@ -33,7 +33,8 @@
 __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 @@
         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 @@
                 # 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 +
--- a/babel/messages/pofile.py
+++ b/babel/messages/pofile.py
@@ -356,7 +356,7 @@
                             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) \
--- a/babel/messages/tests/catalog.py
+++ b/babel/messages/tests/catalog.py
@@ -67,6 +67,12 @@
         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)])
Copyright (C) 2012-2017 Edgewall Software