Completed
Push — master ( 011702...a4103f )
by P.R.
01:44
created

MoneyCleaner.clean()   B

Complexity

Conditions 5

Size

Total Lines 27

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 5

Importance

Changes 2
Bugs 1 Features 0
Metric Value
c 2
b 1
f 0
dl 0
loc 27
ccs 10
cts 10
cp 1
rs 8.0894
cc 5
crap 5
1
"""
2
ETLT
3
4
Copyright 2016 Set Based IT Consultancy
5
6
Licence MIT
7
"""
8 1
import re
9
10
11 1
class MoneyCleaner:
12
    """
13
    Utility class for converting numbers to numbers with decimal points.
14
    """
15
16
    # ------------------------------------------------------------------------------------------------------------------
17 1
    @staticmethod
18
    def clean(amount):
19
        """
20
        Converts a number to a number with decimal point.
21
22
        :param str amount: The input number.
23
24
        :rtype str:
25
        """
26
        # Return empty input immediately.
27 1
        if not amount:
28 1
            return amount
29
30 1
        if re.search(r'[\. ][0-9]{3},[0-9]{2}$', amount):
31
            # Assume amount is in 1.123,12 or 1 123,12 format (Dutch).
32 1
            return amount.replace('.', '').replace(' ', '').replace(',', '.')
33
34 1
        if re.search(r'[, ][0-9]{3}\.[0-9]{2}$', amount):
35
            # Assume amount is in 1,123.12 or in 1 123.12 format (Engels).
36 1
            return amount.replace(',', '').replace(' ', '')
37
38 1
        if re.search(r'[0-9](,[0-9]{2}$)', amount):
39
            # Assume amount is in 123,12 format (Dutch).
40 1
            return amount.replace(',', '.')
41
42
        # Format of amount is not recognized. Return amount.
43 1
        return amount
44
45
# ----------------------------------------------------------------------------------------------------------------------
46