phpcs approval

“oh the spacing!”
This commit is contained in:
Christian Blanquera 2015-09-21 18:49:08 +08:00
parent 33c76738b4
commit 0070ad79c0
2 changed files with 147 additions and 128 deletions

View File

@ -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);
}
}

View File

@ -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
*