Passed
Push — master ( b8aa68...00068d )
by Hannes
02:17
created

SekNoSubunitMoneyFormatter   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 8
c 1
b 0
f 0
dl 0
loc 20
rs 10
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A format() 0 15 4
1
<?php
2
/**
3
 * This file is part of byrokrat\giroapp.
4
 *
5
 * byrokrat\giroapp is free software: you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License as published
7
 * by the Free Software Foundation, either version 3 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * byrokrat\giroapp is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with byrokrat\giroapp. If not, see <http://www.gnu.org/licenses/>.
17
 *
18
 * Copyright 2016-19 Hannes Forsgård
19
 */
20
21
declare(strict_types = 1);
22
23
namespace byrokrat\giroapp\Money;
24
25
use Money\Money;
26
use Money\MoneyFormatter;
27
28
final class SekNoSubunitMoneyFormatter implements MoneyFormatter
29
{
30
    /**
31
     * @return string
32
     */
33
    public function format(Money $money)
34
    {
35
        if ($money->getCurrency()->getCode() != 'SEK') {
36
            throw new \InvalidArgumentException('SekNoSubunitMoneyFormatter can only work with SEK');
37
        }
38
39
        $amount = $money->getAmount();
40
41
        $subunits = substr($amount, -2);
42
43
        if ($subunits != '00') {
44
            throw new \InvalidArgumentException('Money subunits not allowed');
45
        }
46
47
        return substr($amount, 0, -2) ?: '0';
48
    }
49
}
50