SourceOptionResolver   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 2
dl 0
loc 41
ccs 16
cts 16
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getName() 0 4 1
A setSourceAllowedValues() 0 15 3
A resolve() 0 12 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\PHP7_CodeSniffer\Configuration\OptionResolver;
9
10
use Symfony\Component\OptionsResolver\OptionsResolver;
11
use Symplify\PHP7_CodeSniffer\Contract\Configuration\OptionResolver\OptionResolverInterface;
12
use Symplify\PHP7_CodeSniffer\Exception\Configuration\OptionResolver\SourceNotFoundException;
13
14
final class SourceOptionResolver implements OptionResolverInterface
15
{
16
    /**
17
     * @var string
18
     */
19
    const NAME = 'source';
20
21 5
    public function getName() : string
22
    {
23 5
        return self::NAME;
24
    }
25
26 1
    public function resolve(array $value) : array
27
    {
28 1
        $optionsResolver = new OptionsResolver();
29 1
        $optionsResolver->setDefined(self::NAME);
30 1
        $this->setSourceAllowedValues($optionsResolver);
31
32 1
        $values = $optionsResolver->resolve([
33 1
            self::NAME => $value
34
        ]);
35
36 1
        return $values[self::NAME];
37
    }
38
39
    private function setSourceAllowedValues(OptionsResolver $optionsResolver)
40
    {
41 1
        $optionsResolver->setAllowedValues(self::NAME, function (array $source) {
42 1
            foreach ($source as $singleSource) {
43 1
                if (!file_exists($singleSource)) {
44
                    throw new SourceNotFoundException(sprintf(
45 1
                        'Source "%s" does not exist.',
46
                        $singleSource
47
                    ));
48
                }
49
            }
50
51 1
            return true;
52 1
        });
53 1
    }
54
}
55