Compiler::compile()   A
last analyzed

Complexity

Conditions 5
Paths 6

Size

Total Lines 16
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 8
nc 6
nop 1
dl 0
loc 16
rs 9.6111
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace inroutephp\inroute\Compiler;
6
7
final class Compiler implements CompilerInterface
8
{
9
    /**
10
     * @var CompilerPassInterface[]
11
     */
12
    private $passes = [];
13
14
    public function addCompilerPass(CompilerPassInterface $pass): void
15
    {
16
        $this->passes[] = $pass;
17
    }
18
19
    public function compile(RouteCollectionInterface ...$collections): RouteCollectionInterface
20
    {
21
        $routes = [];
22
23
        foreach ($collections as $collection) {
24
            foreach ($collection->getRoutes() as $route) {
25
                foreach ($this->passes as $pass) {
26
                    $route = $pass->processRoute($route);
27
                }
28
                if ($route->isRoutable()) {
29
                    $routes[] = $route;
30
                }
31
            }
32
        }
33
34
        return new RouteCollection($routes);
35
    }
36
}
37