ソースを参照

Make LambdaHelper invokable.

Fixes #285
Justin Hileman 9 年 前
コミット
865de4114a

+ 12 - 0
src/Mustache/LambdaHelper.php

@@ -50,6 +50,18 @@ class Mustache_LambdaHelper
             ->renderInternal($this->context);
     }
 
+    /**
+     * Render a string as a Mustache template with the current rendering context.
+     *
+     * @param string $string
+     *
+     * @return string Rendered template
+     */
+    public function __invoke($string)
+    {
+        return $this->render($string);
+    }
+
     /**
      * Get a Lambda Helper with custom delimiters.
      *

+ 15 - 0
test/Mustache/Test/FiveThree/Functional/LambdaHelperTest.php

@@ -49,4 +49,19 @@ class Mustache_Test_FiveThree_Functional_LambdaHelperTest extends PHPUnit_Framew
 
         $this->assertEquals('hello world!', $tpl->render($data));
     }
+
+    public function testLambdaHelperIsInvokable()
+    {
+        $one = $this->mustache->loadTemplate('{{name}}');
+        $two = $this->mustache->loadTemplate('{{#lambda}}{{name}}{{/lambda}}');
+
+        $foo = new StdClass();
+        $foo->name = 'Mario';
+        $foo->lambda = function ($text, $render) {
+            return strtoupper($render($text));
+        };
+
+        $this->assertEquals('Mario', $one->render($foo));
+        $this->assertEquals('MARIO', $two->render($foo));
+    }
 }