* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Asm89\Twig\CacheExtension\TokenParser; use Asm89\Twig\CacheExtension\Node\CacheNode; /** * Parser for cache/endcache blocks. * * @author Alexander */ class Cache extends \Twig_TokenParser { /** * @param \Twig_Token $token * * @return boolean */ public function decideCacheEnd(\Twig_Token $token) { return $token->test('endcache'); } /** * {@inheritDoc} */ public function getTag() { return 'cache'; } /** * {@inheritDoc} */ public function parse(\Twig_Token $token) { $lineno = $token->getLine(); $stream = $this->parser->getStream(); $annotation = $this->parser->getExpressionParser()->parseExpression(); $key = $this->parser->getExpressionParser()->parseExpression(); $stream->expect(\Twig_Token::BLOCK_END_TYPE); $body = $this->parser->subparse(array($this, 'decideCacheEnd'), true); $stream->expect(\Twig_Token::BLOCK_END_TYPE); return new CacheNode($annotation, $key, $body, $lineno, $this->getTag()); } }