mirror of
https://github.com/Combodo/iTop.git
synced 2026-03-02 15:44:11 +01:00
We were on v3 that is no longer maintained and compatibility is annonced for PHP 7.2. v4 is active and supports PHP up to 8.0 No problem to update as this is only used in the config editor (\Combodo\iTop\Config\Validator\iTopConfigAstValidator)
42 lines
865 B
PHP
42 lines
865 B
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace PhpParser\NodeVisitor;
|
|
|
|
use function array_pop;
|
|
use function count;
|
|
use PhpParser\Node;
|
|
use PhpParser\NodeVisitorAbstract;
|
|
|
|
/**
|
|
* Visitor that connects a child node to its parent node.
|
|
*
|
|
* On the child node, the parent node can be accessed through
|
|
* <code>$node->getAttribute('parent')</code>.
|
|
*/
|
|
final class ParentConnectingVisitor extends NodeVisitorAbstract
|
|
{
|
|
/**
|
|
* @var Node[]
|
|
*/
|
|
private $stack = [];
|
|
|
|
public function beforeTraverse(array $nodes)
|
|
{
|
|
$this->stack = [];
|
|
}
|
|
|
|
public function enterNode(Node $node)
|
|
{
|
|
if (!empty($this->stack)) {
|
|
$node->setAttribute('parent', $this->stack[count($this->stack) - 1]);
|
|
}
|
|
|
|
$this->stack[] = $node;
|
|
}
|
|
|
|
public function leaveNode(Node $node)
|
|
{
|
|
array_pop($this->stack);
|
|
}
|
|
}
|