Completed
Push — master ( bf73c4...f46316 )
by Nikola
02:17
created

Configuration::getRatesDefinition()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 17
ccs 12
cts 12
cp 1
rs 9.4286
cc 1
eloc 13
nc 1
nop 0
crap 1
1
<?php
2
3
namespace RunOpenCode\Bundle\ExchangeRate\DependencyInjection;
4
5
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
6
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
7
use Symfony\Component\Config\Definition\ConfigurationInterface;
8
9
class Configuration implements ConfigurationInterface
10
{
11
    /**
12
     * {@inheritdoc}
13
     */
14 4
    public function getConfigTreeBuilder()
15
    {
16 4
        $treeBuilder = new TreeBuilder();
17
18 4
        $rootNode = $treeBuilder->root('run_open_code_exchange_rate');
19
20
        $rootNode
21 4
            ->children()
22 4
                ->scalarNode('base_currency')->isRequired()->end()
23 4
                ->scalarNode('repository')->defaultValue('run_open_code.exchange_rate.repository.file_repository')->end()
24 4
                ->append($this->getRatesDefinition())
25 4
                ->append($this->getProcessorsDefinition())
26 4
                ->append($this->getFileRepositoryDefinition())
27 4
                ->append($this->getViewDefinition())
28 4
            ->end()
29 4
        ->end();
30
31 4
        return $treeBuilder;
32
    }
33
34 4
    protected function getRatesDefinition()
35
    {
36 4
        $node = new ArrayNodeDefinition('rates');
37
38
        $node
39 4
            ->requiresAtLeastOneElement()
40 4
                ->prototype('array')
41 4
                    ->children()
42 4
                        ->scalarNode('currency_code')->isRequired()->end()
43 4
                        ->scalarNode('rate_type')->isRequired()->end()
44 4
                        ->scalarNode('source')->isRequired()->end()
45 4
                    ->end()
46 4
                ->end()
47 4
            ->end();
48
49 4
        return $node;
50
    }
51
52 4
    protected function getProcessorsDefinition()
53
    {
54 4
        $node = new ArrayNodeDefinition('processors');
55
56
        $node
57 4
            ->useAttributeAsKey('name')
58 4
                ->prototype('scalar')->end()
59 4
            ->end();
60
61 4
        return $node;
62
    }
63
64 4
    protected function getFileRepositoryDefinition()
65
    {
66 4
        $node = new ArrayNodeDefinition('file_repository');
67
68
        $node
69 4
            ->addDefaultsIfNotSet()
70 4
            ->children()
71 4
                ->scalarNode('path')->defaultValue('%kernel.root_dir%/db/exchange_rates.dat')->end()
72 4
            ->end()
73 4
        ->end();
74
75 4
        return $node;
76
    }
77
78 4
    protected function getViewDefinition()
79
    {
80 4
        $node = new ArrayNodeDefinition('view');
81
82
        $node
83 4
            ->addDefaultsIfNotSet()
84 4
            ->children()
85 4
                ->scalarNode('base_template')->defaultValue('@ExchangeRate/base.html.twig')->end()
86 4
                ->scalarNode('list')->defaultValue('@ExchangeRate/list.html.twig')->end()
87 4
                ->scalarNode('new')->defaultValue('@ExchangeRate/new.html.twig')->end()
88 4
                ->scalarNode('date_format')->defaultValue('Y-m-d')->end()
89 4
                ->scalarNode('date_time_format')->defaultValue('Y-m-d H:i')->end()
90 4
            ->end()
91 4
        ->end();
92
93 4
        return $node;
94
    }
95
}
96