Completed
Push — php-7.1 ( 657403...bab180 )
by SignpostMarv
07:32
created

Element::setMin()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

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