mirror of
https://github.com/Combodo/iTop.git
synced 2026-03-01 23:24:12 +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)
51 lines
1.2 KiB
PHP
51 lines
1.2 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace PhpParser\NodeVisitor;
|
|
|
|
use PhpParser\Node;
|
|
use PhpParser\NodeTraverser;
|
|
use PhpParser\NodeVisitorAbstract;
|
|
|
|
/**
|
|
* This visitor can be used to find the first node satisfying some criterion determined by
|
|
* a filter callback.
|
|
*/
|
|
class FirstFindingVisitor extends NodeVisitorAbstract
|
|
{
|
|
/** @var callable Filter callback */
|
|
protected $filterCallback;
|
|
/** @var null|Node Found node */
|
|
protected $foundNode;
|
|
|
|
public function __construct(callable $filterCallback) {
|
|
$this->filterCallback = $filterCallback;
|
|
}
|
|
|
|
/**
|
|
* Get found node satisfying the filter callback.
|
|
*
|
|
* Returns null if no node satisfies the filter callback.
|
|
*
|
|
* @return null|Node Found node (or null if not found)
|
|
*/
|
|
public function getFoundNode() {
|
|
return $this->foundNode;
|
|
}
|
|
|
|
public function beforeTraverse(array $nodes) {
|
|
$this->foundNode = null;
|
|
|
|
return null;
|
|
}
|
|
|
|
public function enterNode(Node $node) {
|
|
$filterCallback = $this->filterCallback;
|
|
if ($filterCallback($node)) {
|
|
$this->foundNode = $node;
|
|
return NodeTraverser::STOP_TRAVERSAL;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|