Completed
Push — master ( 5927eb...1e13db )
by
unknown
04:04
created

DraftFour   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 83.33%
Metric Value
dl 0
loc 58
ccs 5
cts 6
cp 0.8333
rs 10
wmc 3
lcom 1
cbo 0

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\ExclusiveMax;
12
use League\JsonGuard\Constraints\ExclusiveMin;
13
use League\JsonGuard\Constraints\Format;
14
use League\JsonGuard\Constraints\Items;
15
use League\JsonGuard\Constraints\Max;
16
use League\JsonGuard\Constraints\MaxItems;
17
use League\JsonGuard\Constraints\MaxLength;
18
use League\JsonGuard\Constraints\MaxProperties;
19
use League\JsonGuard\Constraints\Min;
20
use League\JsonGuard\Constraints\MinItems;
21
use League\JsonGuard\Constraints\MinLength;
22
use League\JsonGuard\Constraints\MinProperties;
23
use League\JsonGuard\Constraints\MultipleOf;
24
use League\JsonGuard\Constraints\Not;
25
use League\JsonGuard\Constraints\OneOf;
26
use League\JsonGuard\Constraints\Pattern;
27
use League\JsonGuard\Constraints\PatternProperties;
28
use League\JsonGuard\Constraints\Properties;
29
use League\JsonGuard\Constraints\Required;
30
use League\JsonGuard\Constraints\Type;
31
use League\JsonGuard\Constraints\UniqueItems;
32
use League\JsonGuard\RuleSet;
33
34
/**
35
 * The default rule set for JSON Schema Draft 4.
36
 * @see http://tools.ietf.org/html/draft-zyp-json-schema-04
37
 */
38
class DraftFour implements RuleSet
39
{
40
    private $rules = [
41
        'additionalItems'      => AdditionalItems::class,
42
        'additionalProperties' => AdditionalProperties::class,
43
        'allOf'                => AllOf::class,
44
        'anyOf'                => AnyOf::class,
45
        'dependencies'         => Dependencies::class,
46
        'enum'                 => Enum::class,
47
        'format'               => Format::class,
48
        'items'                => Items::class,
49
        'maximum'              => Max::class,
50
        'maxItems'             => MaxItems::class,
51
        'maxLength'            => MaxLength::class,
52
        'maxProperties'        => MaxProperties::class,
53
        'minimum'              => Min::class,
54
        'minItems'             => MinItems::class,
55
        'minLength'            => MinLength::class,
56
        'minProperties'        => MinProperties::class,
57
        'multipleOf'           => MultipleOf::class,
58
        'not'                  => Not::class,
59
        'oneOf'                => OneOf::class,
60
        'pattern'              => Pattern::class,
61
        'patternProperties'    => PatternProperties::class,
62
        'properties'           => Properties::class,
63
        'required'             => Required::class,
64
        'type'                 => Type::class,
65
        'uniqueItems'          => UniqueItems::class,
66
    ];
67
68
    /**
69
     * Determine if the rule set has a registered constraint for $rule.
70
     *
71
     * @param string $rule
72
     *
73
     * @return bool
74
     */
75 72
    public function has($rule)
76
    {
77 72
        return array_key_exists($rule, $this->rules);
78
    }
79
80
    /**
81
     * Get the registered constraint for $rule.
82
     *
83
     * @param string $rule
84
     *
85
     * @return \League\JsonGuard\Constraints\Constraint|null
86
     */
87 70
    public function getConstraint($rule)
88
    {
89 70
        if (!$this->has($rule)) {
90
            return null;
91
        }
92
93 70
        return new $this->rules[$rule];
94
    }
95
}
96