This commit is contained in:
Ivan Shalganov 2013-12-01 19:30:09 +04:00
parent 0b192c8399
commit 1ce0315282
4 changed files with 44 additions and 2 deletions

View File

@ -1,6 +1,11 @@
Changelog
=========
### 1.4.8 (2013-12-01)
- Fix #52
- Tests++
### 1.4.7 (2013-09-19)
- Bug fixes

View File

@ -725,7 +725,14 @@ class Template extends Render
if ($this->_options & Fenom::DENY_METHODS) {
throw new \LogicException("Forbidden to call methods");
}
$code .= $this->parseArgs($tokens);
do { // parse call-chunks: $var->func()->func()->prop->func()->...
if($tokens->is('(')) {
$code .= $this->parseArgs($tokens);
}
if($tokens->is(T_OBJECT_OPERATOR) && $tokens->isNext(T_STRING)) {
$code .= '->'.$tokens->next()->getAndNext();
}
} while($tokens->is('(', T_OBJECT_OPERATOR));
} elseif ($tokens->is(Tokenizer::MACRO_INCDEC)) {
$code .= $tokens->getAndNext();
} else {

View File

@ -274,3 +274,21 @@ class TestCase extends \PHPUnit_Framework_TestCase
);
}
}
class Helper {
public $word = 'helper';
public function __construct($word) {
$this->word = $word;
$this->self = $this;
}
public function chunk() {
return $this;
}
public function __toString() {
return $this->word;
}
}

View File

@ -34,7 +34,18 @@ class TemplateTest extends TestCase
$obj->name = "Object";
$obj->list = $a;
$obj->c = "c";
$b = array("b" => array("c" => "Username", "c_char" => "c", "mcp" => "Master", 'm{$c}p' => "Unknown", 'obj' => $obj), "c" => "c");
// $world = new
$b = array(
"b" => array(
"c" => "Username",
"c_char" => "c",
"mcp" => "Master",
'm{$c}p' => "Unknown",
'obj' => $obj
),
"c" => "c",
"world" => new Helper('world')
);
$c = array_replace_recursive($b, array("b" => array(3 => $b["b"], 4 => "Mister")));
return array(
array('hello, {$a}!', $a, 'hello, World!'),
@ -83,6 +94,7 @@ class TemplateTest extends TestCase
$b, 'hello, Username!'),
array('hello, {"World"}!', $a, 'hello, World!'),
array('hello, {"W{$a}d"}!', $a, 'hello, WWorldd!'),
array('hello, {$world->chunk(1)->self->chunk("new")}!', $b, 'hello, world!'),
);
}