Done #97 + tests

This commit is contained in:
bzick
2014-08-06 01:17:21 +04:00
parent 469833376d
commit 7d59b0e642
4 changed files with 21 additions and 8 deletions

View File

@@ -748,13 +748,17 @@ class Compiler
$before = "if(!isset($var)) {\n";
$after = "\n}";
}
if ($tokens->is('=')) { // inline tag {var ...}
if ($tokens->is(Tokenizer::MACRO_EQUALS, '[')) { // inline tag {var ...}
$equal = $tokens->getAndNext();
if($equal == '[') {
$tokens->need(']')->next()->need('=')->next();
$equal = '[]=';
}
$scope->close();
$tokens->next();
if ($tokens->is("[")) {
return $before.$var . '=' . $scope->tpl->parseArray($tokens) . ';'.$after;
return $before.$var . $equal . $scope->tpl->parseArray($tokens) . ';'.$after;
} else {
return $before.$var . '=' . $scope->tpl->parseExpr($tokens) . ';'.$after;
return $before.$var . $equal . $scope->tpl->parseExpr($tokens) . ';'.$after;
}
} else {
$scope["name"] = $var;

View File

@@ -693,11 +693,15 @@ class Template extends Render
$cond = false;
}
$op = $tokens->getAndNext();
} elseif ($tokens->is(Tokenizer::MACRO_EQUALS)) { // assignment operator: $a = 4, $a += 3, ...
} elseif ($tokens->is(Tokenizer::MACRO_EQUALS, '[')) { // assignment operator: $a = 4, $a += 3, ...
if (!$var) {
break;
}
$op = $tokens->getAndNext();
if($op == '[') {
$tokens->need(']')->next()->need('=')->next();
$op = '[]=';
}
} elseif ($tokens->is(T_STRING)) { // test or containment operator: $a in $b, $a is set, ...
if (!$exp) {
break;
@@ -866,6 +870,9 @@ class Template extends Render
}
$var .= $key;
} elseif ($t === "[") {
if($tokens->isNext(']')) {
break;
}
$tokens->next();
if ($tokens->is(Tokenizer::MACRO_STRING)) {
if ($tokens->isNext("(")) {

View File

@@ -241,7 +241,6 @@ class Tokenizer
\T_SR_EQUAL => 1,
\T_XOR_EQUAL => 1,
'=' => 1,
// \T_CONCAT_EQUAL => 1,
),
self::MACRO_SCALAR => array(
\T_LNUMBER => 1,