Passed
Push — static-analysis ( 5a0c71...7ccf34 )
by SignpostMarv
03:20
created

Restriction   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Test Coverage

Coverage 95.24%

Importance

Changes 0
Metric Value
dl 0
loc 84
ccs 40
cts 42
cp 0.9524
rs 10
c 0
b 0
f 0
wmc 8

4 Methods

Rating   Name   Duplication   Size   Complexity  
A addCheck() 0 4 1
A getChecksByType() 0 3 2
B loadRestriction() 0 47 4
A getChecks() 0 3 1
1
<?php
2
namespace GoetasWebservices\XML\XSDReader\Schema\Inheritance;
3
4
use DOMElement;
5
use GoetasWebservices\XML\XSDReader\Schema\Type\Type;
6
use GoetasWebservices\XML\XSDReader\SchemaReader;
7
8
class Restriction extends Base
9
{
10
    /**
11
    * @var mixed[][]
12
    */
13
    protected $checks = array();
14
15
    /**
16
    * @param string $type
17
    * @param mixed[] $value
18
    *
19
    * @return $this
20
    */
21 135
    public function addCheck($type, $value)
22
    {
23 135
        $this->checks[$type][] = $value;
24 135
        return $this;
25
    }
26
27
    /**
28
    * @return mixed[][]
29
    */
30 30
    public function getChecks()
31
    {
32 30
        return $this->checks;
33
    }
34
35
    /**
36
    * @param string $type
37
    *
38
    * @return mixed[]
39
    */
40
    public function getChecksByType($type)
41
    {
42
        return isset($this->checks[$type])?$this->checks[$type]:array();
43
    }
44
45 135
    public static function loadRestriction(
46
        SchemaReader $reader,
47
        Type $type,
48
        DOMElement $node
49
    ) {
50 135
        $restriction = new Restriction();
51 135
        $type->setRestriction($restriction);
52 135
        if ($node->hasAttribute("base")) {
53 135
            $reader->findAndSetSomeBase($type, $restriction, $node);
54 45
        } else {
55 135
            $addCallback = function (Type $restType) use ($restriction) {
56 135
                $restriction->setBase($restType);
57 135
            };
58
59 45
            Type::loadTypeWithCallbackOnChildNodes(
60 45
                $reader,
61 45
                $type->getSchema(),
62 45
                $node,
63
                $addCallback
64 45
            );
65
        }
66 45
        foreach ($node->childNodes as $childNode) {
67
            if (
68 45
                in_array(
69 45
                    $childNode->localName,
70
                    [
71 45
                        'enumeration',
72 45
                        'pattern',
73 45
                        'length',
74 45
                        'minLength',
75 45
                        'maxLength',
76 45
                        'minInclusive',
77 45
                        'maxInclusive',
78 45
                        'minExclusive',
79 45
                        'maxExclusive',
80 45
                        'fractionDigits',
81 45
                        'totalDigits',
82
                        'whiteSpace'
83 45
                    ],
84
                    true
85 45
                )
86 45
            ) {
87 45
                $restriction->addCheck(
88 45
                    $childNode->localName,
89
                    [
90 45
                        'value' => $childNode->getAttribute("value"),
91 45
                        'doc' => SchemaReader::getDocumentation($childNode)
92 45
                    ]
93 45
                );
94 45
            }
95 45
        }
96 45
    }
97
}
98