Browse Source

Sum.parse_text: accept non-breaking spaces

Fabian Peter Hammerle 6 years ago
parent
commit
c740a5cbbd
3 changed files with 8 additions and 5 deletions
  1. 5 4
      finoex/__init__.py
  2. 1 1
      setup.py
  3. 2 0
      tests/test_sum.py

+ 5 - 4
finoex/__init__.py

@@ -93,13 +93,14 @@ class Sum(ioex.calcex.Figure):
     unit = property(get_unit, set_unit)
     currency = property(get_unit, set_unit)
 
+    space_regex = '[\xa0 ]'
     value_regex = r"-?\d+([\.,]\d+)?"
     currency_regex = r"[^\d\s-]+"
-    sum_regex_value_first = r'\$?(?P<value>{}) (?P<currency>{})'.format(
-        value_regex, currency_regex,
+    sum_regex_value_first = r'\$?(?P<value>{}){}(?P<currency>{})'.format(
+        value_regex, space_regex, currency_regex,
     )
-    sum_regex_currency_first = r'(?P<currency>{}) ?(?P<value>{})'.format(
-        currency_regex, value_regex,
+    sum_regex_currency_first = r'(?P<currency>{}){}?(?P<value>{})'.format(
+        currency_regex, space_regex, value_regex,
     )
     sum_regex = r'({})'.format('|'.join([
         ioex.reex.rename_groups(

+ 1 - 1
setup.py

@@ -4,7 +4,7 @@ import glob
 
 setup(
     name = 'finoex',
-    version = '0.12.0',
+    version = '0.12.1',
     # description = '',
     author = 'Fabian Peter Hammerle',
     author_email = 'fabian.hammerle@gmail.com',

+ 2 - 0
tests/test_sum.py

@@ -91,10 +91,12 @@ def test_mul(dividend, divisor, quotient):
     ['de_AT.UTF-8', "EUR 1234,56", finoex.Sum(1234.56, 'EUR')],
     ['de_AT.UTF-8', "US$ 0,50", finoex.Sum(0.5, 'USD')],
     ['de_AT.UTF-8', "US$0,50", finoex.Sum(0.5, 'USD')],
+    ['de_AT.UTF-8', "US$\xa00,50", finoex.Sum(0.5, 'USD')],
     ['en_US.UTF-8', "$-1.23 USD", finoex.Sum(-1.23, 'USD')],
     ['en_US.UTF-8', "$1.23 USD", finoex.Sum(1.23, 'USD')],
     ['en_US.UTF-8', "-1.23 US$", finoex.Sum(-1.23, 'USD')],
     ['en_US.UTF-8', "-1.23 USD", finoex.Sum(-1.23, 'USD')],
+    ['en_US.UTF-8', "-1.23\xa0USD", finoex.Sum(-1.23, 'USD')],
     ['en_US.UTF-8', "1.23 ¥", finoex.Sum(1.23, 'CNY')],
     ['en_US.UTF-8', "2.2 US$", finoex.Sum(2.2, 'US$')],
     ['en_US.UTF-8', "2.50 EUR", finoex.Sum(2.5, 'EUR')],