LightnCandy\Validator::token PHP Method

token() protected static method

Collect handlebars usage information, detect template error.
protected static token ( string[] &$token, array\arraystring | integer> &$context )
$token string[] detected handlebars {{ }} token
$context array\arraystring | integer>
    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);
    }