Word   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 21
Duplicated Lines 0 %

Test Coverage

Coverage 81.82%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 10
c 1
b 0
f 0
dl 0
loc 21
ccs 9
cts 11
cp 0.8182
rs 10
wmc 6

2 Methods

Rating   Name   Duplication   Size   Complexity  
A visit() 0 12 4
A accept() 0 3 2
1
<?php declare(strict_types = 1);
2
3
namespace Apicart\FQL\Generator\Native;
4
5
use Apicart\FQL\Generator\Common\AbstractVisitor;
6
use Apicart\FQL\Token\Node\Term;
7
use Apicart\FQL\Token\Token\Word as WordToken;
8
use Apicart\FQL\Value\AbstractNode;
9
use LogicException;
10
11
final class Word extends AbstractVisitor
12
{
13
14 133
    public function accept(AbstractNode $node): bool
15
    {
16 133
        return $node instanceof Term && $node->getToken() instanceof WordToken;
17
    }
18
19
20 133
    public function visit(AbstractNode $node, ?AbstractVisitor $subVisitor = null, ?array $options = null): string
21
    {
22 133
        if (! $node instanceof Term) {
23
            throw new LogicException('Implementation accepts instance of Term Node');
24
        }
25 133
        $token = $node->getToken();
26 133
        if (! $token instanceof WordToken) {
27
            throw new LogicException('Implementation accepts instance of Word Token');
28
        }
29 133
        $domainPrefix = $token->getDomain() === '' ? '' : "{$token->getDomain()}:";
30 133
        $wordEscaped = preg_replace('/([\\\'"+\-!():#@ ])/', '\\\\$1', $token->getWord());
31 133
        return "{$domainPrefix}{$wordEscaped}";
32
    }
33
34
}
35