getLine(); $stream = $this->parser->getStream(); $key = $this->parser->getVarName() . $lineno; $lifetime = Grav::instance()['cache']->getLifetime(); // Check for optional lifetime override if (!$stream->test(Token::BLOCK_END_TYPE)) { $lifetime_expr = $this->parser->getExpressionParser()->parseExpression(); $lifetime = $lifetime_expr->getAttribute('value'); } $stream->expect(Token::BLOCK_END_TYPE); $body = $this->parser->subparse(array($this, 'decideCacheEnd'), true); $stream->expect(Token::BLOCK_END_TYPE); return new TwigNodeCache($key, $lifetime, $body, $lineno, $this->getTag()); } /** * Decide if current token marks end of cache block. * * @param Token $token * @return bool */ public function decideCacheEnd(Token $token) { return $token->test('endcache'); } /** * {@inheritDoc} */ public function getTag() { return 'cache'; } }