diff --git a/src/Mustache/Compiler.php b/src/Mustache/Compiler.php index 649c5ec..9161c64 100644 --- a/src/Mustache/Compiler.php +++ b/src/Mustache/Compiler.php @@ -401,9 +401,10 @@ class Mustache_Compiler return sprintf($this->prepare(self::INVERTED_SECTION, $level), $id, $method, $id, $filters, $this->walk($nodes, $level)); } + const PARTIAL_INDENT = ', $indent . %s'; const PARTIAL = ' if ($partial = $this->mustache->loadPartial(%s)) { - $buffer .= $partial->renderInternal($context, $indent . %s); + $buffer .= $partial->renderInternal($context%s); } '; @@ -418,10 +419,16 @@ class Mustache_Compiler */ private function partial($id, $indent, $level) { + if ($indent !== '') { + $indentParam = sprintf(self::PARTIAL_INDENT, var_export($indent, true)); + } else { + $indentParam = ''; + } + return sprintf( $this->prepare(self::PARTIAL, $level), var_export($id, true), - var_export($indent, true) + $indentParam ); } diff --git a/test/Mustache/Test/Functional/NestedPartialIndentTest.php b/test/Mustache/Test/Functional/NestedPartialIndentTest.php new file mode 100644 index 0000000..a484cf5 --- /dev/null +++ b/test/Mustache/Test/Functional/NestedPartialIndentTest.php @@ -0,0 +1,45 @@ + $partials + )); + $tpl = $m->loadTemplate($src); + $this->assertEquals($expected, $tpl->render()); + } + + public function partialsAndStuff() + { + $partials = array( + 'a' => ' {{> b }}', + 'b' => ' {{> d }}', + 'c' => ' {{> d }}{{> d }}', + 'd' => 'D!', + ); + + return array( + array(' {{> a }}', $partials, ' D!'), + array(' {{> b }}', $partials, ' D!'), + array(' {{> c }}', $partials, ' D!D!'), + ); + } +}