ConfigParser::initializeCurrentConfig()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 4
rs 10
cc 2
eloc 2
nc 2
nop 1
1
<?php
2
/*
3
 * This file is part of the Borobudur-Config package.
4
 *
5
 * (c) Hexacodelabs <http://hexacodelabs.com>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
namespace Borobudur\Config;
12
13
use Borobudur\Config\Definition\ArrayNode;
14
use Borobudur\Config\Definition\NodeInterface;
15
16
/**
17
 * @author      Iqbal Maulana <[email protected]>
18
 * @created     8/11/15
19
 */
20
class ConfigParser
21
{
22
    /**
23
     * Parse configuration.
24
     *
25
     * @param NodeInterface $node
26
     * @param array         $configs
27
     *
28
     * @return array
29
     */
30
    public static function parse(NodeInterface $node, array $configs)
31
    {
32
        $current = self::initializeCurrentConfig($node);
33
        foreach ($configs as $index => $config) {
34
            if (!is_int($index) && $index !== $node->getName()) {
35
                continue;
36
            }
37
38
            $config = $node->normalize($config);
39
            $current = $node->merge($current, $config);
40
        }
41
42
        return $node->finalize($current);
43
    }
44
45
    /**
46
     * Parse configs from config definition.
47
     *
48
     * @param ConfigDefinitionInterface $config
49
     * @param array                     $configs
50
     *
51
     * @return array
52
     */
53
    public static function parseConfiguration(ConfigDefinitionInterface $config, array $configs)
54
    {
55
        return self::parse($config->getConfigTreeBuilder()->getNode(), $configs);
56
    }
57
58
    /**
59
     * Initialize start config.
60
     *
61
     * @param NodeInterface $node
62
     *
63
     * @return array|null
64
     */
65
    private static function initializeCurrentConfig(NodeInterface $node)
66
    {
67
        return $node instanceof ArrayNode ? array() : null;
68
    }
69
}
70