Passed
Push — master ( e2c3a7...b7736e )
by Iman
01:52
created

Normalizer   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 68
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
dl 0
loc 68
ccs 23
cts 23
cp 1
rs 10
c 2
b 0
f 0
wmc 4
lcom 1
cbo 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 13 1
A normalizeWidgetConfig() 0 15 2
A normalizeJsonWidget() 0 6 1
1
<?php
2
3
namespace Imanghafoori\Widgets\Utils;
4
5
use Imanghafoori\Widgets\Utils\Normalizers\CacheNormalizer;
6
use Imanghafoori\Widgets\Utils\Normalizers\TemplateNormalizer;
7
use Imanghafoori\Widgets\Utils\Normalizers\ContextAsNormalizer;
8
use Imanghafoori\Widgets\Utils\Normalizers\PresenterNormalizer;
9
use Imanghafoori\Widgets\Utils\Normalizers\ControllerNormalizer;
10
11
class Normalizer
12
{
13
    private $presenterNormalizer;
14
15
    private $templateNormalizer;
16
17
    private $cacheNormalizer;
18
19
    private $controllerNormalizer;
20
21
    private $contextAsNormalizer;
22
23
    /**
24
     * Normalizer constructor which accepts dependencies.
25
     *
26
     * @param TemplateNormalizer $templateNormalizer
27
     * @param CacheNormalizer $cacheNormalizer
28
     * @param PresenterNormalizer $presenterNormalizer
29
     * @param ControllerNormalizer $controllerNormalizer
30
     * @param ContextAsNormalizer $contextAsNormalizer
31
     */
32 13
    public function __construct(
33
        TemplateNormalizer $templateNormalizer,
34
        CacheNormalizer $cacheNormalizer,
35
        PresenterNormalizer $presenterNormalizer,
36
        ControllerNormalizer $controllerNormalizer,
37
        ContextAsNormalizer $contextAsNormalizer
38
    ) {
39 13
        $this->presenterNormalizer = $presenterNormalizer;
40 13
        $this->controllerNormalizer = $controllerNormalizer;
41 13
        $this->templateNormalizer = $templateNormalizer;
42 13
        $this->cacheNormalizer = $cacheNormalizer;
43 13
        $this->contextAsNormalizer = $contextAsNormalizer;
44 13
    }
45
46
    /**
47
     * Figures out and sets the widget configs according to conventions.
48
     *
49
     * @param object $widget
50
     */
51 12
    public function normalizeWidgetConfig($widget)
52
    {
53
        // to avoid normalizing a widget multiple times unnecessarily :
54 12
        if (isset($widget->isNormalized)) {
55 3
            return;
56
        }
57
58 12
        $this->controllerNormalizer->normalizeControllerMethod($widget);
59 12
        $this->presenterNormalizer->normalizePresenterName($widget);
60 12
        $this->templateNormalizer->normalizeTemplateName($widget);
61 12
        $this->cacheNormalizer->normalizeCacheLifeTime($widget);
62 12
        $this->cacheNormalizer->normalizeCacheTags($widget);
63 12
        $this->contextAsNormalizer->normalizeContextAs($widget);
64 12
        $widget->isNormalized = true;
65 12
    }
66
67
    /**
68
     * Figures out and sets json widget configs according to conventions.
69
     *
70
     * @param object $widget
71
     */
72 1
    public function normalizeJsonWidget($widget)
73
    {
74 1
        $this->controllerNormalizer->normalizeControllerMethod($widget);
75 1
        $this->cacheNormalizer->normalizeCacheLifeTime($widget);
76 1
        $this->cacheNormalizer->normalizeCacheTags($widget);
77 1
    }
78
}
79