DutchLicenseNumber   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 1
eloc 22
c 2
b 0
f 0
dl 0
loc 43
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 15 1
1
<?php
2
3
namespace DeVos\Laravel\Validation\LicenseNumber\Rules;
4
5
class DutchLicenseNumber
6
{
7
    private const LICENSE_NUMBER_EXPRESSIONS = [
8
        '[A-2]{2}\d{2}\d{2}', // XX-99-99
9
        '\d{2}\d{2}[A-Z]{2}', // 99-99-XX
10
        '\d{2}[A-Z]{2}\d{2}', // 99-XX-99
11
        '[A-Z]{2}\d{2}[A-Z]{2}', // XX-99-XX
12
        '[A-Z]{2}[A-Z]{2}\d{2}', // XX-XX-99
13
        '\d{2}[A-Z]{2}[A-Z]{2}', // 99-XX-XX
14
        '\d{2}[A-Z]{3}\d{1}', // 99-XXX-9
15
        '\d{1}[A-Z]{3}\d{2}', // 9-XXX-99
16
        '[A-Z]{2}\d{3}[A-Z]{1}', // XX-999-X
17
        '[A-Z]{1}\d{3}[A-Z]{2}', // X-999-XX
18
        '[A-Z]{3}\d{2}[A-Z]{1}', // XXX-99-X
19
        '[A-Z]{1}\d{2}[A-Z]{3}', // X-99-XXX
20
        '\d{1}[A-Z]{2}\d{3}', // 9-XX-999
21
        '\d{3}[A-Z]{2}\d{1}', // 999-XX-9
22
    ];
23
24
    /**
25
     * Determine if the validation rule passes.
26
     *
27
     * @param string $attribute
28
     * @param mixed $value
29
     * @param array $parameters
30
     * @param \Illuminate\Contracts\Validation\Validator $validator
31
     * @return bool
32
     */
33
    public function __invoke(
34
        $attribute,
35
        $value,
36
        $parameters,
37
        $validator
38
    ) {
39
        $licenseNumber = strtoupper(str_replace('-', '', $value));
40
41
        preg_match(
42
            sprintf('/%s/', implode('|', self::LICENSE_NUMBER_EXPRESSIONS)),
43
            $licenseNumber,
44
            $matches
45
        );
46
47
        return in_array($licenseNumber, $matches);
48
    }
49
}