mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-12 18:36:53 +00:00
re-implemented the spaceless tag to reuse the filter tag logic
This commit is contained in:
@@ -18,6 +18,8 @@ use Twig\Compiler;
|
||||
*
|
||||
* It removes spaces between HTML tags.
|
||||
*
|
||||
* @internal Not used anymore, to be removed in 3.0
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class SpacelessNode extends Node
|
||||
|
||||
@@ -11,7 +11,10 @@
|
||||
|
||||
namespace Twig\TokenParser;
|
||||
|
||||
use Twig\Node\SpacelessNode;
|
||||
use Twig\Node\BlockNode;
|
||||
use Twig\Node\Expression\BlockReferenceExpression;
|
||||
use Twig\Node\Expression\ConstantExpression;
|
||||
use Twig\Node\PrintNode;
|
||||
use Twig\Token;
|
||||
|
||||
/**
|
||||
@@ -30,13 +33,23 @@ class SpacelessTokenParser extends AbstractTokenParser
|
||||
{
|
||||
public function parse(Token $token)
|
||||
{
|
||||
$lineno = $token->getLine();
|
||||
$this->parser->getStream()->injectTokens([
|
||||
new Token(Token::NAME_TYPE, 'spaceless', $token->getLine()),
|
||||
]);
|
||||
|
||||
$name = $this->parser->getVarName();
|
||||
$ref = new BlockReferenceExpression(new ConstantExpression($name, $token->getLine()), null, $token->getLine(), $this->getTag());
|
||||
|
||||
$filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag());
|
||||
$this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
|
||||
|
||||
$body = $this->parser->subparse([$this, 'decideSpacelessEnd'], true);
|
||||
$this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
|
||||
|
||||
return new SpacelessNode($body, $lineno, $this->getTag());
|
||||
$block = new BlockNode($name, $body, $token->getLine());
|
||||
$this->parser->setBlock($name, $block);
|
||||
|
||||
return new PrintNode($filter, $token->getLine(), $this->getTag());
|
||||
}
|
||||
|
||||
public function decideSpacelessEnd(Token $token)
|
||||
|
||||
Reference in New Issue
Block a user