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

AssetManifestTwigExtension::getAssetUrl()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 0
cts 8
cp 0
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 5
nc 2
nop 3
crap 6
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