AssetManifestTwigExtension   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 83.33%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 4
dl 0
loc 44
ccs 10
cts 12
cp 0.8333
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getAssetUrl() 0 11 2
A getFunctions() 0 4 1
A getName() 0 4 1
1
<?php
2
3
namespace Zenstruck\AssetManifestBundle\Twig;
4
5
use Symfony\Bridge\Twig\Extension\AssetExtension;
6
7
/**
8
 * @author Kevin Bond <[email protected]>
9
 */
10
final class AssetManifestTwigExtension extends \Twig_Extension
11
{
12
    private $assetMap;
13
14 5
    public function __construct(array $assetMap)
15
    {
16 5
        $this->assetMap = $assetMap;
17 5
    }
18
19
    /**
20
     * @param \Twig_Environment $twig
21
     * @param string            $path
22
     * @param string            $packageName
23
     *
24
     * @return string
25
     */
26 5
    public function getAssetUrl(\Twig_Environment $twig, $path, $packageName = null)
27
    {
28
        /** @var AssetExtension $asset */
29 5
        $asset = $twig->getExtension('Symfony\Bridge\Twig\Extension\AssetExtension');
30
31 5
        if (isset($this->assetMap[$path])) {
32 3
            $path = $this->assetMap[$path];
33
        }
34
35 5
        return $asset->getAssetUrl($path, $packageName);
36
    }
37
38
    /**
39
     * {@inheritdoc}
40
     */
41 1
    public function getFunctions()
42
    {
43 1
        return [new \Twig_SimpleFunction('manifest_asset', [$this, 'getAssetUrl'], ['needs_environment' => true])];
44
    }
45
46
    /**
47
     * {@inheritdoc}
48
     */
49
    public function getName()
50
    {
51
        return 'zenstruck_asset_manifest';
52
    }
53
}
54