[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.226.186.153: ~ $
<?php

/*
 * This file is part of Twig.
 *
 * (c) Fabien Potencier
 * (c) Armin Ronacher
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Twig\TokenParser;

use Twig\Error\SyntaxError;
use Twig\Node\BlockNode;
use Twig\Node\BlockReferenceNode;
use Twig\Node\Node;
use Twig\Node\PrintNode;
use Twig\Token;

/**
 * Marks a section of a template as being reusable.
 *
 *  {% block head %}
 *    <link rel="stylesheet" href="style.css" />
 *    <title>{% block title %}{% endblock %} - My Webpage</title>
 *  {% endblock %}
 */
final class BlockTokenParser extends AbstractTokenParser
{
    public function parse(Token $token)
    {
        $lineno = $token->getLine();
        $stream = $this->parser->getStream();
        $name = $stream->expect(/* Token::NAME_TYPE */ 5)->getValue();
        if ($this->parser->hasBlock($name)) {
            throw new SyntaxError(sprintf("The block '%s' has already been defined line %d.", $name, $this->parser->getBlock($name)->getTemplateLine()), $stream->getCurrent()->getLine(), $stream->getSourceContext());
        }
        $this->parser->setBlock($name, $block = new BlockNode($name, new Node([]), $lineno));
        $this->parser->pushLocalScope();
        $this->parser->pushBlockStack($name);

        if ($stream->nextIf(/* Token::BLOCK_END_TYPE */ 3)) {
            $body = $this->parser->subparse([$this, 'decideBlockEnd'], true);
            if ($token = $stream->nextIf(/* Token::NAME_TYPE */ 5)) {
                $value = $token->getValue();

                if ($value != $name) {
                    throw new SyntaxError(sprintf('Expected endblock for block "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext());
                }
            }
        } else {
            $body = new Node([
                new PrintNode($this->parser->getExpressionParser()->parseExpression(), $lineno),
            ]);
        }
        $stream->expect(/* Token::BLOCK_END_TYPE */ 3);

        $block->setNode('body', $body);
        $this->parser->popBlockStack();
        $this->parser->popLocalScope();

        return new BlockReferenceNode($name, $lineno, $this->getTag());
    }

    public function decideBlockEnd(Token $token)
    {
        return $token->test('endblock');
    }

    public function getTag()
    {
        return 'block';
    }
}

class_alias('Twig\TokenParser\BlockTokenParser', 'Twig_TokenParser_Block');

Filemanager

Name Type Size Permission Actions
AbstractTokenParser.php File 641 B 0644
ApplyTokenParser.php File 1.42 KB 0644
AutoEscapeTokenParser.php File 1.58 KB 0644
BlockTokenParser.php File 2.46 KB 0644
DeprecatedTokenParser.php File 1013 B 0644
DoTokenParser.php File 801 B 0644
EmbedTokenParser.php File 2.24 KB 0644
ExtendsTokenParser.php File 1.37 KB 0644
FilterTokenParser.php File 1.86 KB 0644
FlushTokenParser.php File 735 B 0644
ForTokenParser.php File 4.95 KB 0644
FromTokenParser.php File 1.67 KB 0644
IfTokenParser.php File 2.47 KB 0644
ImportTokenParser.php File 1.18 KB 0644
IncludeTokenParser.php File 1.62 KB 0644
MacroTokenParser.php File 1.89 KB 0644
SandboxTokenParser.php File 1.79 KB 0644
SetTokenParser.php File 2.05 KB 0644
SpacelessTokenParser.php File 1.53 KB 0644
TokenParserInterface.php File 1.12 KB 0644
UseTokenParser.php File 1.97 KB 0644
WithTokenParser.php File 1.29 KB 0644