Passed
Branch v2 (aaaa8e)
by Brent
03:38
created

RendererFactory   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 2
dl 0
loc 40
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A make() 0 4 1
A create() 0 12 3
A setTwigRule() 0 10 2
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
    public function __construct(string $templateDirectory)
13
    {
14
        $this->templateDirectory = $templateDirectory;
15
16
        $this->setTwigRule();
17
    }
18
19
    public static function make(string $templateDirectory): RendererFactory
20
    {
21
        return new self($templateDirectory);
22
    }
23
24
    public function create($value): ?Renderer
25
    {
26
        foreach ($this->getRules() as $rule) {
27
            $templateRenderer = $rule($value);
28
29
            if ($templateRenderer) {
30
                return $templateRenderer;
31
            }
32
        }
33
34
        return null;
35
    }
36
37
    private function setTwigRule(): void
38
    {
39
        $this->setRule(TwigRenderer::class, function ($value) {
40
            if ($value === 'twig') {
41
                return TwigRenderer::make($this->templateDirectory);
42
            }
43
44
            return null;
45
        });
46
    }
47
}
48