]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
Correctly parse number pattern with '-' on the end 66/head
authorSjoerd Langkemper <sjoerd@byte.nl>
Wed, 6 Nov 2013 10:32:28 +0000 (11:32 +0100)
committerSjoerd Langkemper <sjoerd@byte.nl>
Wed, 6 Nov 2013 10:32:28 +0000 (11:32 +0100)
For the nl_NL locale, negative numbers would be formatted just like
positive numbers by format_currency. By changing NUMBER_TOKEN to
no longer have a minus sign in it, the minus sign on the end
of the negative pattern for nl_NL is correctly parsed.

babel/numbers.py
tests/test_numbers.py

index 2f7fe16219c46351b4ee2b6d386f253f1e63668d..587d640706f5170f089f93ffb8e375a18d19ac1d 100644 (file)
@@ -389,7 +389,7 @@ def parse_decimal(string, locale=LC_NUMERIC):
 
 
 PREFIX_END = r'[^0-9@#.,]'
-NUMBER_TOKEN = r'[0-9@#.\-,E+]'
+NUMBER_TOKEN = r'[0-9@#.,E+]'
 
 PREFIX_PATTERN = r"(?P<prefix>(?:'[^']*'|%s)*)" % PREFIX_END
 NUMBER_PATTERN = r"(?P<number>%s+)" % NUMBER_TOKEN
index 99e0d1bda1dfc296b1060ce3f4dd498cfef95abe..1c4d13fc9b905948c765592cef43bdd69175edcf 100644 (file)
@@ -213,6 +213,7 @@ def test_get_plus_sign_symbol():
 
 def test_get_minus_sign_symbol():
     assert numbers.get_minus_sign_symbol('en_US') == u'-'
+    assert numbers.get_minus_sign_symbol('nl_NL') == u'-'
 
 
 def test_get_exponential_symbol():
@@ -247,6 +248,8 @@ def test_format_currency():
     assert (numbers.format_currency(1099.98, 'EUR', u'\xa4\xa4 #,##0.00',
                                     locale='en_US')
             == u'EUR 1,099.98')
+    assert (numbers.format_currency(1099.98, 'EUR', locale='nl_NL')
+            != numbers.format_currency(-1099.98, 'EUR', locale='nl_NL'))
 
 
 def test_format_percent():
@@ -298,3 +301,8 @@ def test_parse_grouping():
     assert numbers.parse_grouping('##') == (1000, 1000)
     assert numbers.parse_grouping('#,###') == (3, 3)
     assert numbers.parse_grouping('#,####,###') == (3, 4)
+
+
+def test_parse_pattern():
+    assert numbers.parse_pattern(u'¤#,##0.00;(¤#,##0.00)').suffix == (u'', u')')
+    assert numbers.parse_pattern(u'¤ #,##0.00;¤ #,##0.00-').suffix == (u'', u'-')