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

XmlNodeParser   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 7
dl 0
loc 29
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
C parseNode() 0 22 7
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