mirror of
https://github.com/Mibew/handlebars.php.git
synced 2024-11-15 08:44:12 +03:00
phpcs approval
“oh the spacing!”
This commit is contained in:
parent
33c76738b4
commit
0070ad79c0
@ -41,20 +41,22 @@ namespace Handlebars;
|
||||
|
||||
class ChildContext extends Context
|
||||
{
|
||||
protected $parentContext = null;
|
||||
|
||||
/**
|
||||
* Sets a parent context in which
|
||||
* we will case for the ../ in get()
|
||||
*
|
||||
* @param Context
|
||||
* @return void
|
||||
*/
|
||||
public function setParent(Context $parent) {
|
||||
$this->parentContext = $parent;
|
||||
}
|
||||
|
||||
/**
|
||||
protected $parentContext = null;
|
||||
|
||||
/**
|
||||
* Sets a parent context in which
|
||||
* we will case for the ../ in get()
|
||||
*
|
||||
* @param Context $parent parent context
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setParent(Context $parent)
|
||||
{
|
||||
$this->parentContext = $parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a available from current context
|
||||
* Supported types :
|
||||
* variable , ../variable , variable.variable , variable.[variable] , .
|
||||
@ -69,17 +71,19 @@ class ChildContext extends Context
|
||||
*/
|
||||
public function get($variableName, $strict = false)
|
||||
{
|
||||
//if the variable name starts with a ../
|
||||
//and we have a parent
|
||||
if(strpos($variableName, '../') === 0 && $this->parentContext instanceof Context) {
|
||||
//just remove the first ../
|
||||
$variableName = substr($variableName, 3);
|
||||
|
||||
//and let the parent context handle the rest
|
||||
return $this->parentContext->get($variableName, $strict);
|
||||
}
|
||||
|
||||
//otherwise, it's business as usual
|
||||
return parent::get($variableName, $strict);
|
||||
//if the variable name starts with a ../
|
||||
//and we have a parent
|
||||
if (strpos($variableName, '../') === 0
|
||||
&& $this->parentContext instanceof Context
|
||||
) {
|
||||
//just remove the first ../
|
||||
$variableName = substr($variableName, 3);
|
||||
|
||||
//and let the parent context handle the rest
|
||||
return $this->parentContext->get($variableName, $strict);
|
||||
}
|
||||
|
||||
//otherwise, it's business as usual
|
||||
return parent::get($variableName, $strict);
|
||||
}
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ class Handlebars
|
||||
const VERSION = '1.0.0';
|
||||
|
||||
/**
|
||||
* factory method
|
||||
* Factory method
|
||||
*
|
||||
* @param array $options see __construct's options parameter
|
||||
*
|
||||
@ -55,41 +55,57 @@ class Handlebars
|
||||
}
|
||||
|
||||
/**
|
||||
* Current tokenizer instance
|
||||
*
|
||||
* @var Tokenizer
|
||||
*/
|
||||
private $_tokenizer;
|
||||
|
||||
/**
|
||||
* Current parser instance
|
||||
*
|
||||
* @var Parser
|
||||
*/
|
||||
private $_parser;
|
||||
|
||||
/**
|
||||
* Current helper list
|
||||
*
|
||||
* @var Helpers
|
||||
*/
|
||||
private $_helpers;
|
||||
|
||||
/**
|
||||
* Current loader instance
|
||||
*
|
||||
* @var Loader
|
||||
*/
|
||||
private $_loader;
|
||||
|
||||
/**
|
||||
* Current partial loader instance
|
||||
*
|
||||
* @var Loader
|
||||
*/
|
||||
private $_partialsLoader;
|
||||
|
||||
/**
|
||||
* Current cache instance
|
||||
*
|
||||
* @var Cache
|
||||
*/
|
||||
private $_cache;
|
||||
|
||||
/**
|
||||
* The escape method
|
||||
*
|
||||
* @var callable escape function to use
|
||||
*/
|
||||
private $_escape = 'htmlspecialchars';
|
||||
|
||||
/**
|
||||
* Parameters for the escpae method above
|
||||
*
|
||||
* @var array parametes to pass to escape function
|
||||
*/
|
||||
private $_escapeArgs = array(
|
||||
@ -165,8 +181,8 @@ class Handlebars
|
||||
* @param mixed $data data to use as context
|
||||
*
|
||||
* @return string Rendered template
|
||||
* @see Handlebars::loadTemplate
|
||||
* @see Template::render
|
||||
* @see Handlebars::loadTemplate
|
||||
* @see Template::render
|
||||
*/
|
||||
public function render($template, $data)
|
||||
{
|
||||
@ -235,8 +251,8 @@ class Handlebars
|
||||
{
|
||||
return $this->getHelpers()->has($name);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
/**
|
||||
* Add a new helper.
|
||||
*
|
||||
* @param string $name helper name
|
||||
@ -245,100 +261,99 @@ class Handlebars
|
||||
* @return void
|
||||
*/
|
||||
public function registerHelper($name, $helper)
|
||||
{
|
||||
$this->addHelper($name, function($template, $context, $arg) use ($helper)
|
||||
{
|
||||
$args = $template->parseArguments($arg);
|
||||
$named = $template->parseNamedArguments($arg);
|
||||
|
||||
foreach($args as $i => $arg) {
|
||||
//if it's literally string
|
||||
if($arg instanceof StringWrapper) {
|
||||
//we have no problems here
|
||||
$args[$i] = (string) $arg;
|
||||
continue;
|
||||
}
|
||||
|
||||
//not sure what to do if it's not a string or StringWrapper
|
||||
if(!is_string($arg)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//it's a variable and we need to figure out the value of it
|
||||
$args[$i] = $context->get($arg);
|
||||
}
|
||||
|
||||
//push the options
|
||||
$args[] = array(
|
||||
//special fields
|
||||
'data' => array(
|
||||
'index' => $context->get('@index'),
|
||||
'key' => $context->get('@key'),
|
||||
'first' => $context->get('@first'),
|
||||
'last' => $context->get('@last')),
|
||||
// Named arguments
|
||||
'hash' => $named,
|
||||
// A renderer for block helper
|
||||
'fn' => function($inContext = null) use($context, $template)
|
||||
{
|
||||
$defined = !!$inContext;
|
||||
|
||||
if(!$defined) {
|
||||
$inContext = $context;
|
||||
$inContext->push($inContext->last());
|
||||
} else if (!$inContext instanceof Context) {
|
||||
$inContext = new ChildContext($inContext);
|
||||
$inContext->setParent($context);
|
||||
}
|
||||
|
||||
$template->setStopToken('else');
|
||||
$buffer = $template->render($inContext);
|
||||
$template->setStopToken(false);
|
||||
//what if it's a loop ?
|
||||
$template->rewind();
|
||||
//What's the point of this again?
|
||||
//I mean in this context (literally)
|
||||
//$template->discard($inContext);
|
||||
|
||||
if($defined) {
|
||||
$inContext->pop();
|
||||
}
|
||||
|
||||
return $buffer;
|
||||
},
|
||||
|
||||
// A render for the else block
|
||||
'inverse' => function($inContext = null) use($context, $template)
|
||||
{
|
||||
$defined = !!$inContext;
|
||||
|
||||
if(!$defined) {
|
||||
$inContext = $context;
|
||||
$inContext->push($inContext->last());
|
||||
} else if (!$inContext instanceof Context) {
|
||||
$inContext = new ChildContext($inContext);
|
||||
$inContext->setParent($context);
|
||||
}
|
||||
|
||||
$template->setStopToken('else');
|
||||
$template->discard($inContext);
|
||||
$template->setStopToken(false);
|
||||
$buffer = $template->render($inContext);
|
||||
|
||||
if($defined) {
|
||||
$inContext->pop();
|
||||
}
|
||||
|
||||
return $buffer;
|
||||
},
|
||||
|
||||
// The current context.
|
||||
'context' => $context,
|
||||
// The current template
|
||||
'template' => $template);
|
||||
|
||||
return call_user_func_array($helper, $args);
|
||||
});
|
||||
{
|
||||
$callback = function ($template, $context, $arg) use ($helper) {
|
||||
$args = $template->parseArguments($arg);
|
||||
$named = $template->parseNamedArguments($arg);
|
||||
|
||||
foreach ($args as $i => $arg) {
|
||||
//if it's literally string
|
||||
if ($arg instanceof StringWrapper) {
|
||||
//we have no problems here
|
||||
$args[$i] = (string) $arg;
|
||||
continue;
|
||||
}
|
||||
|
||||
//not sure what to do if it's not a string or StringWrapper
|
||||
if (!is_string($arg)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//it's a variable and we need to figure out the value of it
|
||||
$args[$i] = $context->get($arg);
|
||||
}
|
||||
|
||||
//push the options
|
||||
$args[] = array(
|
||||
//special fields
|
||||
'data' => array(
|
||||
'index' => $context->get('@index'),
|
||||
'key' => $context->get('@key'),
|
||||
'first' => $context->get('@first'),
|
||||
'last' => $context->get('@last')),
|
||||
// Named arguments
|
||||
'hash' => $named,
|
||||
// A renderer for block helper
|
||||
'fn' => function ($inContext = null) use ($context, $template) {
|
||||
$defined = !!$inContext;
|
||||
|
||||
if (!$defined) {
|
||||
$inContext = $context;
|
||||
$inContext->push($inContext->last());
|
||||
} else if (!$inContext instanceof Context) {
|
||||
$inContext = new ChildContext($inContext);
|
||||
$inContext->setParent($context);
|
||||
}
|
||||
|
||||
$template->setStopToken('else');
|
||||
$buffer = $template->render($inContext);
|
||||
$template->setStopToken(false);
|
||||
//what if it's a loop ?
|
||||
$template->rewind();
|
||||
//What's the point of this again?
|
||||
//I mean in this context (literally)
|
||||
//$template->discard($inContext);
|
||||
|
||||
if ($defined) {
|
||||
$inContext->pop();
|
||||
}
|
||||
|
||||
return $buffer;
|
||||
},
|
||||
|
||||
// A render for the else block
|
||||
'inverse' => function ($inContext = null) use ($context, $template) {
|
||||
$defined = !!$inContext;
|
||||
|
||||
if (!$defined) {
|
||||
$inContext = $context;
|
||||
$inContext->push($inContext->last());
|
||||
} else if (!$inContext instanceof Context) {
|
||||
$inContext = new ChildContext($inContext);
|
||||
$inContext->setParent($context);
|
||||
}
|
||||
|
||||
$template->setStopToken('else');
|
||||
$template->discard($inContext);
|
||||
$template->setStopToken(false);
|
||||
$buffer = $template->render($inContext);
|
||||
|
||||
if ($defined) {
|
||||
$inContext->pop();
|
||||
}
|
||||
|
||||
return $buffer;
|
||||
},
|
||||
|
||||
// The current context.
|
||||
'context' => $context,
|
||||
// The current template
|
||||
'template' => $template);
|
||||
|
||||
return call_user_func_array($helper, $args);
|
||||
};
|
||||
|
||||
$this->addHelper($name, $callback);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -366,7 +381,7 @@ class Handlebars
|
||||
}
|
||||
|
||||
/**
|
||||
* get current loader
|
||||
* Get current loader
|
||||
*
|
||||
* @return Loader
|
||||
*/
|
||||
@ -392,7 +407,7 @@ class Handlebars
|
||||
}
|
||||
|
||||
/**
|
||||
* get current partials loader
|
||||
* Get current partials loader
|
||||
*
|
||||
* @return Loader
|
||||
*/
|
||||
@ -618,7 +633,7 @@ class Handlebars
|
||||
}
|
||||
|
||||
/**
|
||||
* try to tokenize source, or get them from cache if available
|
||||
* Try to tokenize source, or get them from cache if available
|
||||
*
|
||||
* @param string $source handlebars source code
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user