TemplateRenderer   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 17
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 2
eloc 9
c 2
b 0
f 0
dl 0
loc 17
ccs 9
cts 9
cp 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A render() 0 15 2
1
<?php
2
3
declare(strict_types=1);
4
5
// phpcs:disable Generic.PHP.ForbiddenFunctions
6
7
namespace midorikocak\view;
8
9
use function array_map;
10
use function array_unique;
11
use function file_get_contents;
12
use function preg_match_all;
13
use function preg_replace;
14
use function str_replace;
15
use function trim;
16
17
class TemplateRenderer implements RendererInterface
18
{
19 1
    public function render(string $filename, array $data = []): string
20
    {
21 1
        $templateContents = file_get_contents($filename);
22 1
        preg_match_all('/{{ *([a-zA-Z_0-9-]*)? *}}/', $templateContents, $templateVars);
23
24
        $templateVarNames = array_unique(array_map(function ($item) {
25 1
            return trim($item);
26 1
        }, $templateVars[1]));
27
28 1
        $tokenized = preg_replace('/{{ *([a-zA-Z_0-9-]*)? *}}/', '{{$1}}', $templateContents);
29
30 1
        foreach ($templateVarNames as $toReplace) {
31 1
            $tokenized = str_replace('{{' . $toReplace . '}}', $data[$toReplace] ?? '', $tokenized);
32
        }
33 1
        return $tokenized;
34
    }
35
}
36