Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
93.75% covered (success)
93.75%
15 / 16
80.00% covered (warning)
80.00%
4 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
Type_Enum
93.75% covered (success)
93.75%
15 / 16
80.00% covered (warning)
80.00%
4 / 5
9.02
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 parse
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 __toString
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 jsonSerialize
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 schema
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
4
1<?php
2
3namespace Automattic\Jetpack\Schema\Types;
4
5use Automattic\Jetpack\Schema\Parser;
6use Automattic\Jetpack\Schema\Schema_Error;
7
8class Type_Enum implements Parser {
9
10    /**
11     * @var $valid_values array The list of valid values for the enum.
12     */
13    protected $valid_values;
14
15    public function __construct( $valid_values ) {
16        $this->valid_values = $valid_values;
17    }
18
19    public function parse( $value, $_context ) {
20        if ( ! in_array( $value, $this->valid_values, true ) ) {
21            $message = sprintf( 'Invalid value \'%s\'. Expected one of: %s', $value, implode( ', ', $this->valid_values ) );
22            throw new Schema_Error( $message, $value );
23        }
24        return $value;
25    }
26
27    public function __toString() {
28        $valid_values = implode( ',', $this->valid_values );
29        return "enum($valid_values)";
30    }
31
32    #[\ReturnTypeWillChange]
33    public function jsonSerialize() {
34        return $this->schema();
35    }
36
37    public function schema() {
38        $valid_values = $this->valid_values;
39        foreach ( $valid_values as $key => $value ) {
40            if ( is_object( $value ) && method_exists( $value, 'schema' ) ) {
41                $valid_values[ $key ] = $value->schema();
42            }
43        }
44
45        return array(
46            'type'  => 'enum',
47            'value' => $valid_values,
48        );
49    }
50}