[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.219.205.55: ~ $
<?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\Node;

use Twig\Compiler;
use Twig\Source;

/**
 * Represents a node in the AST.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
class Node implements \Countable, \IteratorAggregate
{
    protected $nodes;
    protected $attributes;
    protected $lineno;
    protected $tag;

    private $name;
    private $sourceContext;

    /**
     * @param array  $nodes      An array of named nodes
     * @param array  $attributes An array of attributes (should not be nodes)
     * @param int    $lineno     The line number
     * @param string $tag        The tag name associated with the Node
     */
    public function __construct(array $nodes = [], array $attributes = [], int $lineno = 0, string $tag = null)
    {
        foreach ($nodes as $name => $node) {
            if (!$node instanceof self) {
                throw new \InvalidArgumentException(sprintf('Using "%s" for the value of node "%s" of "%s" is not supported. You must pass a \Twig\Node\Node instance.', \is_object($node) ? \get_class($node) : (null === $node ? 'null' : \gettype($node)), $name, static::class));
            }
        }
        $this->nodes = $nodes;
        $this->attributes = $attributes;
        $this->lineno = $lineno;
        $this->tag = $tag;
    }

    public function __toString()
    {
        $attributes = [];
        foreach ($this->attributes as $name => $value) {
            $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true)));
        }

        $repr = [static::class.'('.implode(', ', $attributes)];

        if (\count($this->nodes)) {
            foreach ($this->nodes as $name => $node) {
                $len = \strlen($name) + 4;
                $noderepr = [];
                foreach (explode("\n", (string) $node) as $line) {
                    $noderepr[] = str_repeat(' ', $len).$line;
                }

                $repr[] = sprintf('  %s: %s', $name, ltrim(implode("\n", $noderepr)));
            }

            $repr[] = ')';
        } else {
            $repr[0] .= ')';
        }

        return implode("\n", $repr);
    }

    public function compile(Compiler $compiler)
    {
        foreach ($this->nodes as $node) {
            $node->compile($compiler);
        }
    }

    public function getTemplateLine()
    {
        return $this->lineno;
    }

    public function getNodeTag()
    {
        return $this->tag;
    }

    /**
     * @return bool
     */
    public function hasAttribute($name)
    {
        return \array_key_exists($name, $this->attributes);
    }

    /**
     * @return mixed
     */
    public function getAttribute($name)
    {
        if (!\array_key_exists($name, $this->attributes)) {
            throw new \LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, static::class));
        }

        return $this->attributes[$name];
    }

    /**
     * @param string $name
     * @param mixed  $value
     */
    public function setAttribute($name, $value)
    {
        $this->attributes[$name] = $value;
    }

    public function removeAttribute($name)
    {
        unset($this->attributes[$name]);
    }

    /**
     * @return bool
     */
    public function hasNode($name)
    {
        return isset($this->nodes[$name]);
    }

    /**
     * @return Node
     */
    public function getNode($name)
    {
        if (!isset($this->nodes[$name])) {
            throw new \LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, static::class));
        }

        return $this->nodes[$name];
    }

    public function setNode($name, self $node)
    {
        $this->nodes[$name] = $node;
    }

    public function removeNode($name)
    {
        unset($this->nodes[$name]);
    }

    /**
     * @return int
     */
    #[\ReturnTypeWillChange]
    public function count()
    {
        return \count($this->nodes);
    }

    /**
     * @return \Traversable
     */
    #[\ReturnTypeWillChange]
    public function getIterator()
    {
        return new \ArrayIterator($this->nodes);
    }

    /**
     * @deprecated since 2.8 (to be removed in 3.0)
     */
    public function setTemplateName($name/*, $triggerDeprecation = true */)
    {
        $triggerDeprecation = 2 > \func_num_args() || \func_get_arg(1);
        if ($triggerDeprecation) {
            @trigger_error('The '.__METHOD__.' method is deprecated since version 2.8 and will be removed in 3.0. Use setSourceContext() instead.', \E_USER_DEPRECATED);
        }

        $this->name = $name;
        foreach ($this->nodes as $node) {
            $node->setTemplateName($name, $triggerDeprecation);
        }
    }

    public function getTemplateName()
    {
        return $this->sourceContext ? $this->sourceContext->getName() : null;
    }

    public function setSourceContext(Source $source)
    {
        $this->sourceContext = $source;
        foreach ($this->nodes as $node) {
            $node->setSourceContext($source);
        }

        $this->setTemplateName($source->getName(), false);
    }

    public function getSourceContext()
    {
        return $this->sourceContext;
    }
}

class_alias('Twig\Node\Node', 'Twig_Node');

// Ensure that the aliased name is loaded to keep BC for classes implementing the typehint with the old aliased name.
class_exists('Twig\Compiler');

Filemanager

Name Type Size Permission Actions
Expression Folder 0755
AutoEscapeNode.php File 915 B 0644
BlockNode.php File 1.06 KB 0644
BlockReferenceNode.php File 899 B 0644
BodyNode.php File 397 B 0644
CheckSecurityCallNode.php File 590 B 0644
CheckSecurityNode.php File 3.1 KB 0644
CheckToStringNode.php File 1.22 KB 0644
DeprecatedNode.php File 1.41 KB 0644
DoNode.php File 845 B 0644
EmbedNode.php File 1.43 KB 0644
FlushNode.php File 700 B 0644
ForLoopNode.php File 1.56 KB 0644
ForNode.php File 4.21 KB 0644
IfNode.php File 1.8 KB 0644
ImportNode.php File 1.74 KB 0644
IncludeNode.php File 3.12 KB 0644
MacroNode.php File 3.21 KB 0644
ModuleNode.php File 14.78 KB 0644
Node.php File 5.43 KB 0644
NodeCaptureInterface.php File 461 B 0644
NodeOutputInterface.php File 438 B 0644
PrintNode.php File 936 B 0644
SandboxNode.php File 1.32 KB 0644
SandboxedPrintNode.php File 1.45 KB 0644
SetNode.php File 3.34 KB 0644
SetTempNode.php File 932 B 0644
SpacelessNode.php File 1.18 KB 0644
TextNode.php File 829 B 0644
WithNode.php File 2.15 KB 0644