Merge pull request #130 from bzick/develop

Bug fixes 2.4.1
This commit is contained in:
Ivan Shalganov 2015-01-07 00:57:06 +03:00
commit 7d1b7cb691
9 changed files with 51 additions and 162 deletions

View File

@ -1,61 +0,0 @@
<?php
/** Fenom template 'greeting.tpl' compiled at 2013-09-02 17:37:18 */
return new Fenom\Render($fenom, function ($tpl) {
?>
A1
<?php
/* greeting.tpl:4: {mc.factorial num=10} */
$_tpl4154309674_1 = $tpl->exchangeArray(array("num" => 10));
?><?php
/* macros.tpl:2: {if $num} */
if($tpl["num"]) { ?>
<?php
/* macros.tpl:3: {$num} */
echo $tpl["num"]; ?> <?php
/* macros.tpl:3: {macro.factorial num=$num-1} */
$_tpl2531688351_1 = $tpl->exchangeArray(array("num" => $tpl["num"] - 1));
$tpl->getMacro("factorial")->__invoke($tpl);
$tpl->exchangeArray($_tpl2531688351_1); /* X */ unset($_tpl2531688351_1); ?> <?php
/* macros.tpl:3: {$num} */
echo $tpl["num"]; ?>
<?php
/* macros.tpl:4: {/if} */
} ?>
<?php
$tpl->exchangeArray($_tpl4154309674_1); /* X */ unset($_tpl4154309674_1); ?>
A2<?php
}, array(
'options' => 128,
'provider' => false,
'name' => 'greeting.tpl',
'base_name' => 'greeting.tpl',
'time' => 1378125225,
'depends' => array (
0 =>
array (
'macros.tpl' => 1378129033,
'greeting.tpl' => 1378125225,
),
),
'macros' => array(
'factorial' => function ($tpl) {
?><?php
/* macros.tpl:2: {if $num} */
if($tpl["num"]) { ?>
<?php
/* macros.tpl:3: {$num} */
echo $tpl["num"]; ?> <?php
/* macros.tpl:3: {macro.factorial num=$num-1} */
$_tpl2531688351_1 = $tpl->exchangeArray(array("num" => $tpl["num"] - 1));
$tpl->getMacro("factorial")->__invoke($tpl);
$tpl->exchangeArray($_tpl2531688351_1); /* X */ unset($_tpl2531688351_1); ?> <?php
/* macros.tpl:3: {$num} */
echo $tpl["num"]; ?>
<?php
/* macros.tpl:4: {/if} */
} ?>
<?php
}),
));

View File

@ -1,61 +0,0 @@
<?php
/** Fenom template 'greeting.tpl' compiled at 2013-09-02 17:37:39 */
return new Fenom\Render($fenom, function ($tpl) {
?>
A1
<?php
/* greeting.tpl:4: {mc.factorial num=10} */
$_tpl4154309674_1 = $tpl->exchangeArray(array("num" => 10));
?><?php
/* macros.tpl:2: {if $num} */
if($tpl["num"]) { ?>
<?php
/* macros.tpl:3: {$num} */
echo $tpl["num"]; ?> <?php
/* macros.tpl:3: {macro.factorial num=$num-1} */
$_tpl2531688351_1 = $tpl->exchangeArray(array("num" => $tpl["num"] - 1));
$tpl->getMacro("factorial")->__invoke($tpl);
$tpl->exchangeArray($_tpl2531688351_1); /* X */ unset($_tpl2531688351_1); ?> <?php
/* macros.tpl:3: {$num} */
echo $tpl["num"]; ?>
<?php
/* macros.tpl:4: {/if} */
} ?>
<?php
$tpl->exchangeArray($_tpl4154309674_1); /* X */ unset($_tpl4154309674_1); ?>
A2<?php
}, array(
'options' => 0,
'provider' => false,
'name' => 'greeting.tpl',
'base_name' => 'greeting.tpl',
'time' => 1378125225,
'depends' => array (
0 =>
array (
'macros.tpl' => 1378129033,
'greeting.tpl' => 1378125225,
),
),
'macros' => array(
'factorial' => function ($tpl) {
?><?php
/* macros.tpl:2: {if $num} */
if($tpl["num"]) { ?>
<?php
/* macros.tpl:3: {$num} */
echo $tpl["num"]; ?> <?php
/* macros.tpl:3: {macro.factorial num=$num-1} */
$_tpl2531688351_1 = $tpl->exchangeArray(array("num" => $tpl["num"] - 1));
$tpl->getMacro("factorial")->__invoke($tpl);
$tpl->exchangeArray($_tpl2531688351_1); /* X */ unset($_tpl2531688351_1); ?> <?php
/* macros.tpl:3: {$num} */
echo $tpl["num"]; ?>
<?php
/* macros.tpl:4: {/if} */
} ?>
<?php
}),
));

View File

@ -1,10 +1,11 @@
<?php
require_once __DIR__.'/../src/Fenom.php';
require_once __DIR__.'/../tests/tools.php';
\Fenom::registerAutoload();
$fenom = Fenom::factory(__DIR__.'/templates', __DIR__.'/compiled');
$fenom->setOptions(Fenom::AUTO_RELOAD | Fenom::AUTO_STRIP);
echo($fenom->compile("problem.tpl", false)->getBody());
$fenom->setOptions(Fenom::AUTO_RELOAD);
$fenom->display(["blocks/body.tpl", "layout.tpl"], []);
// $fenom->getTemplate("problem.tpl");

View File

@ -0,0 +1,4 @@
{block 'body'}
do extend
{/block}

View File

@ -0,0 +1,7 @@
<html>
<body>
{block 'body'}
nothing to do there
{/block}
</body>
</html>

View File

@ -938,7 +938,6 @@ class Fenom
return $tpl;
}
} elseif ($this->_options & self::FORCE_COMPILE) {
return $this->compile($template, $this->_options & self::DISABLE_CACHE & ~self::FORCE_COMPILE, $options);
} else {
return $this->_storage[$key] = $this->_load($template, $options);
@ -1020,9 +1019,8 @@ class Fenom
$template = $this->getRawTemplate()->load($tpl);
} else {
$template = $this->getRawTemplate()->load($tpl[0], false);
unset($tpl[0]);
foreach ($tpl as $t) {
$template->extend($t);
for($i = 1; $i < count($tpl); $i++) {
$template->extend($tpl[ $i ]);
}
}
if ($store) {

View File

@ -176,14 +176,13 @@ class Render extends \ArrayObject
*/
public function isValid()
{
if (count($this->_depends[0]) === 1) { // if no external dependencies, only self
$provider = $this->_fenom->getProvider($this->_scm);
if ($provider->getLastModified($this->_name) !== $this->_time) {
foreach ($this->_depends as $scm => $templates) {
$provider = $this->_fenom->getProvider($scm);
if(count($templates) === 1) {
if ($provider->getLastModified(key($templates)) !== $this->_time) {
return false;
}
} else {
foreach ($this->_depends as $scm => $templates) {
$provider = $this->_fenom->getProvider($scm);
if (!$provider->verify($templates)) {
return false;
}

View File

@ -7,35 +7,10 @@ define('FENOM_RESOURCES', __DIR__ . "/resources");
require_once FENOM_RESOURCES . "/actions.php";
require_once __DIR__ . "/TestCase.php";
require_once __DIR__ . "/tools.php";
ini_set('date.timezone', 'Europe/Moscow');
function drop()
{
call_user_func_array("var_dump", func_get_args());
$e = new Exception();
echo "-------\nDump trace: \n" . $e->getTraceAsString() . "\n";
exit();
}
function dump()
{
foreach (func_get_args() as $arg) {
fwrite(STDERR, "DUMP: " . call_user_func("print_r", $arg, true) . "\n");
}
}
function dumpt()
{
foreach (func_get_args() as $arg) {
fwrite(STDERR, "DUMP: " . call_user_func("print_r", $arg, true) . "\n");
}
$e = new Exception();
echo "-------\nDump trace: \n" . $e->getTraceAsString() . "\n";
}
if(PHP_VERSION_ID > 50400) {
function php_gte_54() {}
}

27
tests/tools.php Normal file
View File

@ -0,0 +1,27 @@
<?php
function drop()
{
call_user_func_array("var_dump", func_get_args());
$e = new Exception();
echo "-------\nDump trace: \n" . $e->getTraceAsString() . "\n";
exit();
}
function dump()
{
foreach (func_get_args() as $arg) {
fwrite(STDERR, "DUMP: " . call_user_func("print_r", $arg, true) . "\n");
}
}
function dumpt()
{
foreach (func_get_args() as $arg) {
fwrite(STDERR, "DUMP: " . call_user_func("print_r", $arg, true) . "\n");
}
$e = new Exception();
echo "-------\nDump trace: \n" . $e->getTraceAsString() . "\n";
}