OnEmpty::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
/**
3
 * Webino (http://webino.sk)
4
 *
5
 * @link        https://github.com/webino/WebinoDraw for the canonical source repository
6
 * @copyright   Copyright (c) 2012-2017 Webino, s. r. o. (http://webino.sk)
7
 * @author      Peter Bačinský <[email protected]>
8
 * @license     BSD-3-Clause
9
 */
10
11
namespace WebinoDraw\Manipulator\Plugin;
12
13
use WebinoDraw\Instructions\InstructionsRenderer;
14
15
/**
16
 *
17
 */
18
class OnEmpty implements InLoopPluginInterface
19
{
20
    /**
21
     * @var InstructionsRenderer
22
     */
23
    protected $instructionsRenderer;
24
25
    /**
26
     * @param InstructionsRenderer $instructionsRenderer
27
     */
28
    public function __construct(InstructionsRenderer $instructionsRenderer)
29
    {
30
        $this->instructionsRenderer = $instructionsRenderer;
31
    }
32
33
    /**
34
     * @param PluginArgument $arg
35
     */
36
    public function inLoop(PluginArgument $arg)
37
    {
38
        $spec = $arg->getSpec();
39
        if (empty($spec['onEmpty'])) {
40
            return;
41
        }
42
43
        $node = $arg->getNode();
44
        if (!$node->isEmpty()) {
45
            return;
46
        }
47
48
        $onEmptySpec = $spec['onEmpty'];
49
        $nodes       = $arg->getNodes()->create([$node]);
50
        $translation = $arg->getTranslation();
51
52
        if (!empty($onEmptySpec['locator'])) {
53
            $this->instructionsRenderer->subInstructions($nodes, [$onEmptySpec], $translation);
54
            return;
55
        }
56
57
        $this->instructionsRenderer->expandInstructions($onEmptySpec, $translation);
58
        empty($onEmptySpec['instructions'])
59
            or $this->instructionsRenderer->subInstructions(
60
                $nodes,
61
                $onEmptySpec['instructions'],
62
                $translation
63
            );
64
65
        $arg->getHelper()->manipulateNodes($nodes, $onEmptySpec, $translation);
66
    }
67
}
68