LightnCandy\Validator::partialBlock PHP Method

partialBlock() protected static method

validate partial block token
protected static partialBlock ( array\arraystring | integer> &$context, arrayinteger | string | array> $vars ) : boolean | null
$context array\arraystring | integer>
$vars arrayinteger | string | array>
return boolean | null Return true when partial block ends
    protected static function partialBlock(&$context, $vars)
    {
        if (count($context['partialblock']) > 0) {
            $ended = false;
            $append = $context['currentToken'][Token::POS_LOTHER] . $context['currentToken'][Token::POS_LSPACE];
            array_walk($context['partialblock'], function (&$pb) use($context, $append) {
                $pb .= $append;
            });
            if ($context['currentToken'][Token::POS_OP] === '/') {
                if (static::blockEnd($context, $vars, '#>') !== null) {
                    $c = $context['stack'][count($context['stack']) - 4];
                    $found = Partial::resolve($context, $vars[0][0]) !== null;
                    $v = $found ? "@partial-block{$context['parsed'][0][$c][1][Parser::PARTIALBLOCK]}" : "{$vars[0][0]}";
                    if ($found) {
                        $context['partials'][$v] = $context['partialblock'][0];
                    }
                    $context['usedPartial'][$v] = $context['partialblock'][0];
                    Partial::compileDynamic($context, $v);
                    if ($found) {
                        Partial::read($context, $vars[0][0]);
                    }
                    array_shift($context['partialblock']);
                    $context['parsed'][0] = array_slice($context['parsed'][0], 0, $c + 1);
                    $ended = true;
                }
            }
            $append = Token::toString($context['currentToken']);
            array_walk($context['partialblock'], function (&$pb) use($context, $append) {
                $pb .= $append;
            });
            return $ended;
        }
    }