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; return;
} }
while ($tokens->is(Tokenizer::MACRO_STRING, T_VARIABLE)) { 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('=')) { if ($tokens->is('=')) {
$tokens->next(); $tokens->next();
if ($tokens->is(T_CONSTANT_ENCAPSED_STRING, T_LNUMBER, T_DNUMBER) || $tokens->isSpecialVal()) { 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", ' $this->tpl("import_custom.tpl", '
{macro minus(x, y)} {macro minus($x, $y)}
new minus macros new minus macros
{/macro} {/macro}
{import [plus, minus] from "math.tpl" as math} {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)); $this->assertSame('Imp: x + y = 3 , x - y - z = 3', Modifier::strip($tpl->fetch(array()), true));
} }
/**
* @group importCustom
*/
public function testImportCustom() public function testImportCustom()
{ {
$tpl = $this->fenom->compile('import_custom.tpl'); $tpl = $this->fenom->compile('import_custom.tpl');