Passed
Push — master ( 9787f7...8354ea )
by Tomáš
02:37
created

Range   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 34
rs 10
c 0
b 0
f 0
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A visit() 0 13 2
A accept() 0 3 2
1
<?php declare(strict_types = 1);
2
3
namespace Apicart\FQL\Tests\Integration\Generator\SQL\Visitor;
4
5
use Apicart\FQL\Generator\Common\AbstractVisitor;
6
use Apicart\FQL\Tests\Integration\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
	public function __construct(AbstractFilterResolver $filterResolver)
22
	{
23
		$this->filterResolver = $filterResolver;
24
	}
25
26
27
	public function accept(AbstractNode $node): bool
28
	{
29
		return $node instanceof Term && $node->getToken() instanceof RangeToken;
30
	}
31
32
33
	public function visit(AbstractNode $node, ?AbstractVisitor $subVisitor = null, ?array $options = null): string
34
	{
35
		/** @var Term $termNode */
36
		$termNode = $node;
37
		/** @var RangeToken $token */
38
		$token = $termNode->getToken();
39
40
		$domain = $token->getDomain();
41
		if ($domain === '') {
42
			throw new LogicException('Missing required domain');
43
		}
44
45
		return $this->filterResolver->resolve($domain, $token);
46
	}
47
48
}
49