Passed
Push — master ( 44542b...077e9d )
by Tomáš
03:58
created

Range   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Test Coverage

Coverage 91.67%

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 34
ccs 11
cts 12
cp 0.9167
rs 10
c 0
b 0
f 0
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A accept() 0 3 2
A visit() 0 13 2
1
<?php declare(strict_types = 1);
2
3
namespace Apicart\FQL\Generator\SQL;
4
5
use Apicart\FQL\Generator\Common\AbstractVisitor;
6
use Apicart\FQL\Generator\SQL\Resolver\AbstractFilterResolver;
7
use Apicart\FQL\Token\Node\Term;
8
use Apicart\FQL\Token\Token\Range as RangeToken;
9
use Apicart\FQL\Value\AbstractNode;
10
use LogicException;
11
12
final class Range extends AbstractVisitor
13
{
14
15
    /**
16
     * @var AbstractFilterResolver
17
     */
18
    private $filterResolver;
19
20
21 1
    public function __construct(AbstractFilterResolver $filterResolver)
22
    {
23 1
        $this->filterResolver = $filterResolver;
24 1
    }
25
26
27 1
    public function accept(AbstractNode $node): bool
28
    {
29 1
        return $node instanceof Term && $node->getToken() instanceof RangeToken;
30
    }
31
32
33 1
    public function visit(AbstractNode $node, ?AbstractVisitor $subVisitor = null, ?array $options = null): string
34
    {
35
        /** @var Term $termNode */
36 1
        $termNode = $node;
37
        /** @var RangeToken $token */
38 1
        $token = $termNode->getToken();
39
40 1
        $domain = $token->getDomain();
41 1
        if ($domain === '') {
42
            throw new LogicException('Missing required domain');
43
        }
44
45 1
        return '(' . $this->filterResolver->resolve($domain, $token) . ')';
46
    }
47
48
}
49