Passed
Push — 1.5 ( c7c5a4...fe8795 )
by Luis
06:06
created

ParserBuilder::excludeAttributes()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 6
ccs 4
cts 4
cp 1
crap 1
rs 9.4285
c 0
b 0
f 0
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\Parser\Code;
9
10
use PhUml\Parser\Code\Builders\ClassDefinitionBuilder;
11
use PhUml\Parser\Code\Builders\Filters\PrivateVisibilityFilter;
12
use PhUml\Parser\Code\Builders\Filters\ProtectedVisibilityFilter;
13
use PhUml\Parser\Code\Builders\Filters\VisibilityFilter;
14
use PhUml\Parser\Code\Builders\InterfaceDefinitionBuilder;
15
use PhUml\Parser\Code\Builders\Members\AttributesBuilder;
16
use PhUml\Parser\Code\Builders\Members\ConstantsBuilder;
17
use PhUml\Parser\Code\Builders\Members\MethodsBuilder;
18
use PhUml\Parser\Code\Builders\Members\NoAttributesBuilder;
19
use PhUml\Parser\Code\Builders\Members\NoConstantsBuilder;
20
use PhUml\Parser\Code\Builders\Members\NoMethodsBuilder;
21
22
class ParserBuilder
23
{
24
    /** @var VisibilityFilter[] */
25
    private $filters;
26
27
    /** @var MethodsBuilder */
28
    private $methodsBuilder;
29
30
    /** @var ConstantsBuilder */
31
    private $constantsBuilder;
32
33
    /** @var AttributesBuilder */
34
    private $attributesBuilder;
35
36 54
    public function __construct()
37
    {
38 54
        $this->filters = [];
39 54
    }
40
41 12
    public function excludePrivateMembers(): ParserBuilder
42
    {
43 12
        $this->filters[] = new PrivateVisibilityFilter();
44
45 12
        return $this;
46
    }
47
48 12
    public function excludeProtectedMembers(): ParserBuilder
49
    {
50 12
        $this->filters[] = new ProtectedVisibilityFilter();
51
52 12
        return $this;
53
    }
54
55 18
    public function excludeMethods(): ParserBuilder
56
    {
57 18
        $this->methodsBuilder = new NoMethodsBuilder();
58
59 18
        return $this;
60
    }
61
62 18
    public function excludeAttributes(): ParserBuilder
63
    {
64 18
        $this->constantsBuilder = new NoConstantsBuilder();
65 18
        $this->attributesBuilder = new NoAttributesBuilder();
66
67 18
        return $this;
68
    }
69
70 51
    public function build(): PhpParser
71
    {
72 51
        $constantsBuilder = $this->constantsBuilder ?? new ConstantsBuilder();
73 51
        $methodsBuilder = $this->methodsBuilder ?? new MethodsBuilder($this->filters);
74 51
        $attributesBuilder = $this->attributesBuilder ?? new AttributesBuilder($this->filters);
75
76 51
        return new Php5Parser(
77 51
            new ClassDefinitionBuilder($constantsBuilder, $attributesBuilder, $methodsBuilder),
78 51
            new InterfaceDefinitionBuilder($constantsBuilder, $methodsBuilder)
79
        );
80
    }
81
}
82