XerviceLoader   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 90
Duplicated Lines 0 %

Test Coverage

Coverage 80%

Importance

Changes 0
Metric Value
wmc 8
eloc 15
dl 0
loc 90
ccs 16
cts 20
cp 0.8
rs 10
c 0
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A addPath() 0 3 1
A providePaths() 0 4 2
A exists() 0 3 1
A __construct() 0 9 1
A getSourceContext() 0 3 1
A getCacheKey() 0 3 1
A isFresh() 0 3 1
1
<?php
2
declare(strict_types=1);
3
4
5
namespace Xervice\Twig\Business\Model\Loader;
6
7
8
use Xervice\Twig\Business\Model\Path\PathCollection;
9
10
class XerviceLoader implements \Twig_LoaderInterface, XerviceLoaderInterface
11
{
12
    protected const XERVICE_NAMESPACE = '__main__';
13
14
    /**
15
     * @var \Twig_Loader_Filesystem
16
     */
17
    private $twigFilesystemLoader;
18
19
    /**
20
     * @var \Xervice\Twig\Business\Model\Path\PathCollection
21
     */
22
    private $pathProviderCollection;
23
24
    /**
25
     * XerviceLoader constructor.
26
     *
27
     * @param \Twig_Loader_Filesystem $twigFilesystemLoader
28
     * @param \Xervice\Twig\Business\Model\Path\PathCollection $pathProviderCollection
29
     */
30 2
    public function __construct(
31
        \Twig_Loader_Filesystem $twigFilesystemLoader,
32
        PathCollection $pathProviderCollection
33
    ) {
34 2
        $this->twigFilesystemLoader = $twigFilesystemLoader;
35 2
        $this->pathProviderCollection = $pathProviderCollection;
36
37 2
        $this->addPath('/', '__main__');
38 2
        $this->providePaths();
39 2
    }
40
41
    /**
42
     * @param string $path
43
     * @param string $namespace
44
     *
45
     * @throws \Twig_Error_Loader
46
     */
47 2
    public function addPath(string $path, string $namespace = self::XERVICE_NAMESPACE): void
48
    {
49 2
        $this->twigFilesystemLoader->addPath($path, $namespace);
50 2
    }
51
52
    /**
53
     * @param string $name
54
     *
55
     * @return \Twig_Source
56
     * @throws \Twig_Error_Loader
57
     */
58 2
    public function getSourceContext($name): \Twig_Source
59
    {
60 2
        return $this->twigFilesystemLoader->getSourceContext($name);
61
    }
62
63
    /**
64
     * @param string $name
65
     *
66
     * @return string
67
     * @throws \Twig_Error_Loader
68
     */
69 2
    public function getCacheKey($name): string
70
    {
71 2
        return $this->twigFilesystemLoader->getCacheKey($name);
72
    }
73
74
    /**
75
     * @param string $name
76
     * @param int $time
77
     *
78
     * @return bool
79
     * @throws \Twig_Error_Loader
80
     */
81
    public function isFresh($name, $time): bool
82
    {
83
        return $this->twigFilesystemLoader->isFresh($name, $time);
84
    }
85
86
    /**
87
     * @param string $name
88
     *
89
     * @return bool
90
     */
91
    public function exists($name): bool
92
    {
93
        return $this->twigFilesystemLoader->exists($name);
94
    }
95
96 2
    protected function providePaths(): void
97
    {
98 2
        foreach ($this->pathProviderCollection as $pathProvider) {
99 2
            $pathProvider->provideTwigPaths($this);
100
        }
101
    }
102
}