UniqueNamePass   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 17
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 8
c 0
b 0
f 0
dl 0
loc 17
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A process() 0 15 3
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