Mercurial > babel > old > mirror
changeset 227:f358dd40a960
Applied patch by Ramiro Morales for more extensive detection of Python string formatting specifiers. Closes #57.
author | cmlenz |
---|---|
date | Fri, 20 Jul 2007 12:52:40 +0000 |
parents | 9d7cc01b49c2 |
children | 629357c88d59 |
files | ChangeLog babel/messages/catalog.py babel/messages/tests/catalog.py |
diffstat | 3 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -19,6 +19,8 @@ * 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
--- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -33,7 +33,7 @@ __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):
--- a/babel/messages/tests/catalog.py +++ b/babel/messages/tests/catalog.py @@ -23,6 +23,17 @@ 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`'])