Completed
Pull Request — master (#5)
by Tomáš
03:35
created

EnabledFixerResolver::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 7
ccs 4
cts 4
cp 1
rs 9.4285
cc 1
eloc 5
nc 1
nop 2
crap 1
1
<?php
2
3
/*
4
 * This file is part of Symplify
5
 * Copyright (c) 2016 Tomas Votruba (http://tomasvotruba.cz).
6
 */
7
8
namespace Symplify\MultiCodingStandard\PhpCsFixer;
9
10
use Symfony\CS\ConfigurationResolver;
11
use Symfony\CS\Fixer;
12
use Symfony\CS\FixerInterface;
13
use Symplify\MultiCodingStandard\Contract\Configuration\PhpCsFixerConfigurationInterface;
14
15
final class EnabledFixerResolver
16
{
17
    /**
18
     * @var PhpCsFixerConfigurationInterface
19
     */
20
    private $configuration;
21
22
    /**
23
     * @var ConfigurationResolverFactory
24
     */
25
    private $configurationResolverFactory;
26
27 1
    public function __construct(
28
        PhpCsFixerConfigurationInterface $configuration,
29
        ConfigurationResolverFactory $configurationResolverFactory
30
    ) {
31 1
        $this->configuration = $configuration;
32 1
        $this->configurationResolverFactory = $configurationResolverFactory;
33 1
    }
34
    
35
    /**
36
     * @return FixerInterface[]
37
     */
38 1
    public function getEnabledFixers()
39
    {
40 1
        $configurationResolver = $this->configurationResolverFactory->create();
41
42
        // 2. filter fixers in by level
43 1
        $finalFixersToBeRegistered = [];
44
45
        // filter out custom ones
46 1
        $excludedFixers = '';
47 1
        if (count($this->configuration->getExcludedFixers())) {
48 1
            $excludedFixers .= '-'.implode(',-', $this->configuration->getExcludedFixers());
49
        }
50
51 1
        foreach ($this->configuration->getActiveFixerLevels() as $level) {
52 1
            $currentConfigurationResolver = clone $configurationResolver;
53 1
            if ($excludedFixers) {
54 1
                $currentConfigurationResolver->setOption('fixers', $excludedFixers);
55
            }
56 1
            $currentConfigurationResolver->setOption('level', $level);
57 1
            $currentConfigurationResolver->resolve();
58
59 1
            $finalFixersToBeRegistered += $currentConfigurationResolver->getFixers();
60
        }
61
62
        // 3. filter in custom ones
63 1
        $fixers = '';
64 1
        if (count($this->configuration->getActiveFixers())) {
65 1
            $fixers .= implode(',', $this->configuration->getActiveFixers());
66
        }
67
68 1
        if ($fixers) {
69 1
            $currentConfigurationResolver = clone $configurationResolver;
70 1
            $currentConfigurationResolver->setOption('level', 'none');
71 1
            $currentConfigurationResolver->setOption('fixers', $fixers);
72 1
            $currentConfigurationResolver->resolve();
73
74 1
            $finalFixersToBeRegistered = array_merge(
75
                $finalFixersToBeRegistered,
76 1
                $currentConfigurationResolver->getFixers()
77
            );
78
        }
79
        
80 1
        return $finalFixersToBeRegistered;
81
    }
82
83
}