From 1cf44d5de9dfca171013e847103468570d4059c0 Mon Sep 17 00:00:00 2001 From: Justin Hileman Date: Fri, 27 Jul 2012 11:05:29 -0700 Subject: [PATCH] First value in the pipe should be interpolated first. --- src/Mustache/Compiler.php | 4 ++-- .../Mustache/Test/FiveThree/Functional/FiltersTest.php | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) 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 :('; + }, + ))); + } }