if funcname and tok == OP and value == '(':
in_args = True
elif tok == COMMENT:
- if in_translator_comments is True:
- translator_comments.append(value[1:].strip())
- continue
for comment_tag in comment_tags:
- if comment_tag in value:
+ value = value[1:].strip()
+ if value.startswith(comment_tag) or in_translator_comments:
if in_translator_comments is not True:
in_translator_comments = True
- translator_comments.append(value[1:].strip())
+ comment = value.lstrip(comment_tag).strip()
+ translator_comments.append(comment)
elif funcname and in_args:
if tok == OP and value == ')':
in_args = in_translator_comments = False
# NOTE: A translation comment
msg = _(u'Foo Bar')
""")
- messages = list(extract.extract_python(buf, ('_',), ['NOTE'], {}))
+ messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {}))
self.assertEqual('Foo Bar', messages[0][2])
- self.assertEqual(['NOTE: A translation comment'], messages[0][3])
+ self.assertEqual(['A translation comment'], messages[0][3])
def test_comment_tag_multiline(self):
buf = StringIO("""
# with a second line
msg = _(u'Foo Bar')
""")
- messages = list(extract.extract_python(buf, ('_',), ['NOTE'], {}))
+ messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {}))
self.assertEqual('Foo Bar', messages[0][2])
- self.assertEqual(['NOTE: A translation comment', 'with a second line'],
+ self.assertEqual(['A translation comment', 'with a second line'],
messages[0][3])
def test_translator_comments_with_previous_non_translator_comments(self):
# with a second line
msg = _(u'Foo Bar')
""")
- messages = list(extract.extract_python(buf, ('_',), ['NOTE'], {}))
+ messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {}))
self.assertEqual('Foo Bar', messages[0][2])
- self.assertEqual(['NOTE: A translation comment', 'with a second line'],
+ self.assertEqual(['A translation comment', 'with a second line'],
messages[0][3])
-
+ def test_comment_tags_not_on_start_of_comment(self):
+ buf = StringIO("""
+# This shouldn't be in the output
+# because it didn't start with a comment tag
+# do NOTE: this will no be a translation comment
+# NOTE: This one will be
+msg = _(u'Foo Bar')
+""")
+ messages = list(extract.extract_python(buf, ('_',), ['NOTE:'], {}))
+ self.assertEqual('Foo Bar', messages[0][2])
+ self.assertEqual(['This one will be'], messages[0][3])
+
def suite():
suite = unittest.TestSuite()
suite.addTest(doctest.DocTestSuite(extract))