Passed
Push — master ( 204a50...e241be )
by Martin
01:09
created

XmlNodeParser::parseNode()   C

Complexity

Conditions 7
Paths 16

Size

Total Lines 22
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 22
rs 6.9811
c 0
b 0
f 0
cc 7
eloc 14
nc 16
nop 2
1
<?php
2
3
declare(strict_types = 1);
4
5
namespace KingsonDe\Marshal;
6
7
class XmlNodeParser {
8
9
    /**
10
     * @param string|int $name
11
     * @param mixed $data
12
     * @return XmlNode
13
     */
14
    public static function parseNode($name, $data): XmlNode {
15
        $node = new XmlNode($name);
16
17
        if (isset($data[MarshalXml::ATTRIBUTES_KEY])) {
18
            $node->setAttributes($data[MarshalXml::ATTRIBUTES_KEY]);
19
            unset($data[MarshalXml::ATTRIBUTES_KEY]);
20
        }
21
22
        if (\is_scalar($data)) {
23
            $node->setNodeValue($data);
24
        } elseif (isset($data[MarshalXml::DATA_KEY])) {
25
            $node->setNodeValue($data[MarshalXml::DATA_KEY]);
26
        } elseif (isset($data[MarshalXml::CDATA_KEY])) {
27
            $node->setNodeValue($data[MarshalXml::CDATA_KEY]);
28
            $node->setIsCData(true);
29
        }
30
31
        if (\is_array($data) && false === $node->hasNodeValue()) {
32
            $node->setChildrenNodes($data);
33
        }
34
35
        return $node;
36
    }
37
}
38