Accountant   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 3
dl 0
loc 94
ccs 22
cts 22
cp 1
rs 10
c 0
b 0
f 0

8 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getFunctions() 0 10 1
A add() 0 4 1
A subtract() 0 4 1
A multiply() 0 4 1
A divide() 0 4 1
A sum() 0 4 1
A getName() 0 4 1
1
<?php
2
3
namespace Assimtech\Money\Twig\Extension;
4
5
use Twig_Extension;
6
use Twig_SimpleFunction;
7
use Assimtech\Money;
8
9
class Accountant extends Twig_Extension
10
{
11
    /**
12
     * @var Money\Accountant $accountant
13
     */
14
    protected $accountant;
15
16
    /**
17
     * @param Money\Accountant $accountant
18
     */
19 8
    public function __construct(Money\Accountant $accountant)
20
    {
21 8
        $this->accountant = $accountant;
22 8
    }
23
24
    /**
25
     * {@inheritdoc}
26
     */
27 1
    public function getFunctions()
28
    {
29
        return array(
30 1
            new Twig_SimpleFunction('add_money', array($this, 'add')),
31 1
            new Twig_SimpleFunction('subtract_money', array($this, 'subtract')),
32 1
            new Twig_SimpleFunction('multiply_money', array($this, 'multiply')),
33 1
            new Twig_SimpleFunction('divide_money', array($this, 'divide')),
34 1
            new Twig_SimpleFunction('sum_monies', array($this, 'sum')),
35 1
        );
36
    }
37
38
    /**
39
     * $money1 + $money2
40
     *
41
     * @param Money\Money $money1
42
     * @param Money\Money $money2
43
     * @return Money\Money
44
     */
45 1
    public function add(Money\Money $money1, Money\Money $money2)
46
    {
47 1
        return $this->accountant->add($money1, $money2);
48
    }
49
50
    /**
51
     * $money1 - $money2
52
     *
53
     * @param Money\Money $money1
54
     * @param Money\Money $money2
55
     * @return Money\Money
56
     */
57 1
    public function subtract(Money\Money $money1, Money\Money $money2)
58
    {
59 1
        return $this->accountant->subtract($money1, $money2);
60
    }
61
62
    /**
63
     * $money * $fraction
64
     *
65
     * @param Money\Money $money
66
     * @param float|integer $fraction
67
     * @return Money\Money
68
     */
69 1
    public function multiply(Money\Money $money, $fraction)
70
    {
71 1
        return $this->accountant->multiply($money, $fraction);
72
    }
73
74
    /**
75
     * $money / $fraction
76
     *
77
     * @param Money\Money $money
78
     * @param float|integer $fraction
79
     * @return Money\Money
80
     */
81 1
    public function divide(Money\Money $money, $fraction)
82
    {
83 1
        return $this->accountant->divide($money, $fraction);
84
    }
85
86
    /**
87
     * @param Money\Money[] $monies
88
     * @return Money\Money
89
     */
90 1
    public function sum(array $monies)
91
    {
92 1
        return $this->accountant->sum($monies);
93
    }
94
95
    /**
96
     * {@inheritdoc}
97
     */
98 1
    public function getName()
99
    {
100 1
        return 'assimtech_money_accountant';
101
    }
102
}
103