UnsafeNodeFactory   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Test Coverage

Coverage 64.29%

Importance

Changes 0
Metric Value
wmc 6
eloc 13
dl 0
loc 30
c 0
b 0
f 0
ccs 9
cts 14
cp 0.6429
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A createNodeFromArrayValue() 0 15 4
A createNodeFromObjectValue() 0 5 2
1
<?php declare(strict_types=1);
2
3
namespace DaveRandom\Jom;
4
5
final class UnsafeNodeFactory extends NodeFactory
6
{
7
    /**
8
     * @inheritdoc
9
     */
10 30
    protected function createNodeFromArrayValue(?Document $ownerDoc, array $array, int $flags): VectorNode
11
    {
12 30
        $i = 0;
13 30
        $packed = true;
14
15 30
        foreach ($array as $key => $value) {
16 25
            if ($key !== $i++) {
17
                $packed = false;
18 25
                break;
19
            }
20
        }
21
22 30
        return $packed
23 30
            ? $this->createArrayNodeFromPackedArray($array, $ownerDoc, $flags)
24 30
            : $this->createObjectNodeFromPropertyMap($array, $ownerDoc, $flags);
25
    }
26
27
    /**
28
     * @inheritdoc
29
     */
30
    protected function createNodeFromObjectValue(?Document $ownerDoc, object $object, int $flags): ?Node
31
    {
32
        return $object instanceof \JsonSerializable
33
            ? $this->tryCreateNodeFromValue($object->jsonSerialize(), $ownerDoc, $flags)
34
            : $this->createObjectNodeFromPropertyMap($object, $ownerDoc, $flags);
35
    }
36
}
37