Passed
Push — master ( 83b89e...48455b )
by Hannes
02:13
created

CodeGenerator   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 18
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 18
rs 10
c 0
b 0
f 0
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A generateRouterCode() 0 14 2
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace inroutephp\inroute\Compiler\Aura;
6
7
use inroutephp\inroute\Compiler\CodeGeneratorInterface;
8
use inroutephp\inroute\Compiler\RouteCollectionInterface;
9
use inroutephp\inroute\Compiler\Settings\SettingsInterface;
10
use Symfony\Component\VarExporter\VarExporter;
11
12
final class CodeGenerator implements CodeGeneratorInterface
13
{
14
    private const TEMPLATE_PATH = __DIR__ . '/router_template.php';
15
16
    public function generateRouterCode(SettingsInterface $settings, RouteCollectionInterface $routes): string
17
    {
18
        $exportedRoutes = [];
19
20
        foreach ($routes->getRoutes() as $route) {
21
            $exportedRoutes[] = VarExporter::export($route);
22
        }
23
24
        ob_start();
25
        require self::TEMPLATE_PATH;
26
        $code = ob_get_contents();
27
        ob_end_clean();
28
29
        return (string)$code;
30
    }
31
}
32