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

EnabledFixerResolver   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 7
c 2
b 0
f 0
lcom 1
cbo 3
dl 0
loc 69
ccs 28
cts 28
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
B getEnabledFixers() 0 44 6
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
}