Factory::createRenderer()   C
last analyzed

Complexity

Conditions 7
Paths 12

Size

Total Lines 36
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 29
CRAP Score 7

Importance

Changes 0
Metric Value
dl 0
loc 36
ccs 29
cts 29
cp 1
rs 6.7272
c 0
b 0
f 0
cc 7
eloc 28
nc 12
nop 2
crap 7
1
<?php
2
3
namespace Kaloa\Renderer;
4
5
use Exception;
6
use Kaloa\Renderer\Config;
7
use Kaloa\Renderer\Xml\Rule\FootnotesRule;
8
use Kaloa\Renderer\Xml\Rule\ListingsRule;
9
use Kaloa\Renderer\Xml\Rule\PrefixRelativeUrisRule;
10
use Kaloa\Renderer\Xml\Rule\TocRule;
11
use Kaloa\Renderer\Xml\Rule\YouTubeRule;
12
13
/**
14
 *
15
 * @api
16
 */
17
final class Factory
18
{
19
    /**
20
     *
21
     * @param string $type
22
     * @param Config $config
23
     * @return RendererInterface
24
     * @throws Exception
25
     */
26 47
    public static function createRenderer($type, Config $config = null)
27
    {
28 47
        $renderer = null;
0 ignored issues
show
Unused Code introduced by
$renderer is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
29
30 47
        if (null === $config) {
31 28
            $config = new Config();
32 28
        }
33
34
        switch ($type) {
35 47
            case 'commonmark':
36 1
                $renderer = new CommonMarkRenderer();
37 1
                break;
38 47
            case 'inigo':
39 17
                $renderer = new InigoRenderer($config);
40 17
                break;
41 29
            case 'markdown':
42 26
                $renderer = new MarkdownRenderer();
43 26
                break;
44 3
            case 'xml':
45 1
                $renderer = new XmlRenderer();
46 1
                $renderer->registerRule(new TocRule());
47 1
                $renderer->registerRule(new YouTubeRule());
48 1
                $renderer->registerRule(new ListingsRule());
49 1
                $renderer->registerRule(new PrefixRelativeUrisRule());
50 1
                $renderer->registerRule(new FootnotesRule());
51 1
                break;
52 2
            case 'xmllegacy':
53 1
                $renderer = new XmlLegacyRenderer($config);
54 1
                break;
55 1
            default:
56 1
                throw new Exception('Unknown renderer "' . $type . '"');
57
                // no break
58 1
        }
59
60 46
        return $renderer;
61
    }
62
}
63