UnexpectedValueException   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 18
c 1
b 0
f 0
dl 0
loc 41
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 32 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cloudstek\SCIM\FilterParser\Exception;
6
7
use Nette\Tokenizer;
8
9
/**
10
 * Unexpected value exception.
11
 */
12
class UnexpectedValueException extends Tokenizer\Exception
13
{
14
    /**
15
     * Unexpected value exception.
16
     *
17
     * @param Tokenizer\Stream $stream
18
     * @param int              $code
19
     * @param \Throwable|null  $previous
20
     */
21
    public function __construct(Tokenizer\Stream $stream, $code = 0, \Throwable $previous = null)
22
    {
23
        $message = 'Unexpected value at line 1, column 1.';
24
25
        if ($stream->position < 0) {
26
            $stream->nextToken();
27
        }
28
29
        $token = $stream->currentToken();
30
31
        if ($token !== null) {
32
            // Get values from all tokens up to here.
33
            $values = array_map(
34
                fn($t) => $t->value,
35
                array_slice($stream->tokens, 0, $stream->position)
36
            );
37
38
            // Get coordinates.
39
            [$line, $col] = Tokenizer\Tokenizer::getCoordinates(
40
                implode('', $values),
41
                $token->offset
42
            );
43
44
            $message = sprintf(
45
                'Unexpected %s on line %d, column %d.',
46
                $token->value,
47
                (int)$line,
48
                (int)$col
49
            );
50
        }
51
52
        parent::__construct($message, $code, $previous);
53
    }
54
}
55