* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bundle\FrameworkBundle\Templating; use Symfony\Component\Templating\TemplateNameParserInterface; use Symfony\Component\Templating\TemplateReferenceInterface; /** * TemplateFilenameParser converts template filenames to * TemplateReferenceInterface instances. * * @author Fabien Potencier */ class TemplateFilenameParser implements TemplateNameParserInterface { /** * {@inheritdoc} */ public function parse($name) { if ($name instanceof TemplateReferenceInterface) { return $name; } $parts = explode('/', str_replace('\\', '/', $name)); $elements = explode('.', array_pop($parts)); if (3 > \count($elements)) { return false; } $engine = array_pop($elements); $format = array_pop($elements); return new TemplateReference('', implode('/', $parts), implode('.', $elements), $format, $engine); } }