protected static function token(&$token, &$context)
{
$context['currentToken'] =& $token;
if (static::rawblock($token, $context)) {
return Token::toString($token);
}
if (static::delimiter($token, $context)) {
return;
}
if (static::isDelimiter($context)) {
static::spacing($token, $context);
return;
}
if (static::comment($token, $context)) {
static::spacing($token, $context);
return;
}
list($raw, $vars) = Parser::parse($token, $context);
$partials = static::partialBlock($context, $vars);
$partials = static::inlinePartial($context, $vars) || $partials;
if ($partials) {
$context['stack'] = array_slice($context['stack'], 0, -4);
$context['currentToken'][Token::POS_LOTHER] = '';
$context['currentToken'][Token::POS_LSPACE] = '';
return;
}
// Handle spacing (standalone tags, partial indent)
static::spacing($token, $context, ($token[Token::POS_OP] === '' || $token[Token::POS_OP] === '&') && (!$context['flags']['else'] || !isset($vars[0][0]) || $vars[0][0] !== 'else') || $context['flags']['nostd'] > 0);
if (static::operator($token[Token::POS_OP], $context, $vars)) {
return isset($token[Token::POS_BACKFILL]) ? null : array($raw, $vars);
}
if (count($vars) == 0) {
return $context['error'][] = 'Wrong variable naming in ' . Token::toString($token);
}
if (!isset($vars[0])) {
return $context['error'][] = 'Do not support name=value in ' . Token::toString($token) . ', you should use it after a custom helper.';
}
$context['usedFeature'][$raw ? 'raw' : 'enc']++;
foreach ($vars as $var) {
if (!isset($var[0]) || $var[0] === 0) {
if ($context['level'] == 0) {
$context['usedFeature']['rootthis']++;
}
$context['usedFeature']['this']++;
}
}
if (!isset($vars[0][0])) {
return array($raw, $vars);
}
if ($vars[0][0] === 'else' && $context['flags']['else']) {
static::doElse($context, $vars);
return array($raw, $vars);
}
if (!static::helper($context, $vars[0][0])) {
static::lookup($context, $vars);
static::log($context, $vars);
}
return array($raw, $vars);
}