Pass an instance of \Handlebars\Arguments to a helper

This commit is contained in:
Dmitriy Simushev 2014-09-20 08:01:20 +00:00
parent 592a01c4b9
commit 19c78888ce
7 changed files with 35 additions and 34 deletions

View File

@ -31,10 +31,10 @@ interface Helper
/**
* Execute the helper
*
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param array $args The arguments passed the the helper
* @param string $source The source
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param \Handlebars\Arguments $args The arguments passed the the helper
* @param string $source The source
*
* @return mixed
*/

View File

@ -41,10 +41,10 @@ class BindAttrHelper implements Helper
/**
* Execute the helper
*
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param array $args The arguments passed the the helper
* @param string $source The source
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param \Handlebars\Arguments $args The arguments passed the the helper
* @param string $source The source
*
* @return mixed
*/

View File

@ -43,16 +43,17 @@ class EachHelper implements Helper
/**
* Execute the helper
*
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param array $args The arguments passed the the helper
* @param string $source The source
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param \Handlebars\Arguments $args The arguments passed the the helper
* @param string $source The source
*
* @return mixed
*/
public function execute(Template $template, Context $context, $args, $source)
{
$tmp = $context->get($args);
$positionalArgs = $args->getPositionalArguments();
$tmp = $context->get($positionalArgs[0]);
$buffer = '';
if (!$tmp) {

View File

@ -41,20 +41,17 @@ class IfHelper implements Helper
/**
* Execute the helper
*
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param array $args The arguments passed the the helper
* @param string $source The source
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param \Handlebars\Arguments $args The arguments passed the the helper
* @param string $source The source
*
* @return mixed
*/
public function execute(Template $template, Context $context, $args, $source)
{
if (is_numeric($args)) {
$tmp = $args;
} else {
$tmp = $context->get($args);
}
$postionalArgs = $args->getPositionalArguments();
$tmp = $context->get($postionalArgs[0]);
$context->push($context->last());
if ($tmp) {

View File

@ -41,16 +41,17 @@ class UnlessHelper implements Helper
/**
* Execute the helper
*
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param array $args The arguments passed the the helper
* @param string $source The source
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param \Handlebars\Arguments $args The arguments passed the the helper
* @param string $source The source
*
* @return mixed
*/
public function execute(Template $template, Context $context, $args, $source)
{
$tmp = $context->get($args);
$positionalArgs = $args->getPositionalArguments();
$tmp = $context->get($positionalArgs[0]);
$context->push($context->last());

View File

@ -41,16 +41,17 @@ class WithHelper implements Helper
/**
* Execute the helper
*
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param array $args The arguments passed the the helper
* @param string $source The source
* @param \Handlebars\Template $template The template instance
* @param \Handlebars\Context $context The current context
* @param \Handlebars\Arguments $args The arguments passed the the helper
* @param string $source The source
*
* @return mixed
*/
public function execute(Template $template, Context $context, $args, $source)
{
$context->with($args);
$positionalArgs = $args->getPositionalArguments();
$context->with($positionalArgs[0]);
$buffer = $template->render($context);
$context->pop();

View File

@ -124,13 +124,14 @@ class Helpers
throw new \InvalidArgumentException('Unknown helper: ' . $name);
}
$parsedArgs = new Arguments($args);
if ($this->helpers[$name] instanceof Helper) {
return $this->helpers[$name]->execute(
$template, $context, $args, $source
$template, $context, $parsedArgs, $source
);
}
return call_user_func($this->helpers[$name], $template, $context, $args, $source);
return call_user_func($this->helpers[$name], $template, $context, $parsedArgs, $source);
}
/**