This commit is contained in:
bzick 2015-06-03 00:13:09 +03:00
parent e0fc70b751
commit c2751e069c
5 changed files with 19 additions and 28 deletions

View File

@ -6,7 +6,8 @@ require_once __DIR__.'/../tests/tools.php';
\Fenom::registerAutoload();
$fenom = Fenom::factory(__DIR__.'/templates', __DIR__.'/compiled');
$fenom->setOptions(Fenom::AUTO_RELOAD);
var_dump($fenom->compileCode('{set $z = "A"~~"B"}')->getBody());
//$fenom->display("blocks/second.tpl", []);
$fenom->setOptions(Fenom::AUTO_RELOAD | Fenom::FORCE_COMPILE);
//var_dump($fenom->compileCode('{set $z = "A"~~"B"}')->getBody());
//var_dump($fenom->compile("bug158/main.tpl", [])->getTemplateCode());
var_dump($fenom->display("bug158/main.tpl", []));
// $fenom->getTemplate("problem.tpl");

View File

@ -0,0 +1,3 @@
{* Отображаемый шаблон *}
{import [test] from "bug158/test.tpl" as test}
{test.test}

View File

@ -0,0 +1,7 @@
{* template:test.tpl *}
{macro test($break = false)}
Test macro recursive
{if $break?}
{macro.test break = true}
{/if}
{/macro}

View File

@ -428,9 +428,9 @@ class Template extends Render
{
if ($this->macros) {
$macros = array();
foreach ($this->macros as $m) {
foreach ($this->macros as $name => $m) {
if ($m["recursive"]) {
$macros[] = "\t\t'" . $m["name"] . "' => function (\$var, \$tpl) {\n?>" . $m["body"] . "<?php\n}";
$macros[] = "\t\t'" . $name . "' => function (\$var, \$tpl) {\n?>" . $m["body"] . "<?php\n}";
}
}
return "array(\n" . implode(",\n", $macros) . ")";
@ -1369,6 +1369,7 @@ class Template extends Render
{
$recursive = false;
$macro = false;
if (isset($this->macros[$name])) {
$macro = $this->macros[$name];
$recursive = $macro['recursive'];

View File

@ -77,34 +77,12 @@ class MacrosTest extends TestCase
$this->tpl(
"macro_recursive_import.tpl",
'
{import "macro_recursive.tpl" as math}
{import [factorial] from "macro_recursive.tpl" as math}
{math.factorial num=10}'
);
}
public function _testSandbox()
{
try {
// $this->fenom->compile("macro_recursive.tpl")->display([]);
// $this->fenom->flush();
// var_dump($this->fenom->fetch("macro_recursive.tpl", []));
var_dump(
$this->fenom->compileCode(
'{macro factorial(num)}
{if $num}
{$num} {macro.factorial num=$num-1} {$num}
{/if}
{/macro}'
)->getBody()
);
// var_dump($this->fenom->display("macro_recursive_import.tpl", array()));
} catch (\Exception $e) {
var_dump($e->getMessage() . ": " . $e->getTraceAsString());
}
exit;
}
/**
* @throws \Exception
* @group macros
@ -162,6 +140,7 @@ class MacrosTest extends TestCase
$this->assertSame("10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10", Modifier::strip($tpl->fetch(array()), true));
}
public function testImportRecursive()
{
$this->fenom->compile('macro_recursive_import.tpl');