Completed
Pull Request — master (#17)
by Matt
02:30
created

DraftFour::getConstraint()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 4
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 8
ccs 4
cts 4
cp 1
crap 2
rs 9.4285
1
<?php
2
3
namespace League\JsonGuard\RuleSets;
4
5
use League\JsonGuard\Constraints\AdditionalItems;
6
use League\JsonGuard\Constraints\AdditionalProperties;
7
use League\JsonGuard\Constraints\AllOf;
8
use League\JsonGuard\Constraints\AnyOf;
9
use League\JsonGuard\Constraints\Dependencies;
10
use League\JsonGuard\Constraints\Enum;
11
use League\JsonGuard\Constraints\Format;
12
use League\JsonGuard\Constraints\Items;
13
use League\JsonGuard\Constraints\Max;
14
use League\JsonGuard\Constraints\MaxItems;
15
use League\JsonGuard\Constraints\MaxLength;
16
use League\JsonGuard\Constraints\MaxProperties;
17
use League\JsonGuard\Constraints\Min;
18
use League\JsonGuard\Constraints\MinItems;
19
use League\JsonGuard\Constraints\MinLength;
20
use League\JsonGuard\Constraints\MinProperties;
21
use League\JsonGuard\Constraints\MultipleOf;
22
use League\JsonGuard\Constraints\Not;
23
use League\JsonGuard\Constraints\OneOf;
24
use League\JsonGuard\Constraints\Pattern;
25
use League\JsonGuard\Constraints\PatternProperties;
26
use League\JsonGuard\Constraints\Properties;
27
use League\JsonGuard\Constraints\Required;
28
use League\JsonGuard\Constraints\Type;
29
use League\JsonGuard\Constraints\UniqueItems;
30
use League\JsonGuard\Exceptions\ConstraintNotFoundException;
31
use League\JsonGuard\RuleSet;
32
33
/**
34
 * The default rule set for JSON Schema Draft 4.
35
 * @see http://tools.ietf.org/html/draft-zyp-json-schema-04
36
 */
37
class DraftFour implements RuleSet
38
{
39
    private $rules = [
40
        'additionalItems'      => AdditionalItems::class,
41
        'additionalProperties' => AdditionalProperties::class,
42
        'allOf'                => AllOf::class,
43
        'anyOf'                => AnyOf::class,
44
        'dependencies'         => Dependencies::class,
45
        'enum'                 => Enum::class,
46
        'format'               => Format::class,
47
        'items'                => Items::class,
48
        'maximum'              => Max::class,
49
        'maxItems'             => MaxItems::class,
50
        'maxLength'            => MaxLength::class,
51
        'maxProperties'        => MaxProperties::class,
52
        'minimum'              => Min::class,
53
        'minItems'             => MinItems::class,
54
        'minLength'            => MinLength::class,
55
        'minProperties'        => MinProperties::class,
56
        'multipleOf'           => MultipleOf::class,
57
        'not'                  => Not::class,
58
        'oneOf'                => OneOf::class,
59
        'pattern'              => Pattern::class,
60
        'patternProperties'    => PatternProperties::class,
61
        'properties'           => Properties::class,
62
        'required'             => Required::class,
63
        'type'                 => Type::class,
64
        'uniqueItems'          => UniqueItems::class,
65
    ];
66
67
    /**
68
     * {@inheritdoc}
69
     */
70 39
    public function has($rule)
71
    {
72 39
        return array_key_exists($rule, $this->rules);
73
    }
74
75
    /**
76
     * {@inheritdoc}
77
     */
78 37
    public function getConstraint($rule)
79
    {
80 37
        if (!$this->has($rule)) {
81 1
            throw ConstraintNotFoundException::forRule($rule);
82
        }
83
84 36
        return new $this->rules[$rule];
85
    }
86
}
87