Passed
Push — master ( 0da7d5...1cf961 )
by Mike
02:04
created

TranslatorFieldHandlerPlugin::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Xervice\Processor\Communication\Plugin;
5
6
7
use Xervice\ArrayHandler\Dependency\FieldHandlerPluginInterface;
8
9
class TranslatorFieldHandlerPlugin implements FieldHandlerPluginInterface
10
{
11
    /**
12
     * @var \Xervice\Processor\Business\Model\Translator\TranslatorInterface[]
13
     */
14
    private $translators;
15
16
    /**
17
     * TranslatorFieldHandlerPlugin constructor.
18
     *
19
     * @param \Xervice\Processor\Business\Model\Translator\TranslatorInterface[] $translators
20
     */
21 3
    public function __construct(array $translators)
22
    {
23 3
        $this->translators = $translators;
24 3
    }
25
26
    /**
27
     * @param array $data
28
     * @param mixed $fieldName
29
     * @param mixed $config
30
     *
31
     * @return array
32
     */
33 1
    public function handleSimpleConfig(array $data, $fieldName, $config): array
34
    {
35 1
        foreach ($this->translators as $translator) {
36 1
            if ($translator->getName() === $fieldName) {
37 1
                $data = $translator->translate($data);
38
            }
39
        }
40
41 1
        return $data;
42
    }
43
44
    /**
45
     * @param array $data
46
     * @param mixed $fieldName
47
     * @param array $config
48
     *
49
     * @return array
50
     */
51 1
    public function handleNestedConfig(array $data, $fieldName, array $config): array
52
    {
53 1
        foreach ($this->translators as $translator) {
54 1
            if ($translator->getName() === $fieldName) {
55 1
                $data = $translator->translate($data, $config);
56
            }
57
        }
58
59 1
        return $data;
60
    }
61
62
    /**
63
     * @param array $data
64
     * @param array $config
65
     *
66
     * @return array
67
     */
68
    public function handleArrayConfig(array $data, array $config): array
69
    {
70
        foreach ($this->translators as $translator) {
71
            if ($translator->getName() === $config) {
72
                $data = $translator->translate($data);
73
            }
74
        }
75
76
        return $data;
77
    }
78
79
    /**
80
     * @param array $data
81
     * @param mixed $fieldName
82
     * @param callable $config
83
     *
84
     * @return array
85
     */
86 1
    public function handleCallableConfig(array $data, $fieldName, callable $config): array
87
    {
88 1
        $data[$fieldName] = $config($data);
89
90 1
        return $data;
91
    }
92
}