AddFullElementNameExtension::render()   A
last analyzed

Complexity

Conditions 6
Paths 7

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 2 Features 0
Metric Value
cc 6
eloc 8
c 3
b 2
f 0
nc 7
nop 3
dl 0
loc 11
rs 9.2222
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 JuliusHaertl\PHPDocToRst\Builder\FileBuilder;
24
use JuliusHaertl\PHPDocToRst\Builder\PhpDomainBuilder;
25
use JuliusHaertl\PHPDocToRst\Builder\RstBuilder;
26
use phpDocumentor\Reflection\Php\Class_;
27
28
/**
29
 * Add the fully qualified element name including the namespace to each page.
30
 */
31
class AddFullElementNameExtension extends Extension
32
{
33
    /**
34
     * @param string      $type
35
     * @param FileBuilder $builder
36
     */
37
    public function render($type, &$builder, $element)
38
    {
39
        if (!$builder instanceof FileBuilder) {
0 ignored issues
show
introduced by
$builder is always a sub-type of JuliusHaertl\PHPDocToRst\Builder\FileBuilder.
Loading history...
40
            return;
41
        }
42
        if ($type === PhpDomainBuilder::SECTION_BEFORE_DESCRIPTION) {
43
            if ($element instanceof Class_) {
44
                $modifiers = $element->isAbstract() ? 'abstract' : '';
45
                $modifiers = $element->isFinal() ? ' final' : $modifiers;
46
                $builder->addLine(':php:`'.$modifiers.' class '.RstBuilder::escape($builder->getElement()->getName()).' {}`');
47
                $builder->addLine();
48
            }
49
        }
50
    }
51
}
52