Passed
Push — master ( 4ca145...e39a6b )
by Jakub
02:24
created

Req2CmdConfiguration::addExtractorNode()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 21
c 0
b 0
f 0
rs 9.3142
cc 1
eloc 17
nc 1
nop 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Eps\Req2CmdBundle\DependencyInjection;
5
6
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
7
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
8
use Symfony\Component\Config\Definition\ConfigurationInterface;
9
10
final class Req2CmdConfiguration implements ConfigurationInterface
11
{
12
    /**
13
     * {@inheritdoc}
14
     * @throws \RuntimeException
15
     */
16
    public function getConfigTreeBuilder(): TreeBuilder
17
    {
18
        $builder = new TreeBuilder();
19
20
        $root = $builder->root('req2cmd');
21
        $root
22
            ->children()
23
                ->append($this->addExtractorNode())
24
            ->end();
25
26
        return $builder;
27
    }
28
29
    private function addExtractorNode(): NodeDefinition
30
    {
31
        $builder = new TreeBuilder();
32
        $root = $builder->root('extractor');
33
        $root
34
            ->addDefaultsIfNotSet()
35
            ->beforeNormalization()
36
                ->ifString()
37
                ->then(function ($extractorName) {
38
                    return ['service_id' => 'eps.req2cmd.extractor.' . $extractorName];
39
                })
40
            ->end()
41
            ->children()
42
                ->scalarNode('service_id')
43
                    ->cannotBeEmpty()
44
                    ->defaultValue('eps.req2cmd.extractor.serializer')
45
                ->end()
46
            ->end();
47
48
        return $root;
49
    }
50
}
51