Merge pull request #129 from bobthecow/feature/anchor-dot-context
Add "anchored dot notation"
This commit is contained in:
@@ -128,7 +128,12 @@ class Mustache_Context
|
|||||||
{
|
{
|
||||||
$chunks = explode('.', $id);
|
$chunks = explode('.', $id);
|
||||||
$first = array_shift($chunks);
|
$first = array_shift($chunks);
|
||||||
|
|
||||||
|
if ($first === '') {
|
||||||
|
$value = $this->last();
|
||||||
|
} else {
|
||||||
$value = $this->findVariableInStack($first, $this->stack);
|
$value = $this->findVariableInStack($first, $this->stack);
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($chunks as $chunk) {
|
foreach ($chunks as $chunk) {
|
||||||
if ($value === '') {
|
if ($value === '') {
|
||||||
|
|||||||
@@ -119,6 +119,49 @@ class Mustache_Test_ContextTest extends PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals('win', $context->find('baz'), 'ArrayAccess stands alone');
|
$this->assertEquals('win', $context->find('baz'), 'ArrayAccess stands alone');
|
||||||
$this->assertEquals('win', $context->find('qux'), 'ArrayAccess beats private property');
|
$this->assertEquals('win', $context->find('qux'), 'ArrayAccess beats private property');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAnchoredDotNotation()
|
||||||
|
{
|
||||||
|
$context = new Mustache_Context();
|
||||||
|
|
||||||
|
$a = array(
|
||||||
|
'name' => 'a',
|
||||||
|
'number' => 1,
|
||||||
|
);
|
||||||
|
|
||||||
|
$b = array(
|
||||||
|
'number' => 2,
|
||||||
|
'child' => array(
|
||||||
|
'name' => 'baby bee',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
$c = array(
|
||||||
|
'name' => 'cee',
|
||||||
|
);
|
||||||
|
|
||||||
|
$context->push($a);
|
||||||
|
$this->assertEquals('a', $context->find('name'));
|
||||||
|
$this->assertEquals('a', $context->findDot('.name'));
|
||||||
|
$this->assertEquals(1, $context->find('number'));
|
||||||
|
$this->assertEquals(1, $context->findDot('.number'));
|
||||||
|
|
||||||
|
$context->push($b);
|
||||||
|
$this->assertEquals('a', $context->find('name'));
|
||||||
|
$this->assertEquals(2, $context->find('number'));
|
||||||
|
$this->assertEquals('', $context->findDot('.name'));
|
||||||
|
$this->assertEquals(2, $context->findDot('.number'));
|
||||||
|
$this->assertEquals('baby bee', $context->findDot('child.name'));
|
||||||
|
$this->assertEquals('baby bee', $context->findDot('.child.name'));
|
||||||
|
|
||||||
|
$context->push($c);
|
||||||
|
$this->assertEquals('cee', $context->find('name'));
|
||||||
|
$this->assertEquals('cee', $context->findDot('.name'));
|
||||||
|
$this->assertEquals(2, $context->find('number'));
|
||||||
|
$this->assertEquals('', $context->findDot('.number'));
|
||||||
|
$this->assertEquals('baby bee', $context->findDot('child.name'));
|
||||||
|
$this->assertEquals('', $context->findDot('.child.name'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Mustache_Test_TestDummy
|
class Mustache_Test_TestDummy
|
||||||
|
|||||||
Reference in New Issue
Block a user