From: Christopher Lenz Date: Fri, 20 Jul 2007 12:52:40 +0000 (+0000) Subject: Applied patch by Ramiro Morales for more extensive detection of Python string formatt... X-Git-Tag: 1.0~424 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8f52eacb918ee5343c99d27adf95bb33277f27c7;p=thirdparty%2Fbabel.git Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57. --- diff --git a/ChangeLog b/ChangeLog index a6caeb36..c9e05fbe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19,6 +19,8 @@ http://svn.edgewall.org/repos/babel/tags/0.9.0/ * Numerous Python message extractor fixes: it now handles nested function calls within a gettext function call correctly, uses the correct line number for multi-line function calls, and other small fixes (tickets #38 and #39). + * Improved support for detecting Python string formatting fields in message + strings (ticket #57). Version 0.8.1 diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py index 208e8bae..a68605f5 100644 --- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -33,7 +33,7 @@ from babel.util import odict, LOCALTZ, UTC, FixedOffsetTimezone __all__ = ['Message', 'Catalog', 'TranslationError'] __docformat__ = 'restructuredtext en' -PYTHON_FORMAT = re.compile(r'\%(\([\w]+\))?[diouxXeEfFgGcrs]') +PYTHON_FORMAT = re.compile(r'\%(\([\w]+\))?([-#0\ +])?(\*|[\d]+)?(\.(\*|[\d]+))?([hlL])?[diouxXeEfFgGcrs]') class Message(object): diff --git a/babel/messages/tests/catalog.py b/babel/messages/tests/catalog.py index e9c577c8..fda576a2 100644 --- a/babel/messages/tests/catalog.py +++ b/babel/messages/tests/catalog.py @@ -23,6 +23,17 @@ class MessageTestCase(unittest.TestCase): assert catalog.PYTHON_FORMAT.search('foo %d bar') assert catalog.PYTHON_FORMAT.search('foo %s bar') assert catalog.PYTHON_FORMAT.search('foo %r bar') + assert catalog.PYTHON_FORMAT.search('foo %(name).1f') + assert catalog.PYTHON_FORMAT.search('foo %(name)3.3f') + assert catalog.PYTHON_FORMAT.search('foo %(name)3f') + assert catalog.PYTHON_FORMAT.search('foo %(name)06d') + assert catalog.PYTHON_FORMAT.search('foo %(name)Li') + assert catalog.PYTHON_FORMAT.search('foo %(name)#d') + assert catalog.PYTHON_FORMAT.search('foo %(name)-4.4hs') + assert catalog.PYTHON_FORMAT.search('foo %(name)*.3f') + assert catalog.PYTHON_FORMAT.search('foo %(name).*f') + assert catalog.PYTHON_FORMAT.search('foo %(name)3.*f') + assert catalog.PYTHON_FORMAT.search('foo %(name)*.*f') def test_translator_comments(self): mess = catalog.Message('foo', user_comments=['Comment About `foo`'])