MainIndexBuilder   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 27
rs 10
c 0
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A render() 0 18 3
A __construct() 0 2 1
1
<?php
2
/**
3
 * @copyright Copyright (c) 2017 Julius Härtl <[email protected]>
4
 *
5
 * @author Julius Härtl <[email protected]>
6
 *
7
 * @license GNU AGPL version 3 or any later version
8
 *
9
 *  This program is free software: you can redistribute it and/or modify
10
 *  it under the terms of the GNU Affero General Public License as
11
 *  published by the Free Software Foundation, either version 3 of the
12
 *  License, or (at your option) any later version.
13
 *
14
 *  This program is distributed in the hope that it will be useful,
15
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 *  GNU Affero General Public License for more details.
18
 *
19
 *  You should have received a copy of the GNU Affero General Public License
20
 *  along with this program. If not, see <http://www.gnu.org/licenses/>.
21
 *
22
 */
23
24
namespace JuliusHaertl\PHPDocToRst\Builder;
25
26
27
use phpDocumentor\Reflection\Php\Class_;
28
use phpDocumentor\Reflection\Php\Namespace_;
29
30
/**
31
 * This class builds a list of all available namespaces in the project.
32
 *
33
 * @package JuliusHaertl\PHPDocToRst\Builder
34
 */
35
class MainIndexBuilder extends RstBuilder {
36
37
    /** @var Namespace_[] */
38
    private $namespaces;
39
40
    public function __construct($namespaces) {
41
        $this->namespaces = $namespaces;
42
    }
43
44
    public function render() {
45
        $this->addLine('.. _namespaces:')->addLine();
46
        $this->addH1(RstBuilder::escape('Namespaces'));
47
48
        $this->addLine('.. toctree::');
49
        $this->indent();
50
        $this->addLine(':maxdepth: 1')->addLine();
51
        foreach ($this->namespaces as $namespace) {
52
            $namespaceString = (string)$namespace->getFqsen();
53
            $subPath = $namespaceString;
54
            $path = substr(str_replace("\\", "/", $subPath), 1) . '/index';
55
            if ($namespaceString === '\\') {
56
                $path = 'index';
57
            }
58
            $this->addLine($namespace->getFqsen() . ' <' . $path . '>');
59
        }
60
        $this->addLine();
61
        $this->addLine();
62
63
    }
64
}