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 
12 namespace Assetic\Extension\Twig;
13 
14 use Assetic\Factory\Resource\ResourceInterface;
15 
16 /**
17  * A Twig template resource.
18  *
19  * @author Kris Wallsmith <kris.wallsmith@gmail.com>
20  */
21 class 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