123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- /* vim: set expandtab sw=4 ts=4 sts=4: */
- /**
- * hold PhpMyAdmin\Twig\I18n\TokenParserTrans class
- *
- * @package PhpMyAdmin\Twig\I18n
- */
- namespace PhpMyAdmin\Twig\I18n;
- use Twig\Extensions\TokenParser\TransTokenParser;
- use Twig\Token;
- /**
- * Class TokenParserTrans
- *
- * @package PhpMyAdmin\Twig\I18n
- */
- class TokenParserTrans extends TransTokenParser
- {
- /**
- * Parses a token and returns a node.
- *
- * @param Token $token Twig token to parse
- *
- * @return Twig_NodeInterface
- *
- * @throws \Twig\Error\SyntaxError
- */
- public function parse(Token $token)
- {
- $lineno = $token->getLine();
- $stream = $this->parser->getStream();
- $count = null;
- $plural = null;
- $notes = null;
- $context = null;
- if (!$stream->test(Token::BLOCK_END_TYPE)) {
- $body = $this->parser->getExpressionParser()->parseExpression();
- } else {
- $stream->expect(Token::BLOCK_END_TYPE);
- $body = $this->parser->subparse(array($this, 'decideForFork'));
- $next = $stream->next()->getValue();
- if ('plural' === $next) {
- $count = $this->parser->getExpressionParser()->parseExpression();
- $stream->expect(Token::BLOCK_END_TYPE);
- $plural = $this->parser->subparse(array($this, 'decideForFork'));
- if ('notes' === $stream->next()->getValue()) {
- $stream->expect(Token::BLOCK_END_TYPE);
- $notes = $this->parser->subparse(array($this, 'decideForEnd'), true);
- }
- } elseif ('context' === $next) {
- $stream->expect(Token::BLOCK_END_TYPE);
- $context = $this->parser->subparse(array($this, 'decideForEnd'), true);
- } elseif ('notes' === $next) {
- $stream->expect(Token::BLOCK_END_TYPE);
- $notes = $this->parser->subparse(array($this, 'decideForEnd'), true);
- }
- }
- $stream->expect(Token::BLOCK_END_TYPE);
- $this->checkTransString($body, $lineno);
- return new NodeTrans($body, $plural, $count, $context, $notes, $lineno, $this->getTag());
- }
- /**
- * Tests the current token for a type.
- *
- * @param Token $token Twig token to test
- *
- * @return bool
- */
- public function decideForFork(Token $token)
- {
- return $token->test(array('plural', 'context', 'notes', 'endtrans'));
- }
- }
|