Passed
Push — develop ( ec1e42...80559e )
by Brent
03:22
created

RendererFactory::create()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3.0416

Importance

Changes 0
Metric Value
cc 3
eloc 6
nc 3
nop 1
dl 0
loc 12
ccs 5
cts 6
cp 0.8333
crap 3.0416
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace Stitcher\Renderer;
4
5
use Stitcher\DynamicFactory;
6
use Stitcher\Renderer;
7
8
class RendererFactory extends DynamicFactory
9
{
10
    private $templateDirectory;
11
12 2
    public function __construct(string $templateDirectory)
13
    {
14 2
        $this->templateDirectory = $templateDirectory;
15
16 2
        $this->setTwigRule();
17 2
    }
18
19 1
    public static function make(string $templateDirectory): RendererFactory
20
    {
21 1
        return new self($templateDirectory);
22
    }
23
24 1
    public function create($value): ?Renderer
25
    {
26 1
        foreach ($this->getRules() as $rule) {
27 1
            $templateRenderer = $rule($value);
28
29 1
            if ($templateRenderer) {
30 1
                return $templateRenderer;
31
            }
32
        }
33
34
        return null;
35
    }
36
37
    private function setTwigRule(): void
38
    {
39 2
        $this->setRule(TwigRenderer::class, function ($value) {
40 1
            if ($value === 'twig') {
41 1
                return TwigRenderer::make($this->templateDirectory);
42
            }
43
44
            return null;
45 2
        });
46
    }
47
}
48