Completed
Pull Request — master (#18)
by SignpostMarv
02:40
created

Element::setNil()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 3
cts 3
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 1
crap 1
1
<?php
2
3
namespace GoetasWebservices\XML\XSDReader\Schema\Element;
4
5
use DOMElement;
6
use GoetasWebservices\XML\XSDReader\Schema\Schema;
7
use GoetasWebservices\XML\XSDReader\SchemaReader;
8
9
class Element extends AbstractElementSingle implements ElementItem
10
{
11
    /**
12
     * @return Element
13
     */
14 45
    public static function loadElement(
15
        SchemaReader $reader,
16
        Schema $schema,
17
        DOMElement $node
18
    ) {
19 45
        $element = new self($schema, $node->getAttribute('name'));
20 45
        $element->setDoc(SchemaReader::getDocumentation($node));
21
22 45
        $reader->fillItem($element, $node);
23
24 45
        SchemaReader::maybeSetMax($element, $node);
25 45
        SchemaReader::maybeSetMin($element, $node);
26
27 45
        $xp = new \DOMXPath($node->ownerDocument);
28 45
        $xp->registerNamespace('xs', 'http://www.w3.org/2001/XMLSchema');
29
30 45
        if ($xp->query('ancestor::xs:choice', $node)->length) {
31 45
            $element->setMin(0);
32 45
        }
33
34 45
        if ($node->hasAttribute('nillable')) {
35 3
            $element->setNil($node->getAttribute('nillable') == 'true');
36 3
        }
37 45
        if ($node->hasAttribute('form')) {
38 3
            $element->setQualified($node->getAttribute('form') == 'qualified');
39 3
        }
40
41 45
        return $element;
42
    }
43
}
44