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

DraftFour   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 50
ccs 6
cts 6
cp 1
rs 10
wmc 3
lcom 1
cbo 1

2 Methods

Rating   Name   Duplication   Size   Complexity  
A has() 0 4 1
A getConstraint() 0 8 2
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