public function TwigTransTokenParser::parse in Drupal 8
Same name and namespace in other branches
- 9 core/lib/Drupal/Core/Template/TwigTransTokenParser.php \Drupal\Core\Template\TwigTransTokenParser::parse()
File
- core/
lib/ Drupal/ Core/ Template/ TwigTransTokenParser.php, line 21
Class
- TwigTransTokenParser
- A class that defines the Twig 'trans' token parser for Drupal.
Namespace
Drupal\Core\TemplateCode
public function parse(\Twig_Token $token) {
$lineno = $token
->getLine();
$stream = $this->parser
->getStream();
$body = NULL;
$options = NULL;
$count = NULL;
$plural = NULL;
if (!$stream
->test(\Twig_Token::BLOCK_END_TYPE) && $stream
->test(\Twig_Token::STRING_TYPE)) {
$body = $this->parser
->getExpressionParser()
->parseExpression();
}
if (!$stream
->test(\Twig_Token::BLOCK_END_TYPE) && $stream
->test(\Twig_Token::NAME_TYPE, 'with')) {
$stream
->next();
$options = $this->parser
->getExpressionParser()
->parseExpression();
}
if (!$body) {
$stream
->expect(\Twig_Token::BLOCK_END_TYPE);
$body = $this->parser
->subparse([
$this,
'decideForFork',
]);
if ('plural' === $stream
->next()
->getValue()) {
$count = $this->parser
->getExpressionParser()
->parseExpression();
$stream
->expect(\Twig_Token::BLOCK_END_TYPE);
$plural = $this->parser
->subparse([
$this,
'decideForEnd',
], TRUE);
}
}
$stream
->expect(\Twig_Token::BLOCK_END_TYPE);
$this
->checkTransString($body, $lineno);
$node = new TwigNodeTrans($body, $plural, $count, $options, $lineno, $this
->getTag());
return $node;
}