Completed
Pull Request — master (#5)
by Kevin
04:25
created

AssetManifestTwigExtension   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 4
dl 0
loc 44
ccs 0
cts 20
cp 0
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
    public function __construct(array $assetMap)
15
    {
16
        $this->assetMap = $assetMap;
17
    }
18
19
    /**
20
     * @param \Twig_Environment $twig
21
     * @param string            $path
22
     * @param string            $packageName
23
     *
24
     * @return string
25
     */
26
    public function getAssetUrl(\Twig_Environment $twig, $path, $packageName = null)
27
    {
28
        /** @var AssetExtension $asset */
29
        $asset = $twig->getExtension('Symfony\Bridge\Twig\Extension\AssetExtension');
30
31
        if (isset($this->assetMap[$path])) {
32
            $path = $this->assetMap[$path];
33
        }
34
35
        return $asset->getAssetUrl($path, $packageName);
36
    }
37
38
    /**
39
     * {@inheritdoc}
40
     */
41
    public function getFunctions()
42
    {
43
        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