mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
Merge branch 'origin/master'
Conflicts: src/Fenom/Compiler.php src/Fenom/Template.php tests/cases/Fenom/TemplateTest.php tests/cases/Fenom/TokenizerTest.php tests/cases/FenomTest.php
This commit is contained in:
@ -39,7 +39,8 @@ class Compiler
|
||||
if ($name && ($tpl->getStorage()->getOptions() & \Fenom::FORCE_INCLUDE)) {
|
||||
$inc = $tpl->getStorage()->compile($name, false);
|
||||
$tpl->addDepend($inc);
|
||||
return '$_tpl = (array)$tpl; $tpl->exchangeArray(' . self::toArray($p) . '+$_tpl); ?>' . $inc->getBody() . '<?php $tpl->exchangeArray($_tpl); unset($_tpl);';
|
||||
$var = $tpl->tmpVar();
|
||||
return $var.' = (array)$tpl; $tpl->exchangeArray(' . self::toArray($p) . '+'.$var.'); ?>' . $inc->getBody() . '<?php $tpl->exchangeArray('.$var.'); unset('.$var.');';
|
||||
} else {
|
||||
return '$tpl->getStorage()->getTemplate(' . $cname . ')->display(' . self::toArray($p) . '+(array)$tpl);';
|
||||
}
|
||||
@ -47,7 +48,8 @@ class Compiler
|
||||
if ($name && ($tpl->getStorage()->getOptions() & \Fenom::FORCE_INCLUDE)) {
|
||||
$inc = $tpl->getStorage()->compile($name, false);
|
||||
$tpl->addDepend($inc);
|
||||
return '$_tpl = (array)$tpl; ?>' . $inc->getBody() . '<?php $tpl->exchangeArray($_tpl); unset($_tpl);';
|
||||
$var = $tpl->tmpVar();
|
||||
return $var.' = (array)$tpl; ?>' . $inc->getBody() . '<?php $tpl->exchangeArray('.$var.'); unset('.$var.');';
|
||||
} else {
|
||||
return '$tpl->getStorage()->getTemplate(' . $cname . ')->display((array)$tpl);';
|
||||
}
|
||||
@ -332,10 +334,12 @@ class Compiler
|
||||
*/
|
||||
public static function switchOpen(Tokenizer $tokens, Scope $scope)
|
||||
{
|
||||
$scope["expr"] = $scope->tpl->parseExpr($tokens);
|
||||
$expr = $scope->tpl->parseExpr($tokens);
|
||||
$scope["case"] = array();
|
||||
$scope["last"] = array();
|
||||
$scope["default"] = '';
|
||||
$scope["var"] = $scope->tpl->tmpVar();
|
||||
$scope["expr"] = $scope["var"].' = strval('.$expr.')';
|
||||
// lazy init
|
||||
return '';
|
||||
}
|
||||
@ -409,13 +413,16 @@ class Compiler
|
||||
public static function switchClose(Tokenizer $tokens, Scope $scope)
|
||||
{
|
||||
self::_caseResort($scope);
|
||||
$expr = $scope["expr"];
|
||||
$code = "";
|
||||
$expr = $scope["var"];
|
||||
$code = $scope["expr"].";\n";
|
||||
$default = $scope["default"];
|
||||
foreach ($scope["case"] as $case => $content) {
|
||||
if(is_numeric($case)) {
|
||||
$case = "'$case'";
|
||||
}
|
||||
$code .= "if($expr == $case) {\n?>$content<?php\n} else";
|
||||
}
|
||||
$code .= " {\n?>$default<?php\n}";
|
||||
$code .= " {\n?>$default<?php\n}\nunset(".$scope["var"].")";
|
||||
return $code;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user