diff options
Diffstat (limited to 'Mustache/LambdaHelper.php')
-rw-r--r-- | Mustache/LambdaHelper.php | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/Mustache/LambdaHelper.php b/Mustache/LambdaHelper.php new file mode 100644 index 00000000..e93dbfa3 --- /dev/null +++ b/Mustache/LambdaHelper.php @@ -0,0 +1,76 @@ +<?php + +/* + * This file is part of Mustache.php. + * + * (c) 2010-2017 Justin Hileman + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/** + * Mustache Lambda Helper. + * + * Passed as the second argument to section lambdas (higher order sections), + * giving them access to a `render` method for rendering a string with the + * current context. + */ +class Mustache_LambdaHelper +{ + private $mustache; + private $context; + private $delims; + + /** + * Mustache Lambda Helper constructor. + * + * @param Mustache_Engine $mustache Mustache engine instance + * @param Mustache_Context $context Rendering context + * @param string $delims Optional custom delimiters, in the format `{{= <% %> =}}`. (default: null) + */ + public function __construct(Mustache_Engine $mustache, Mustache_Context $context, $delims = null) + { + $this->mustache = $mustache; + $this->context = $context; + $this->delims = $delims; + } + + /** + * Render a string as a Mustache template with the current rendering context. + * + * @param string $string + * + * @return string Rendered template + */ + public function render($string) + { + return $this->mustache + ->loadLambda((string) $string, $this->delims) + ->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. + * + * @param string $delims Custom delimiters, in the format `{{= <% %> =}}` + * + * @return Mustache_LambdaHelper + */ + public function withDelimiters($delims) + { + return new self($this->mustache, $this->context, $delims); + } +} |