UniqueNamePass::process()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 7
c 0
b 0
f 0
dl 0
loc 15
rs 10
cc 3
nc 3
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace hanneskod\readmetester\Compiler\Pass;
6
7
use hanneskod\readmetester\Compiler\CompilerPassInterface;
8
use hanneskod\readmetester\Example\ExampleStoreInterface;
9
10
/**
11
 * Assert that all examples in store have unique names
12
 */
13
final class UniqueNamePass implements CompilerPassInterface
14
{
15
    public function process(ExampleStoreInterface $store): ExampleStoreInterface
16
    {
17
        $names = [];
18
19
        foreach ($store->getExamples() as $example) {
20
            $name = $example->getName()->getFullName();
21
22
            if (isset($names[$name])) {
23
                throw new \RuntimeException("Unable to create example '$name', name already exists");
24
            }
25
26
            $names[$name] = true;
27
        }
28
29
        return $store;
30
    }
31
}
32