Passed
Push — master ( 298e9b...ad6831 )
by Hannes
02:30
created

CompilerConfigurator::loadCompilerPasses()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 2
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 4
rs 10
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-20 Hannes Forsgård
19
 */
20
21
declare(strict_types = 1);
22
23
namespace byrokrat\giroapp\Xml;
24
25
use Money\MoneyParser;
26
27
/**
28
 * Configure compiler based on ini settings
29
 */
30
final class CompilerConfigurator
31
{
32
    const PAYER_NR_STRATEGY_PERSONAL_ID = 'personal-id';
33
    const PAYER_NR_STRATEGY_IGNORE = 'ignore';
34
35
    /** @var array<CompilerPassInterface> */
36
    private $compilerPasses = [];
37
38
    public function __construct(
39
        string $payerNrStrategy,
40
        string $donationAmountFromAttribute,
41
        string $phoneFromAttribute,
42
        string $emailFromAttribute,
43
        string $commentFromAttribute,
44
        MoneyParser $moneyParser
45
    ) {
46
        switch ($payerNrStrategy) {
47
            case self::PAYER_NR_STRATEGY_PERSONAL_ID:
48
                $this->compilerPasses[] = new PayerNrFromPersonalIdPass;
49
                break;
50
            case self::PAYER_NR_STRATEGY_IGNORE:
51
            default:
52
                // ignore
53
        }
54
55
        $this->compilerPasses[] = new DonationAmountFromAttributePass(
56
            $donationAmountFromAttribute,
57
            $moneyParser
58
        );
59
60
        $this->compilerPasses[] = new PhoneFromAttributePass($phoneFromAttribute);
61
        $this->compilerPasses[] = new EmailFromAttributePass($emailFromAttribute);
62
        $this->compilerPasses[] = new CommentFromAttributePass($commentFromAttribute);
63
    }
64
65
    public function loadCompilerPasses(XmlMandateCompiler $compiler): void
66
    {
67
        foreach ($this->compilerPasses as $compilerPass) {
68
            $compiler->addCompilerPass($compilerPass);
69
        }
70
    }
71
}
72