First value in the pipe should be interpolated first.

This commit is contained in:
Justin Hileman
2012-10-01 14:51:15 -07:00
parent a64a6f82ee
commit 1cf44d5de9
2 changed files with 12 additions and 2 deletions
+2 -2
View File
@@ -264,12 +264,12 @@ class Mustache_Compiler
}
const VARIABLE = '
$value = $context->%s(%s);%s
$value = $context->%s(%s);
if (!is_string($value) && is_callable($value)) {
$value = $this->mustache
->loadLambda((string) call_user_func($value))
->renderInternal($context, $indent);
}
}%s
$buffer .= %s%s;
';
@@ -72,4 +72,14 @@ class Mustache_Test_FiveThree_Functional_FiltersTest extends PHPUnit_Framework_T
'baz' => function($value) { return 'BAZ'; },
)));
}
public function testInterpolateFirst() {
$tpl = $this->mustache->loadTemplate('{{% FILTERS }}{{ foo | bar }}');
$this->assertEquals('win!', $tpl->render(array(
'foo' => 'FOO',
'bar' => function($value) {
return ($value === 'FOO') ? 'win!' : 'fail :(';
},
)));
}
}