From a64a6f82eeec8650f5a536c108b682b7e6a81be2 Mon Sep 17 00:00:00 2001 From: Justin Hileman Date: Fri, 27 Jul 2012 10:56:56 -0700 Subject: [PATCH] Handle broken pipes --- src/Mustache/Compiler.php | 6 +++-- .../Test/FiveThree/Functional/FiltersTest.php | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/Mustache/Compiler.php b/src/Mustache/Compiler.php index 7bc10b1..48d06ee 100644 --- a/src/Mustache/Compiler.php +++ b/src/Mustache/Compiler.php @@ -298,8 +298,10 @@ class Mustache_Compiler } const FILTER = ' - $filter = $context->%s(%s); - $value = (is_string($filter) || !is_callable($filter)) ? "" : call_user_func($filter, $value); + if (!empty($value)) { + $filter = $context->%s(%s); + $value = (is_string($filter) || !is_callable($filter)) ? "" : call_user_func($filter, $value); + } '; /** diff --git a/test/Mustache/Test/FiveThree/Functional/FiltersTest.php b/test/Mustache/Test/FiveThree/Functional/FiltersTest.php index bc5b4de..ff2c7dd 100644 --- a/test/Mustache/Test/FiveThree/Functional/FiltersTest.php +++ b/test/Mustache/Test/FiveThree/Functional/FiltersTest.php @@ -50,4 +50,26 @@ class Mustache_Test_FiveThree_Functional_FiltersTest extends PHPUnit_Framework_T $this->assertEquals('[[2000-01-01 12:01:00]]', $tpl->render($foo)); } + + public function testBrokenPipe() { + $tpl = $this->mustache->loadTemplate('{{% FILTERS }}{{ foo | bar | baz }}'); + $this->assertEquals('', $tpl->render(array( + 'foo' => 'FOO', + ))); + + $this->assertEquals('', $tpl->render(array( + 'foo' => 'FOO', + 'bar' => function($value) { return 'BAR'; }, + ))); + + $this->assertEquals('', $tpl->render(array( + 'foo' => 'FOO', + 'baz' => function($value) { return 'BAZ'; }, + ))); + + $this->assertEquals('', $tpl->render(array( + 'bar' => function($value) { return 'BAR'; }, + 'baz' => function($value) { return 'BAZ'; }, + ))); + } }