diff --git a/src/Mustache/Compiler.php b/src/Mustache/Compiler.php index 48d06ee..293f9e0 100644 --- a/src/Mustache/Compiler.php +++ b/src/Mustache/Compiler.php @@ -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; '; diff --git a/test/Mustache/Test/FiveThree/Functional/FiltersTest.php b/test/Mustache/Test/FiveThree/Functional/FiltersTest.php index ff2c7dd..1d1af85 100644 --- a/test/Mustache/Test/FiveThree/Functional/FiltersTest.php +++ b/test/Mustache/Test/FiveThree/Functional/FiltersTest.php @@ -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 :('; + }, + ))); + } }