mirror of
https://github.com/twigphp/Twig.git
synced 2026-08-17 11:41:37 +00:00
Handle single-node child template bodies in cleanup
This commit is contained in:
@@ -171,6 +171,17 @@ EOF, 'index')));
|
||||
$this->assertSame('set', $body->getNode('4')->getNodeTag());
|
||||
}
|
||||
|
||||
public function testCleanupBodyForChildTemplatesWithASingleNodeBody()
|
||||
{
|
||||
$twig = new Environment(new ArrayLoader());
|
||||
$twig->addTokenParser(new ParentSettingTokenParser());
|
||||
|
||||
$node = $twig->parse($twig->tokenize(new Source('{% set_parent %}', 'index')));
|
||||
|
||||
$body = $node->getNode('body')->getNode('0');
|
||||
$this->assertInstanceOf(EmptyNode::class, $body);
|
||||
}
|
||||
|
||||
public function testBodyForParentTemplates()
|
||||
{
|
||||
$twig = new Environment(new ArrayLoader());
|
||||
@@ -231,3 +242,20 @@ class TestTokenParser extends AbstractTokenParser
|
||||
return 'test';
|
||||
}
|
||||
}
|
||||
|
||||
class ParentSettingTokenParser extends AbstractTokenParser
|
||||
{
|
||||
public function parse(Token $token): Node
|
||||
{
|
||||
$this->parser->setParent(new ConstantExpression('base', $token->getLine()), false);
|
||||
$this->parser->getStream()->expect(Token::BLOCK_END_TYPE);
|
||||
|
||||
// returns a blank text node so the whole child body is a single removable node
|
||||
return new TextNode(' ', $token->getLine());
|
||||
}
|
||||
|
||||
public function getTag(): string
|
||||
{
|
||||
return 'set_parent';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user