Passed
Pull Request — master (#20)
by Nico
13:15
created

ExpressionFactory::createFromOperator()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php declare(strict_types=1);
2
3
/**
4
 * @license     http://opensource.org/licenses/mit-license.php MIT
5
 * @link        https://github.com/nicoSWD
6
 * @author      Nicolas Oelgart <[email protected]>
7
 */
8
namespace nicoSWD\Rule\Expression;
9
10
use nicoSWD\Rule\Parser\Exception\ParserException;
11
use nicoSWD\Rule\TokenStream\Token;
12
use nicoSWD\Rule\TokenStream\Token\BaseToken;
13
14
class ExpressionFactory implements ExpressionFactoryInterface
15
{
16
    /** @throws ParserException */
17
    public function createFromOperator(BaseToken $operator): BaseExpression
18
    {
19
        return match (get_class($operator)) {
20
            Token\TokenEqual::class => new EqualExpression(),
21
            Token\TokenEqualStrict::class => new EqualStrictExpression(),
22
            Token\TokenNotEqual::class => new NotEqualExpression(),
23
            Token\TokenNotEqualStrict::class => new NotEqualStrictExpression(),
24
            Token\TokenGreater::class => new GreaterThanExpression(),
25
            Token\TokenSmaller::class => new LessThanExpression(),
26
            Token\TokenSmallerEqual::class => new LessThanEqualExpression(),
27
            Token\TokenGreaterEqual::class => new GreaterThanEqualExpression(),
28 218
            Token\TokenIn::class => new InExpression(),
29
            Token\TokenNotIn::class => new NotInExpression(),
30 218
            default => throw ParserException::unknownOperator($operator),
0 ignored issues
show
Bug introduced by
A parse error occurred: Syntax error, unexpected T_THROW on line 30 at column 23
Loading history...
31
        };
32
    }
33
}
34