Passed
Branch master (17b603)
by P.R.
01:31
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 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