Passed
Pull Request — master (#97)
by Maximilian
04:17
created

Path::jsonSerialize()   F

Complexity

Conditions 16
Paths 16384

Size

Total Lines 61
Code Lines 30

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 31
CRAP Score 16

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 16
eloc 30
nc 16384
nop 0
dl 0
loc 61
ccs 31
cts 31
cp 1
crap 16
rs 1.4
c 1
b 0
f 1

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace MaxBeckers\AmazonAlexa\Response\Directives\APL\AVGItem;
6
7
use MaxBeckers\AmazonAlexa\Response\Directives\APL\Document\AVGItemType;
8
use MaxBeckers\AmazonAlexa\Response\Directives\APL\Document\StrokeLineCap;
9
use MaxBeckers\AmazonAlexa\Response\Directives\APL\Document\StrokeLineJoin;
10
11
class Path extends AVGItem implements \JsonSerializable
12
{
13
    public const TYPE = AVGItemType::PATH;
14
15
    /**
16
     * @param string|null $fill Fill color
17
     * @param int|null $fillOpacity Fill opacity
18
     * @param string|null $fillTransform Fill transform
19
     * @param string|null $pathData Path data string
20
     * @param int|null $pathLength Path length
21
     * @param string|null $stroke Stroke color
22
     * @param int[]|null $strokeDashArray Array of dash lengths
23
     * @param int|null $strokeDashOffset Dash offset
24
     * @param StrokeLineCap|null $strokeLineCap Line cap style
25
     * @param StrokeLineJoin|null $strokeLineJoin Line join style
26
     * @param int|null $strokeMiterLimit Miter limit
27
     * @param int|null $strokeOpacity Stroke opacity
28
     * @param string|null $strokeTransform Stroke transform
29
     * @param int|null $strokeWidth Stroke width
30
     */
31 10
    public function __construct(
32
        public ?string $fill = null,
33
        public ?int $fillOpacity = null,
34
        public ?string $fillTransform = null,
35
        public ?string $pathData = null,
36
        public ?int $pathLength = null,
37
        public ?string $stroke = null,
38
        public ?array $strokeDashArray = null,
39
        public ?int $strokeDashOffset = null,
40
        public ?StrokeLineCap $strokeLineCap = null,
41
        public ?StrokeLineJoin $strokeLineJoin = null,
42
        public ?int $strokeMiterLimit = null,
43
        public ?int $strokeOpacity = null,
44
        public ?string $strokeTransform = null,
45
        public ?int $strokeWidth = null,
46
    ) {
47 10
        parent::__construct(self::TYPE);
48
    }
49
50 6
    public function jsonSerialize(): array
51
    {
52 6
        $data = parent::jsonSerialize();
53
54 6
        if ($this->fill !== null) {
55 1
            $data['fill'] = $this->fill;
56
        }
57
58 6
        if ($this->fillOpacity !== null) {
59 2
            $data['fillOpacity'] = $this->fillOpacity;
60
        }
61
62 6
        if ($this->fillTransform !== null) {
63 1
            $data['fillTransform'] = $this->fillTransform;
64
        }
65
66 6
        if ($this->pathData !== null) {
67 1
            $data['pathData'] = $this->pathData;
68
        }
69
70 6
        if ($this->pathLength !== null) {
71 2
            $data['pathLength'] = $this->pathLength;
72
        }
73
74 6
        if ($this->stroke !== null) {
75 1
            $data['stroke'] = $this->stroke;
76
        }
77
78 6
        if ($this->strokeDashArray !== null && !empty($this->strokeDashArray)) {
79 1
            $data['strokeDashArray'] = $this->strokeDashArray;
80
        }
81
82 6
        if ($this->strokeDashOffset !== null) {
83 2
            $data['strokeDashOffset'] = $this->strokeDashOffset;
84
        }
85
86 6
        if ($this->strokeLineCap !== null) {
87 2
            $data['strokeLineCap'] = $this->strokeLineCap->value;
88
        }
89
90 6
        if ($this->strokeLineJoin !== null) {
91 2
            $data['strokeLineJoin'] = $this->strokeLineJoin->value;
92
        }
93
94 6
        if ($this->strokeMiterLimit !== null) {
95 2
            $data['strokeMiterLimit'] = $this->strokeMiterLimit;
96
        }
97
98 6
        if ($this->strokeOpacity !== null) {
99 2
            $data['strokeOpacity'] = $this->strokeOpacity;
100
        }
101
102 6
        if ($this->strokeTransform !== null) {
103 1
            $data['strokeTransform'] = $this->strokeTransform;
104
        }
105
106 6
        if ($this->strokeWidth !== null) {
107 2
            $data['strokeWidth'] = $this->strokeWidth;
108
        }
109
110 6
        return $data;
111
    }
112
}
113