%PDF- %PDF-
| Direktori : /www/loslex_o/test/vendor/maximebf/debugbar/src/DebugBar/Bridge/Twig/ |
| Current File : /www/loslex_o/test/vendor/maximebf/debugbar/src/DebugBar/Bridge/Twig/MeasureTwigTokenParser.php |
<?php
namespace DebugBar\Bridge\Twig;
use Twig\Node\Expression\AssignNameExpression;
use Twig\Token;
use Twig\TokenParser\AbstractTokenParser;
/**
* Token Parser for the measure tag.
* Based on Symfony\Bridge\Twig\TokenParser\StopwatchTokenParser;
*/
class MeasureTwigTokenParser extends AbstractTokenParser
{
/**
* @var string
*/
private $extName;
/**
* @var string
*/
private $tagName;
/**
* @var bool
*/
private $enabled;
/**
*
* @param string $tagName
*/
public function __construct($enabled, $tagName, $extName = null)
{
$this->enabled = $enabled;
$this->tagName = $tagName;
$this->extName = $extName;
}
public function parse(Token $token)
{
$lineno = $token->getLine();
$stream = $this->parser->getStream();
// {% measure 'bar' %}
$name = $this->parser->getExpressionParser()->parseExpression();
$stream->expect(Token::BLOCK_END_TYPE);
// {% endmeasure %}
$body = $this->parser->subparse([$this, 'decideMeasureEnd'], true);
$stream->expect(Token::BLOCK_END_TYPE);
if ($this->enabled) {
return new MeasureTwigNode(
$name,
$body,
new AssignNameExpression($this->parser->getVarName(), $token->getLine()),
$lineno,
$this->getTag(),
$this->extName
);
}
return $body;
}
public function getTag()
{
return $this->tagName;
}
public function decideMeasureEnd(Token $token)
{
return $token->test('end'.$this->getTag());
}
}