RenderArgumentEmitter::emitArgument()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
namespace Khusseini\PimcoreRadBrickBundle;
4
5
class RenderArgumentEmitter
6
{
7
    /**
8
     * @var array<RenderArgument>
9
     */
10
    private $arguments = [];
11
12
    /**
13
     * @var array<RenderArgument>
14
     */
15
    private $emittedArguments = [];
16
17
    /**
18
     * @var array<RenderArgument>
19
     */
20
    private $toEmit = [];
21
22 27
    public function set(RenderArgument $argument): void
23
    {
24 27
        $this->arguments[$argument->getName()] = $argument;
25 27
    }
26
27 3
    public function has(string $name): bool
28
    {
29 3
        return isset($this->arguments[$name]);
30
    }
31
32 12
    public function get(string $name): RenderArgument
33
    {
34 12
        return $this->arguments[$name];
35
    }
36
37 22
    public function emitArgument(RenderArgument $argument): void
38
    {
39 22
        $this->set($argument);
40 22
        $this->toEmit[$argument->getName()] = $argument;
41 22
    }
42
43 26
    public function emit(): \Generator
44
    {
45 26
        foreach ($this->toEmit as $name => $argument) {
46 22
            if ($this->isArgumentEmitted($argument)) {
47 1
                continue;
48
            }
49 22
            $this->emittedArguments[$name] = $argument;
50 22
            yield $name => $argument;
51 22
            unset($this->toEmit[$name]);
52
        }
53 26
    }
54
55 22
    public function isArgumentEmitted(RenderArgument $renderArgument): bool
56
    {
57 22
        return isset($this->emittedArguments[$renderArgument->getName()]);
58
    }
59
}
60