Test Failed
Pull Request — master (#10)
by Yo
02:38
created

ConfigurationDenormalizer::valueOrNull()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
rs 10
cc 2
eloc 2
nc 2
nop 2
1
<?php
2
namespace Yoanm\ComposerConfigManager\Application\Serializer\Normalizer;
3
4
use Yoanm\ComposerConfigManager\Domain\Model\Configuration;
5
6
/**
7
 * Class ConfigurationDenormalizer
8
 */
9
class ConfigurationDenormalizer
10
{
11
    /** @var AuthorListNormalizer */
12
    private $authorListNormalizer;
13
    /** @var PackageListNormalizer */
14
    private $packageListNormalizer;
15
    /** @var SuggestedPackageListNormalizer */
16
    private $suggestedPackageListNormalizer;
17
    /** @var SupportListNormalizer */
18
    private $supportListNormalizer;
19
    /** @var AutoloadListNormalizer */
20
    private $autoloadListNormalizer;
21
    /** @var ScriptListNormalizer */
22
    private $scriptListNormalizer;
23
24
    public function __construct(
25
        AuthorListNormalizer $authorListNormalizer,
26
        PackageListNormalizer $packageListNormalizer,
27
        SuggestedPackageListNormalizer $suggestedPackageListNormalizer,
28
        SupportListNormalizer $supportListNormalizer,
29
        AutoloadListNormalizer $autoloadListNormalizer,
30
        ScriptListNormalizer $scriptListNormalizer
31
    ) {
32
        $this->authorListNormalizer = $authorListNormalizer;
33
        $this->packageListNormalizer = $packageListNormalizer;
34
        $this->suggestedPackageListNormalizer = $suggestedPackageListNormalizer;
35
        $this->supportListNormalizer = $supportListNormalizer;
36
        $this->autoloadListNormalizer = $autoloadListNormalizer;
37
        $this->scriptListNormalizer = $scriptListNormalizer;
38
    }
39
40
    /**
41
     * @param array $configuration
42
     *
43
     * @return Configuration
44
     */
45
    public function denormalize(array $configuration)
46
    {
47
48
        return new Configuration(
49
            $this->valueOrNull($configuration, ConfigurationNormalizer::KEY_NAME),
50
            $this->valueOrNull($configuration, ConfigurationNormalizer::KEY_TYPE),
51
            $this->valueOrNull($configuration, ConfigurationNormalizer::KEY_LICENSE),
52
            $this->valueOrNull($configuration, ConfigurationNormalizer::KEY_VERSION),
53
            $this->valueOrNull($configuration, ConfigurationNormalizer::KEY_DESCRIPTION),
54
            $configuration[ConfigurationNormalizer::KEY_KEYWORDS],
55
            isset($configuration[ConfigurationNormalizer::KEY_AUTHORS])
56
                ? $this->authorListNormalizer->denormalize($configuration[ConfigurationNormalizer::KEY_AUTHORS])
57
                : []
58
            ,
59
            isset($configuration[ConfigurationNormalizer::KEY_PROVIDE])
60
                ? $this->packageListNormalizer->denormalize($configuration[ConfigurationNormalizer::KEY_PROVIDE])
61
                : [],
62
            isset($configuration[ConfigurationNormalizer::KEY_SUGGEST])
63
                ? $this->suggestedPackageListNormalizer->denormalize($configuration[ConfigurationNormalizer::KEY_SUGGEST])
64
                : [],
65
            isset($configuration[ConfigurationNormalizer::KEY_SUPPORT])
66
                ? $this->supportListNormalizer->denormalize($configuration[ConfigurationNormalizer::KEY_SUPPORT])
67
                : [],
68
            isset($configuration[ConfigurationNormalizer::KEY_AUTOLOAD])
69
                ? $this->autoloadListNormalizer->denormalize($configuration[ConfigurationNormalizer::KEY_AUTOLOAD])
70
                : [],
71
            isset($configuration[ConfigurationNormalizer::KEY_AUTOLOAD_DEV])
72
                ? $this->autoloadListNormalizer->denormalize($configuration[ConfigurationNormalizer::KEY_AUTOLOAD_DEV])
73
                : [],
74
            isset($configuration[ConfigurationNormalizer::KEY_REQUIRE])
75
                ? $this->packageListNormalizer->denormalize($configuration[ConfigurationNormalizer::KEY_REQUIRE])
76
                : [],
77
            isset($configuration[ConfigurationNormalizer::KEY_REQUIRE_DEV])
78
                ? $this->packageListNormalizer->denormalize($configuration[ConfigurationNormalizer::KEY_REQUIRE_DEV])
79
                : [],
80
            isset($configuration[ConfigurationNormalizer::KEY_SCRIPT])
81
                ? $this->scriptListNormalizer->denormalize($configuration[ConfigurationNormalizer::KEY_SCRIPT])
82
                : []
83
        );
84
    }
85
86
    /**
87
     * @param array  $configuration
88
     * @param string $key
89
     *
90
     * @return mixed|null
91
     */
92
    protected function valueOrNull(array $configuration, $key)
93
    {
94
        return isset($configuration[$key]) ? $configuration[$key] : null;
95
    }
96
97
    /**
98
     * @param array  $normalizedConfiguration
99
     * @param string $value
100
     * @param string $key
101
     *
102
     * @return array
103
     */
104
    protected function appendIfDefined(array $normalizedConfiguration, $value, $key)
105
    {
106
        if ($value) {
107
            $normalizedConfiguration[$key] = $value;
108
        }
109
110
        return $normalizedConfiguration;
111
    }
112
}
113