Completed
Push — master ( 9d1ab7...13f027 )
by Luis
04:13 queued 02:19
created

DigraphBuilder   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 40
ccs 18
cts 18
cp 1
rs 10
c 0
b 0
f 0
wmc 9

5 Methods

Rating   Name   Duplication   Size   Complexity  
A codeFinder() 0 3 2
A tokenParser() 0 3 1
A codeParser() 0 3 1
A digraphProcessor() 0 7 2
A filters() 0 10 3
1
<?php
2
/**
3
 * PHP version 7.1
4
 *
5
 * This source file is subject to the license that is bundled with this package in the file LICENSE.
6
 */
7
8
namespace PhUml\Configuration;
9
10
use PhUml\Graphviz\Builders\ClassGraphBuilder;
11
use PhUml\Graphviz\Builders\EdgesBuilder;
12
use PhUml\Graphviz\Builders\NoAssociationsBuilder;
13
use PhUml\Graphviz\Builders\NodeLabelBuilder;
14
use PhUml\Parser\CodeFinder;
15
use PhUml\Parser\CodeParser;
16
use PhUml\Parser\NonRecursiveCodeFinder;
17
use PhUml\Parser\Raw\Builders\Filters\MembersFilter;
18
use PhUml\Parser\Raw\Builders\Filters\PrivateMembersFilter;
19
use PhUml\Parser\Raw\Builders\Filters\ProtectedMembersFilter;
20
use PhUml\Parser\Raw\PhpParser;
21
use PhUml\Parser\Raw\RawDefinitions;
22
use PhUml\Parser\Raw\Php5Parser;
23
use PhUml\Parser\StructureBuilder;
24
use PhUml\Processors\GraphvizProcessor;
25
use PhUml\Templates\TemplateEngine;
26
27
class DigraphBuilder
28
{
29
    /** @var DigraphConfiguration */
30
    protected $configuration;
31
32 24
    public function codeFinder(): CodeFinder
33
    {
34 24
        return $this->configuration->searchRecursively() ? new CodeFinder() : new NonRecursiveCodeFinder();
35
    }
36
37 21
    protected function digraphProcessor(): GraphvizProcessor
38
    {
39 21
        $associationsBuilder = $this->configuration->extractAssociations() ? new EdgesBuilder() : new NoAssociationsBuilder();
40 21
        $digraphProcessor = new GraphvizProcessor(
41 21
            new ClassGraphBuilder(new NodeLabelBuilder(new TemplateEngine()), $associationsBuilder)
42
        );
43 21
        return $digraphProcessor;
44
    }
45
46 21
    protected function codeParser(): CodeParser
47
    {
48 21
        return new CodeParser(new StructureBuilder(), $this->tokenParser());
49
    }
50
51 21
    protected function tokenParser(): PhpParser
52
    {
53 21
        return new Php5Parser(new RawDefinitions(), $this->filters());
54
    }
55
56
    /** @return MembersFilter[] */
57 21
    protected function filters(): array
58
    {
59 21
        $filters = [];
60 21
        if ($this->configuration->hidePrivate()) {
61 6
            $filters[] = new PrivateMembersFilter();
62
        }
63 21
        if ($this->configuration->hideProtected()) {
64 6
            $filters[] = new ProtectedMembersFilter();
65
        }
66 21
        return $filters;
67
    }
68
}
69