mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-10 17:36:53 +00:00
added a do tag (closes #446)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
* 1.5.0
|
||||
|
||||
* added a do tag
|
||||
* added a flush tag
|
||||
* added support for dynamically named filters and functions
|
||||
* added a dump function to help debugging templates
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
=========
|
||||
|
||||
.. versionadded:: 1.5
|
||||
The use tag was added in Twig 1.5.
|
||||
The flush tag was added in Twig 1.5.
|
||||
|
||||
The ``flush`` tag tells Twig to flush the output buffer:
|
||||
|
||||
|
||||
@@ -19,3 +19,4 @@ Tags
|
||||
autoescape
|
||||
raw
|
||||
flush
|
||||
do
|
||||
|
||||
@@ -57,6 +57,7 @@ class Twig_Extension_Core extends Twig_Extension
|
||||
new Twig_TokenParser_Set(),
|
||||
new Twig_TokenParser_Spaceless(),
|
||||
new Twig_TokenParser_Flush(),
|
||||
new Twig_TokenParser_Do(),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Twig.
|
||||
*
|
||||
* (c) 2011 Fabien Potencier
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Represents a do node.
|
||||
*
|
||||
* @package twig
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
class Twig_Node_Do extends Twig_Node
|
||||
{
|
||||
public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null)
|
||||
{
|
||||
parent::__construct(array('expr' => $expr), array(), $lineno, $tag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compiles the node to PHP.
|
||||
*
|
||||
* @param Twig_Compiler A Twig_Compiler instance
|
||||
*/
|
||||
public function compile(Twig_Compiler $compiler)
|
||||
{
|
||||
$compiler
|
||||
->addDebugInfo($this)
|
||||
->write('')
|
||||
->subcompile($this->getNode('expr'))
|
||||
->raw(";\n")
|
||||
;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Twig.
|
||||
*
|
||||
* (c) 2011 Fabien Potencier
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Evaluates an expression, disgarding the returned value.
|
||||
*/
|
||||
class Twig_TokenParser_Do extends Twig_TokenParser
|
||||
{
|
||||
/**
|
||||
* Parses a token and returns a node.
|
||||
*
|
||||
* @param Twig_Token $token A Twig_Token instance
|
||||
*
|
||||
* @return Twig_NodeInterface A Twig_NodeInterface instance
|
||||
*/
|
||||
public function parse(Twig_Token $token)
|
||||
{
|
||||
$expr = $this->parser->getExpressionParser()->parseExpression();
|
||||
|
||||
$this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
|
||||
|
||||
return new Twig_Node_Do($expr, $token->getLine(), $this->getTag());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the tag name associated with this token parser.
|
||||
*
|
||||
* @param string The tag name
|
||||
*/
|
||||
public function getTag()
|
||||
{
|
||||
return 'do';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Twig.
|
||||
*
|
||||
* (c) Fabien Potencier
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__).'/TestCase.php';
|
||||
|
||||
class Twig_Tests_Node_DoTest extends Twig_Tests_Node_TestCase
|
||||
{
|
||||
/**
|
||||
* @covers Twig_Node_Do::__construct
|
||||
*/
|
||||
public function testConstructor()
|
||||
{
|
||||
$expr = new Twig_Node_Expression_Constant('foo', 0);
|
||||
$node = new Twig_Node_Do($expr, 0);
|
||||
|
||||
$this->assertEquals($expr, $node->getNode('expr'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Twig_Node_Do::compile
|
||||
* @dataProvider getTests
|
||||
*/
|
||||
public function testCompile($node, $source, $environment = null)
|
||||
{
|
||||
parent::testCompile($node, $source, $environment);
|
||||
}
|
||||
|
||||
public function getTests()
|
||||
{
|
||||
$tests = array();
|
||||
|
||||
$expr = new Twig_Node_Expression_Constant('foo', 0);
|
||||
$node = new Twig_Node_Do($expr, 0);
|
||||
$tests[] = array($node, '"foo";');
|
||||
|
||||
return $tests;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user