Passed
Branch master (17b603)
by P.R.
01:31
created

etlt.cleaner.MoneyCleaner.MoneyCleaner.clean()   A

Complexity

Conditions 5

Size

Total Lines 27
Code Lines 11

Duplication

Lines 27
Ratio 100 %

Code Coverage

Tests 11
CRAP Score 5

Importance

Changes 0
Metric Value
cc 5
eloc 11
nop 1
dl 27
loc 27
ccs 11
cts 11
cp 1
crap 5
rs 9.3333
c 0
b 0
f 0
1
"""
2
ETLT
3
4
Copyright 2016 Set Based IT Consultancy
5
6
Licence MIT
7
"""
8 1
import re
9
10
11 1 View Code Duplication
class MoneyCleaner:
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
12
    """
13
    Utility class for converting numbers to numbers with decimal points.
14
    """
15
16
    # ------------------------------------------------------------------------------------------------------------------
17 1
    @staticmethod
18 1
    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]{1,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]{1,2}$', amount):
35
            # Assume amount is in 1,123.12 format (Engels).
36 1
            return amount.replace(',', '').replace(' ', '')
37
38 1
        if re.search(r'[0-9](,[0-9]{1,2}$)', amount):
39
            # Assume amount is in 123,12 or in 123,1 format (Dutch).
40 1
            return amount.replace(',', '.')
41
42
        # Format of amount is not recognized. Return amount.
43 1
        return amount
44
45
# ----------------------------------------------------------------------------------------------------------------------
46