NoPrivateExtension   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Importance

Changes 3
Bugs 2 Features 0
Metric Value
eloc 10
c 3
b 2
f 0
dl 0
loc 20
rs 10
wmc 7

1 Method

Rating   Name   Duplication   Size   Complexity  
B shouldRenderElement() 0 18 7
1
<?php
2
/**
3
 * @copyright Copyright (c) 2017 Julius Härtl <[email protected]>
4
 * @author    Julius Härtl <[email protected]>
5
 * @license   GNU AGPL version 3 or any later version
6
 *
7
 *  This program is free software: you can redistribute it and/or modify
8
 *  it under the terms of the GNU Affero General Public License as
9
 *  published by the Free Software Foundation, either version 3 of the
10
 *  License, or (at your option) any later version.
11
 *
12
 *  This program is distributed in the hope that it will be useful,
13
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 *  GNU Affero General Public License for more details.
16
 *
17
 *  You should have received a copy of the GNU Affero General Public License
18
 *  along with this program. If not, see <http://www.gnu.org/licenses/>.
19
 */
20
21
namespace JuliusHaertl\PHPDocToRst\Extension;
22
23
use phpDocumentor\Reflection\Element;
24
use phpDocumentor\Reflection\Php\Class_;
25
use phpDocumentor\Reflection\Php\Method;
26
use phpDocumentor\Reflection\Php\Property;
27
28
/**
29
 * Do not render classes marked with phpDoc internal tag
30
 * Do only render public methods/properties.
31
 */
32
class NoPrivateExtension extends Extension
33
{
34
    public function shouldRenderElement(Element $element)
35
    {
36
        if ($element instanceof Class_) {
37
            /** @var Class_ $class */
38
            $class = $element;
39
            if ($class->getDocBlock() !== null && $class->getDocBlock()->hasTag('ignore')) {
40
                return false;
41
            }
42
        }
43
        if ($element instanceof Method || $element instanceof Property) {
44
            /** @var Method|Property $class */
45
            $class = $element;
46
            if ((string) $class->getVisibility() === 'private') {
47
                return false;
48
            }
49
        }
50
51
        return true;
52
    }
53
}
54