diff -r 000000000000 -r 7f95f8617b0b vendor/bundles/Symfony/Bundle/AsseticBundle/Factory/Resource/FileResource.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/bundles/Symfony/Bundle/AsseticBundle/Factory/Resource/FileResource.php Sat Sep 24 15:40:41 2011 +0200 @@ -0,0 +1,78 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Symfony\Bundle\AsseticBundle\Factory\Resource; + +use Assetic\Factory\Resource\ResourceInterface; +use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference; +use Symfony\Component\Templating\Loader\LoaderInterface; + +/** + * A file resource. + * + * @author Kris Wallsmith + */ +class FileResource implements ResourceInterface +{ + protected $loader; + protected $bundle; + protected $baseDir; + protected $path; + protected $template; + + /** + * Constructor. + * + * @param LoaderInterface $loader The templating loader + * @param string $bundle The current bundle name + * @param string $baseDir The directory + * @param string $path The file path + */ + public function __construct(LoaderInterface $loader, $bundle, $baseDir, $path) + { + $this->loader = $loader; + $this->bundle = $bundle; + $this->baseDir = $baseDir; + $this->path = $path; + } + + public function isFresh($timestamp) + { + return $this->loader->isFresh($this->getTemplate(), $timestamp); + } + + public function getContent() + { + return $this->loader->load($this->getTemplate())->getContent(); + } + + public function __toString() + { + return (string) $this->getTemplate(); + } + + protected function getTemplate() + { + if (null === $this->template) { + $this->template = self::createTemplateReference($this->bundle, substr($this->path, strlen($this->baseDir))); + } + + return $this->template; + } + + static private function createTemplateReference($bundle, $file) + { + $parts = explode('/', strtr($file, '\\', '/')); + $elements = explode('.', array_pop($parts)); + + return new TemplateReference($bundle, implode('/', $parts), $elements[0], $elements[1], $elements[2]); + } +}