Passed
Push — 1.x ( a9995e...5c2b79 )
by Aleksei
12:31
created

ValueRenderer   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Test Coverage

Coverage 85.71%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 12
eloc 18
c 1
b 0
f 0
dl 0
loc 24
ccs 12
cts 14
cp 0.8571
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
C render() 0 19 12
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cycle\Schema\Renderer\PhpFileRenderer\Exporter\Rendering;
6
7
use Cycle\Schema\Renderer\PhpFileRenderer\Exporter\ExporterItem;
8
9
final class ValueRenderer
10
{
11
    /**
12
     * @param mixed $value
13
     */
14 12
    public static function render($value, bool $wrapValue = true, int $indentLevel = 0): string
15
    {
16 12
        switch (true) {
17
            case $value === null:
18
                return 'null';
19 12
            case is_bool($value):
20 6
                return $value ? 'true' : 'false';
21 12
            case is_array($value):
22 12
                return ArrayRenderer::render($value, $indentLevel);
23 12
            case $value instanceof ExporterItem:
24 12
                return $value->toString();
25 12
            case !$wrapValue || is_int($value):
26 6
                return (string)$value;
27 12
            case \is_string($value) && \strpos($value, '\\') !== false && \class_exists($value):
28 12
                return "$value::class";
29
            case is_string($value):
30
                return "'" . addslashes($value) . "'";
31
            default:
32
                return "unserialize('" . addslashes(serialize($value)) . "')";
33
        }
34
    }
35
}
36