Mercurial > hg > cmmr2012-drupal-site
comparison vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c75dbcec494b |
---|---|
1 <?php declare(strict_types=1); | |
2 | |
3 namespace PhpParser\NodeVisitor; | |
4 | |
5 use PhpParser\Node; | |
6 use PhpParser\NodeVisitorAbstract; | |
7 | |
8 /** | |
9 * This visitor can be used to find and collect all nodes satisfying some criterion determined by | |
10 * a filter callback. | |
11 */ | |
12 class FindingVisitor extends NodeVisitorAbstract | |
13 { | |
14 /** @var callable Filter callback */ | |
15 protected $filterCallback; | |
16 /** @var Node[] Found nodes */ | |
17 protected $foundNodes; | |
18 | |
19 public function __construct(callable $filterCallback) { | |
20 $this->filterCallback = $filterCallback; | |
21 } | |
22 | |
23 /** | |
24 * Get found nodes satisfying the filter callback. | |
25 * | |
26 * Nodes are returned in pre-order. | |
27 * | |
28 * @return Node[] Found nodes | |
29 */ | |
30 public function getFoundNodes() : array { | |
31 return $this->foundNodes; | |
32 } | |
33 | |
34 public function beforeTraverse(array $nodes) { | |
35 $this->foundNodes = []; | |
36 | |
37 return null; | |
38 } | |
39 | |
40 public function enterNode(Node $node) { | |
41 $filterCallback = $this->filterCallback; | |
42 if ($filterCallback($node)) { | |
43 $this->foundNodes[] = $node; | |
44 } | |
45 | |
46 return null; | |
47 } | |
48 } |