summaryrefslogtreecommitdiff
path: root/vendor/phpdocumentor/reflection-docblock/src/Exception/PcreException.php
blob: b8b6da8cf43624263fcc943c8e4fde62a3a45432 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php

declare(strict_types=1);

namespace phpDocumentor\Reflection\Exception;

use InvalidArgumentException;

use const PREG_BACKTRACK_LIMIT_ERROR;
use const PREG_BAD_UTF8_ERROR;
use const PREG_BAD_UTF8_OFFSET_ERROR;
use const PREG_INTERNAL_ERROR;
use const PREG_JIT_STACKLIMIT_ERROR;
use const PREG_NO_ERROR;
use const PREG_RECURSION_LIMIT_ERROR;

final class PcreException extends InvalidArgumentException
{
    public static function createFromPhpError(int $errorCode): self
    {
        switch ($errorCode) {
            case PREG_BACKTRACK_LIMIT_ERROR:
                return new self('Backtrack limit error');

            case PREG_RECURSION_LIMIT_ERROR:
                return new self('Recursion limit error');

            case PREG_BAD_UTF8_ERROR:
                return new self('Bad UTF8 error');

            case PREG_BAD_UTF8_OFFSET_ERROR:
                return new self('Bad UTF8 offset error');

            case PREG_JIT_STACKLIMIT_ERROR:
                return new self('Jit stacklimit error');

            case PREG_NO_ERROR:
            case PREG_INTERNAL_ERROR:
            default:
        }

        return new self('Unknown Pcre error');
    }
}