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

MoneyCleaner   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 1 Features 0
Metric Value
wmc 5
c 2
b 1
f 0
dl 0
loc 33
ccs 11
cts 11
cp 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B clean() 0 27 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