results = func(fileobj, keywords.keys(), comment_tags,
options=options or {})
+
for lineno, funcname, messages, comments in results:
if funcname:
spec = keywords[funcname] or (1,)
if strip_comment_tags:
_strip_comment_tags(comments, comment_tags)
-
yield lineno, messages, comments
del buf[:]
else:
messages.append(None)
+ if translator_comments:
+ # We have translator comments, and since we're on a
+ # comma(,) user is allowed to break into a new line
+ # Let's increase the last comment's lineno in order
+ # for the comment to still be a valid one
+ old_lineno, old_comment = translator_comments.pop()
+ translator_comments.append((old_lineno+1, old_comment))
elif call_stack > 0 and tok == OP and value == ')':
call_stack -= 1
elif funcname and call_stack == -1:
self.assertEqual([(1, 'ngettext', (u'pylon', u'pylons', None), [])],
messages)
+ def test_comments_with_calls_that_spawn_multiple_lines(self):
+ buf = StringIO("""\
+# NOTE: This Comment SHOULD Be Extracted
+add_notice(req, ngettext("Catalog deleted.",
+ "Catalogs deleted.", len(selected)))
+
+# NOTE: This Comment SHOULD Be Extracted
+add_notice(req, _("Locale deleted."))
+
+
+# NOTE: This Comment SHOULD Be Extracted
+add_notice(req, ngettext("Foo deleted.", "Foos deleted.", len(selected)))
+""")
+ messages = list(extract.extract_python(buf, ('ngettext','_'), ['NOTE:'],
+
+ {'strip_comment_tags':False}))
+ self.assertEqual((6, '_', 'Locale deleted.',
+ [u'NOTE: This Comment SHOULD Be Extracted']),
+ messages[1])
+ self.assertEqual((10, 'ngettext', (u'Foo deleted.', u'Foos deleted.',
+ None),
+ [u'NOTE: This Comment SHOULD Be Extracted']),
+ messages[2])
+ self.assertEqual((3, 'ngettext',
+ (u'Catalog deleted.',
+ u'Catalogs deleted.', None),
+ [u'NOTE: This Comment SHOULD Be Extracted']),
+ messages[0])
+
def test_declarations(self):
buf = StringIO("""\
class gettext(object):