DoctrineLexer   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Test Coverage

Coverage 68.75%

Importance

Changes 1
Bugs 1 Features 1
Metric Value
eloc 13
c 1
b 1
f 1
dl 0
loc 59
ccs 11
cts 16
cp 0.6875
rs 10
wmc 8

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getLookaheadType() 0 9 2
A isPre200() 0 4 1
A getLookaheadValue() 0 9 2
A getTokenValue() 0 14 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace MartinGeorgiev\Utils;
6
7
use Doctrine\ORM\Query\Lexer;
8
9
/**
10
 * @internal
11
 */
12
final class DoctrineLexer
13
{
14
    /**
15
     * Checks if the Lexer is prior to version 2.0.0.
16
     *
17
     * In Lexer versions prior to 2.0.0, the lookahead property is an array,
18
     * while in 2.0.0+ it's an object.
19
     */
20 143
    public static function isPre200(Lexer $lexer): bool
21
    {
22
        // @phpstan-ignore-next-line
23 143
        return \is_array($lexer->lookahead);
24
    }
25
26
    /**
27
     * @return mixed|null
28
     */
29 142
    public static function getLookaheadType(Lexer $lexer)
30
    {
31 142
        if (self::isPre200($lexer)) {
32
            // @phpstan-ignore-next-line
33
            return $lexer->lookahead['type'];
34
        }
35
36
        // @phpstan-ignore-next-line
37 142
        return $lexer->lookahead?->type;
38
    }
39
40
    /**
41
     * @return mixed|null
42
     */
43 1
    public static function getLookaheadValue(Lexer $lexer)
44
    {
45 1
        if (self::isPre200($lexer)) {
46
            // @phpstan-ignore-next-line
47
            return $lexer->lookahead['value'] ?? null;
48
        }
49
50
        // @phpstan-ignore-next-line
51 1
        return $lexer->lookahead?->value;
52
    }
53
54
    /**
55
     * @return mixed|null
56
     */
57 1
    public static function getTokenValue(Lexer $lexer)
58
    {
59 1
        if (self::isPre200($lexer)) {
60
            // @phpstan-ignore-next-line
61
            if ($lexer->token === null) {
62
                return null;
63
            }
64
65
            // @phpstan-ignore-next-line
66
            return $lexer->token['value'];
67
        }
68
69
        // @phpstan-ignore-next-line
70 1
        return $lexer->token?->value;
71
    }
72
}
73