MainIndexBuilder   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 3
Bugs 2 Features 0
Metric Value
eloc 17
c 3
b 2
f 0
dl 0
loc 29
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A render() 0 19 3
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\Builder;
22
23
use phpDocumentor\Reflection\Php\Namespace_;
24
25
/**
26
 * This class builds a list of all available namespaces in the project.
27
 */
28
class MainIndexBuilder extends RstBuilder
29
{
30
    /** @var Namespace_[] */
31
    private $namespaces;
32
33
    public function __construct($namespaces)
34
    {
35
        $this->namespaces = $namespaces;
36
    }
37
38
    public function render()
39
    {
40
        $this->addLine('.. _namespaces:')->addLine();
41
        $this->addH1(RstBuilder::escape('Namespaces'));
42
43
        $this->addLine('.. toctree::');
44
        $this->indent();
45
        $this->addLine(':maxdepth: 1')->addLine();
46
        foreach ($this->namespaces as $namespace) {
47
            $namespaceString = (string) $namespace->getFqsen();
48
            $subPath = $namespaceString;
49
            $path = substr(str_replace('\\', '/', $subPath), 1).'/index';
50
            if ($namespaceString === '\\') {
51
                $path = 'index';
52
            }
53
            $this->addLine($namespace->getFqsen().' <'.$path.'>');
54
        }
55
        $this->addLine();
56
        $this->addLine();
57
    }
58
}
59