Passed
Push — static-analysis ( c32a1e...74f346 )
by SignpostMarv
03:18
created

Restriction   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 84
Duplicated Lines 0 %

Test Coverage

Coverage 95.45%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 84
ccs 42
cts 44
cp 0.9545
rs 10
wmc 8

4 Methods

Rating   Name   Duplication   Size   Complexity  
A addCheck() 0 4 1
A getChecksByType() 0 3 2
A getChecks() 0 3 1
B loadRestriction() 0 47 4
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 135
            Type::loadTypeWithCallbackOnChildNodes(
60 135
                $reader,
61 135
                $type->getSchema(),
62 135
                $node,
63 90
                $addCallback
64 45
            );
65
        }
66 135
        foreach ($node->childNodes as $childNode) {
67
            if (
68 135
                in_array(
69 135
                    $childNode->localName,
70
                    [
71 135
                        '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 90
                    true
85 45
                )
86 45
            ) {
87 135
                $restriction->addCheck(
88 135
                    $childNode->localName,
89
                    [
90 135
                        'value' => $childNode->getAttribute("value"),
91 135
                        'doc' => SchemaReader::getDocumentation($childNode)
92 45
                    ]
93 45
                );
94 45
            }
95 45
        }
96 135
    }
97
}
98