Macro accept arguments as variables (starts from $)

This commit is contained in:
Ivan Shalganov 2014-04-11 23:29:36 +04:00
parent 8adc2ac55d
commit 11ae49f187
2 changed files with 10 additions and 2 deletions

View File

@ -889,7 +889,12 @@ class Compiler
return;
}
while ($tokens->is(Tokenizer::MACRO_STRING, T_VARIABLE)) {
$args[] = $param = $tokens->getAndNext();
$param = $tokens->current();
if($tokens->is(T_VARIABLE)) {
$param = ltrim($param, '$');
}
$tokens->next();
$args[] = $param;
if ($tokens->is('=')) {
$tokens->next();
if ($tokens->is(T_CONSTANT_ENCAPSED_STRING, T_LNUMBER, T_DNUMBER) || $tokens->isSpecialVal()) {

View File

@ -31,7 +31,7 @@ class MacrosTest extends TestCase
');
$this->tpl("import_custom.tpl", '
{macro minus(x, y)}
{macro minus($x, $y)}
new minus macros
{/macro}
{import [plus, minus] from "math.tpl" as math}
@ -88,6 +88,9 @@ class MacrosTest extends TestCase
$this->assertSame('Imp: x + y = 3 , x - y - z = 3', Modifier::strip($tpl->fetch(array()), true));
}
/**
* @group importCustom
*/
public function testImportCustom()
{
$tpl = $this->fenom->compile('import_custom.tpl');