First value in the pipe should be interpolated first.
This commit is contained in:
@@ -264,12 +264,12 @@ class Mustache_Compiler
|
|||||||
}
|
}
|
||||||
|
|
||||||
const VARIABLE = '
|
const VARIABLE = '
|
||||||
$value = $context->%s(%s);%s
|
$value = $context->%s(%s);
|
||||||
if (!is_string($value) && is_callable($value)) {
|
if (!is_string($value) && is_callable($value)) {
|
||||||
$value = $this->mustache
|
$value = $this->mustache
|
||||||
->loadLambda((string) call_user_func($value))
|
->loadLambda((string) call_user_func($value))
|
||||||
->renderInternal($context, $indent);
|
->renderInternal($context, $indent);
|
||||||
}
|
}%s
|
||||||
$buffer .= %s%s;
|
$buffer .= %s%s;
|
||||||
';
|
';
|
||||||
|
|
||||||
|
|||||||
@@ -72,4 +72,14 @@ class Mustache_Test_FiveThree_Functional_FiltersTest extends PHPUnit_Framework_T
|
|||||||
'baz' => function($value) { return 'BAZ'; },
|
'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 :(';
|
||||||
|
},
|
||||||
|
)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user