1<?php
2
3/*
4 * This file is part of the Assetic package, an OpenSky project.
5 *
6 * (c) 2010-2014 OpenSky Project Inc
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Assetic\Extension\Twig;
13
14use Assetic\Factory\Resource\ResourceInterface;
15
16/**
17 * A Twig template resource.
18 *
19 * @author Kris Wallsmith <kris.wallsmith@gmail.com>
20 */
21class TwigResource implements ResourceInterface
22{
23    private $loader;
24    private $name;
25
26    public function __construct(\Twig_LoaderInterface $loader, $name)
27    {
28        $this->loader = $loader;
29        $this->name = $name;
30    }
31
32    public function getContent()
33    {
34        try {
35            return method_exists($this->loader, 'getSourceContext')
36                ? $this->loader->getSourceContext($this->name)->getCode()
37                : $this->loader->getSource($this->name);
38        } catch (\Twig_Error_Loader $e) {
39            return '';
40        }
41    }
42
43    public function isFresh($timestamp)
44    {
45        try {
46            return $this->loader->isFresh($this->name, $timestamp);
47        } catch (\Twig_Error_Loader $e) {
48            return false;
49        }
50    }
51
52    public function __toString()
53    {
54        return $this->name;
55    }
56}
57