diff --git a/setup.cfg b/setup.cfg index 751135dad93a4bb6b005064473d6711fba4973e3..ff1ce8c8c5ccfcb46bb745d4a557ab9a1d49b518 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,6 @@ [nosetests] verbosity = 2 detailed-errors = 1 +with-doctest = 1 where = weboob -tests = weboob.tools.capabilities.paste,weboob.tools.path +tests = weboob.tools.capabilities.paste,weboob.tools.path,weboob.capabilities.bank diff --git a/weboob/capabilities/bank.py b/weboob/capabilities/bank.py index 7777c67ead152347ca237980a24574f9154642f5..29cd9a25973d10649a28b72aceb3b4fc37f8716e 100644 --- a/weboob/capabilities/bank.py +++ b/weboob/capabilities/bank.py @@ -41,7 +41,7 @@ class TransferError(UserError): A transfer has failed. """ -class Currency: +class Currency(object): CUR_UNKNOWN = 0 CUR_EUR = 1 CUR_CHF = 2 @@ -54,10 +54,32 @@ class Currency: u'USD': CUR_USD, } + EXTRACTOR = re.compile(r'[\d\s,\.\-]', re.UNICODE) + @classmethod def get_currency(klass, text): - text = re.sub(u'[^A-Z€]', '', text.upper()) - return klass.TXT2CUR.get(text, klass.CUR_UNKNOWN) + u""" + >>> Currency.get_currency(u'42') + 0 + >>> Currency.get_currency(u'42 €') + 1 + >>> Currency.get_currency(u'$42') + 3 + >>> Currency.get_currency(u'42.000,00€') + 1 + >>> Currency.get_currency(u'$42 USD') + 3 + >>> Currency.get_currency(u'%42 USD') + 3 + >>> Currency.get_currency(u'US1D') + 0 + """ + curtexts = klass.EXTRACTOR.sub(' ', text.upper()).split() + for curtext in curtexts: + cur = klass.TXT2CUR.get(curtext) + if cur is not None: + return cur + return klass.CUR_UNKNOWN class Recipient(CapBaseObject):