Configuration::loadConstraintNode()   A
last analyzed

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 1
Metric Value
c 1
b 0
f 1
dl 0
loc 17
ccs 12
cts 12
cp 1
rs 9.4285
cc 1
eloc 13
nc 1
nop 0
crap 1
1
<?php
2
namespace Boekkooi\Bundle\TwigJackBundle\DependencyInjection;
3
4
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
5
use Symfony\Component\Config\Definition\ConfigurationInterface;
6
7
/**
8
 * @author Warnar Boekkooi <[email protected]>
9
 */
10
class Configuration implements ConfigurationInterface
11
{
12
    /**
13
     * {@inheritdoc}
14
     */
15 15
    public function getConfigTreeBuilder()
16
    {
17 15
        $treeBuilder = new TreeBuilder();
18
19 15
        $rootNode = $treeBuilder->root('boekkooi_twig_jack');
20 15
        $rootNode->append($this->loadLoadersNode());
21 15
        $rootNode->append($this->loadDeferNode());
22 15
        $rootNode->append($this->loadConstraintNode());
23
        $rootNode
24 15
            ->children()
25 15
                ->booleanNode('exclamation')->defaultTrue()->end()
26 15
            ->end();
27
28 15
        return $treeBuilder;
29
    }
30
31 15
    private function loadLoadersNode()
32
    {
33 15
        $treeBuilder = new TreeBuilder();
34
35 15
        $node = $treeBuilder->root('loaders');
36
        $node
37 15
            ->useAttributeAsKey('name')
38 15
            ->prototype('array')
39 15
                ->addDefaultsIfNotSet()
40 15
                ->children()
41 15
                    ->scalarNode('prefix')->isRequired()->treatNullLike('')->treatFalseLike('')->end()
42 15
                    ->enumNode('type')
43 15
                        ->isRequired()
44 15
                        ->cannotBeEmpty()
45 15
                        ->defaultValue('orm')
46 15
                        ->values(array('orm', 'mongo', 'couch', 'custom'))
47 15
                    ->end()
48 15
                    ->scalarNode('repository')
49 15
                        ->info('Custom service that must return a Doctrine\Common\Persistence\ObjectRepository')
50 15
                    ->end()
51 15
                    ->scalarNode('model_class')->isRequired()->cannotBeEmpty()->end()
52 15
                    ->scalarNode('locale_callable')
53 15
                        ->defaultValue(null)
54 15
                        ->info('A service that returns the current locale that will be used by a template.')
55 15
                    ->end()
56 15
                ->end()
57 15
            ->end();
58
59 15
        return $node;
60
    }
61
62 15
    private function loadDeferNode()
63
    {
64 15
        $treeBuilder = new TreeBuilder();
65
66 15
        $node = $treeBuilder->root('defer');
67
        $node
68 15
            ->addDefaultsIfNotSet()
69 15
            ->treatNullLike(array())
70 15
            ->treatFalseLike(array('enabled' => false))
71 15
            ->treatTrueLike(array('enabled' => true))
72 15
            ->children()
73 15
                ->booleanNode('enabled')->defaultTrue()->end()
74 15
                ->scalarNode('prefix')->defaultValue('_defer_ref_')->end()
75 15
            ->end();
76
77 15
        return $node;
78
    }
79
80 15
    private function loadConstraintNode()
81
    {
82 15
        $treeBuilder = new TreeBuilder();
83
84 15
        $node = $treeBuilder->root('constraint');
85
        $node
86 15
            ->addDefaultsIfNotSet()
87 15
            ->treatNullLike(array())
88 15
            ->treatFalseLike(array('enabled' => false))
89 15
            ->treatTrueLike(array('enabled' => true))
90 15
            ->children()
91 15
                ->booleanNode('enabled')->defaultFalse()->end()
92 15
                ->scalarNode('environment')->defaultValue('twig')->end()
93 15
            ->end();
94
95 15
        return $node;
96
    }
97
}
98