NodeTraverserFactory::createTraverser()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 24
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 21
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 24
ccs 21
cts 21
cp 1
rs 9.7666
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Jerowork\ClassDependenciesParser\PhpParser;
6
7
use Jerowork\ClassDependenciesParser\ClassDependencies;
8
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Decliner\ImportedFqnDecliner;
9
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Decliner\NamespaceDecliner;
10
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Decliner\PhpNativeAccessorDecliner;
11
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Processor\FullyQualifiedNameProcessor;
12
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Processor\InlineFqnIsImportedAsAliasProcessor;
13
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Processor\InlineFqnIsImportedProcessor;
14
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Processor\InlineFqnWithinSameNamespaceProcessor;
15
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\InlineFqnParser\Processor\RootLevelFunctionProcessor;
16
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\ParseImportedFqnNodeVisitor;
17
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\ParseInlineFqnNodeVisitor;
18
use Jerowork\ClassDependenciesParser\PhpParser\NodeVisitor\ParseClassFqnNodeVisitor;
19
use PhpParser\NodeTraverser;
20
use PhpParser\NodeTraverserInterface;
21
use PhpParser\NodeVisitor\ParentConnectingVisitor;
22
23
final class NodeTraverserFactory
24
{
25 4
    public function createTraverser(ClassDependencies $classDependencies): NodeTraverserInterface
26
    {
27 4
        $traverser = new NodeTraverser();
28
29 4
        $traverser->addVisitor(new ParentConnectingVisitor());
30 4
        $traverser->addVisitor(new ParseClassFqnNodeVisitor($classDependencies));
31 4
        $traverser->addVisitor(new ParseImportedFqnNodeVisitor($classDependencies));
32 4
        $traverser->addVisitor(new ParseInlineFqnNodeVisitor(
33 4
            $classDependencies,
34 4
            [
35 4
                new NamespaceDecliner(),
36 4
                new ImportedFqnDecliner(),
37 4
                new PhpNativeAccessorDecliner(),
38 4
            ],
39 4
            [
40 4
                new FullyQualifiedNameProcessor(),
41 4
                new RootLevelFunctionProcessor(),
42 4
                new InlineFqnIsImportedProcessor(),
43 4
                new InlineFqnIsImportedAsAliasProcessor(),
44 4
                new InlineFqnWithinSameNamespaceProcessor(),
45 4
            ],
46 4
        ));
47
48 4
        return $traverser;
49
    }
50
}
51