Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Completed
Push — 0.9 ( 7d978d...1ce8ac )
by Henrique
07:01 queued 01:39
created

PostalCode   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 177
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 4
c 2
b 0
f 0
lcom 0
cbo 3
dl 0
loc 177
ccs 11
cts 11
cp 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 15 4
1
<?php
2
3
namespace Respect\Validation\Rules;
4
5
use Respect\Validation\Exceptions\ComponentException;
6
7
class PostalCode extends Regex
8
{
9
    const DEFAULT_PATTERN = '/^$/';
10
11
    /**
12
     * @link http://download.geonames.org/export/dump/countryInfo.txt
13
     */
14
    public $postalCodes = array(
15
        "AD" => "/^(?:AD)*(\d{3})$/",
16
        "AM" => "/^(\d{6})$/",
17
        "AR" => "/^([A-Z]\d{4}[A-Z]{3})$/",
18
        "AT" => "/^(\d{4})$/",
19
        "AU" => "/^(\d{4})$/",
20
        "AX" => "/^(?:FI)*(\d{5})$/",
21
        "AZ" => "/^(?:AZ)*(\d{4})$/",
22
        "BA" => "/^(\d{5})$/",
23
        "BB" => "/^(?:BB)*(\d{5})$/",
24
        "BD" => "/^(\d{4})$/",
25
        "BE" => "/^(\d{4})$/",
26
        "BG" => "/^(\d{4})$/",
27
        "BH" => "/^(\d{3}\d?)$/",
28
        "BM" => "/^([A-Z]{2}\d{2})$/",
29
        "BN" => "/^([A-Z]{2}\d{4})$/",
30
        "BR" => "/^(\d{8}|\d{5}-\d{3})$/",
31
        "BY" => "/^(\d{6})$/",
32
        "CA" => "/^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ]) ?(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$/",
33
        "CH" => "/^(\d{4})$/",
34
        "CL" => "/^(\d{7})$/",
35
        "CN" => "/^(\d{6})$/",
36
        "CR" => "/^(\d{4})$/",
37
        "CS" => "/^(\d{5})$/",
38
        "CU" => "/^(?:CP)*(\d{5})$/",
39
        "CV" => "/^(\d{4})$/",
40
        "CX" => "/^(\d{4})$/",
41
        "CY" => "/^(\d{4})$/",
42
        "CZ" => "/^(\d{5})$/",
43
        "DE" => "/^(\d{5})$/",
44
        "DK" => "/^(\d{4})$/",
45
        "DO" => "/^(\d{5})$/",
46
        "DZ" => "/^(\d{5})$/",
47
        "EC" => "/^([a-zA-Z]\d{4}[a-zA-Z])$/",
48
        "EE" => "/^(\d{5})$/",
49
        "EG" => "/^(\d{5})$/",
50
        "ES" => "/^(\d{5})$/",
51
        "ET" => "/^(\d{4})$/",
52
        "FI" => "/^(?:FI)*(\d{5})$/",
53
        "FM" => "/^(\d{5})$/",
54
        "FO" => "/^(?:FO)*(\d{3})$/",
55
        "FR" => "/^(\d{5})$/",
56
        "GB" => "/^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})$/",
57
        "GE" => "/^(\d{4})$/",
58
        "GF" => "/^((97|98)3\d{2})$/",
59
        "GG" => "/^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$/",
60
        "GL" => "/^(\d{4})$/",
61
        "GP" => "/^((97|98)\d{3})$/",
62
        "GR" => "/^(\d{5})$/",
63
        "GT" => "/^(\d{5})$/",
64
        "GU" => "/^(969\d{2})$/",
65
        "GW" => "/^(\d{4})$/",
66
        "HN" => "/^([A-Z]{2}\d{4})$/",
67
        "HR" => "/^(?:HR)*(\d{5})$/",
68
        "HT" => "/^(?:HT)*(\d{4})$/",
69
        "HU" => "/^(\d{4})$/",
70
        "ID" => "/^(\d{5})$/",
71
        "IL" => "/^(\d{5})$/",
72
        "IM" => "/^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$/",
73
        "IN" => "/^(\d{6})$/",
74
        "IQ" => "/^(\d{5})$/",
75
        "IR" => "/^(\d{10})$/",
76
        "IS" => "/^(\d{3})$/",
77
        "IT" => "/^(\d{5})$/",
78
        "JE" => "/^(([A-Z]\d{2}[A-Z]{2})|([A-Z]\d{3}[A-Z]{2})|([A-Z]{2}\d{2}[A-Z]{2})|([A-Z]{2}\d{3}[A-Z]{2})|([A-Z]\d[A-Z]\d[A-Z]{2})|([A-Z]{2}\d[A-Z]\d[A-Z]{2})|(GIR0AA))$/",
79
        "JO" => "/^(\d{5})$/",
80
        "JP" => "/^(\d{7})$/",
81
        "KE" => "/^(\d{5})$/",
82
        "KG" => "/^(\d{6})$/",
83
        "KH" => "/^(\d{5})$/",
84
        "KP" => "/^(\d{6})$/",
85
        "KR" => "/^(?:SEOUL)*(\d{6})$/",
86
        "KW" => "/^(\d{5})$/",
87
        "KZ" => "/^(\d{6})$/",
88
        "LA" => "/^(\d{5})$/",
89
        "LB" => "/^(\d{4}(\d{4})?)$/",
90
        "LI" => "/^(\d{4})$/",
91
        "LK" => "/^(\d{5})$/",
92
        "LR" => "/^(\d{4})$/",
93
        "LS" => "/^(\d{3})$/",
94
        "LT" => "/^(?:LT)*(\d{5})$/",
95
        "LU" => "/^(\d{4})$/",
96
        "LV" => "/^(?:LV)*(\d{4})$/",
97
        "MA" => "/^(\d{5})$/",
98
        "MC" => "/^(\d{5})$/",
99
        "MD" => "/^(?:MD)*(\d{4})$/",
100
        "ME" => "/^(\d{5})$/",
101
        "MG" => "/^(\d{3})$/",
102
        "MK" => "/^(\d{4})$/",
103
        "MM" => "/^(\d{5})$/",
104
        "MN" => "/^(\d{6})$/",
105
        "MQ" => "/^(\d{5})$/",
106
        "MT" => "/^([A-Z]{3}\d{2}\d?)$/",
107
        "MV" => "/^(\d{5})$/",
108
        "MX" => "/^(\d{5})$/",
109
        "MY" => "/^(\d{5})$/",
110
        "MZ" => "/^(\d{4})$/",
111
        "NC" => "/^(\d{5})$/",
112
        "NE" => "/^(\d{4})$/",
113
        "NF" => "/^(\d{4})$/",
114
        "NG" => "/^(\d{6})$/",
115
        "NI" => "/^(\d{7})$/",
116
        "NL" => "/^(\d{4}[A-Z]{2})$/",
117
        "NO" => "/^(\d{4})$/",
118
        "NP" => "/^(\d{5})$/",
119
        "NZ" => "/^(\d{4})$/",
120
        "OM" => "/^(\d{3})$/",
121
        "PF" => "/^((97|98)7\d{2})$/",
122
        "PG" => "/^(\d{3})$/",
123
        "PH" => "/^(\d{4})$/",
124
        "PK" => "/^(\d{5})$/",
125
        "PL" => "/^(\d{2}-\d{3})$/",
126
        "PM" => "/^(97500)$/",
127
        "PR" => "/^(\d{9})$/",
128
        "PT" => "/^(\d{7})$/",
129
        "PW" => "/^(96940)$/",
130
        "PY" => "/^(\d{4})$/",
131
        "RE" => "/^((97|98)(4|7|8)\d{2})$/",
132
        "RO" => "/^(\d{6})$/",
133
        "RS" => "/^(\d{6})$/",
134
        "RU" => "/^(\d{6})$/",
135
        "SA" => "/^(\d{5})$/",
136
        "SD" => "/^(\d{5})$/",
137
        "SE" => "/^(?:SE)*(\d{5})$/",
138
        "SG" => "/^(\d{6})$/",
139
        "SH" => "/^(STHL1ZZ)$/",
140
        "SI" => "/^(?:SI)*(\d{4})$/",
141
        "SK" => "/^(\d{5})$/",
142
        "SM" => "/^(4789\d)$/",
143
        "SN" => "/^(\d{5})$/",
144
        "SO" => "/^([A-Z]{2}\d{5})$/",
145
        "SV" => "/^(?:CP)*(\d{4})$/",
146
        "SZ" => "/^([A-Z]\d{3})$/",
147
        "TC" => "/^(TKCA 1ZZ)$/",
148
        "TH" => "/^(\d{5})$/",
149
        "TJ" => "/^(\d{6})$/",
150
        "TM" => "/^(\d{6})$/",
151
        "TN" => "/^(\d{4})$/",
152
        "TR" => "/^(\d{5})$/",
153
        "TW" => "/^(\d{5})$/",
154
        "UA" => "/^(\d{5})$/",
155
        "US" => "/^\d{5}(-\d{4})?$/",
156
        "UY" => "/^(\d{5})$/",
157
        "UZ" => "/^(\d{6})$/",
158
        "VA" => "/^(\d{5})$/",
159
        "VE" => "/^(\d{4})$/",
160
        "VI" => "/^\d{5}(-\d{4})?$/",
161
        "VN" => "/^(\d{6})$/",
162
        "WF" => "/^(986\d{2})$/",
163
        "YT" => "/^(\d{5})$/",
164
        "ZA" => "/^(\d{4})$/",
165
        "ZM" => "/^(\d{5})$/",
166
    );
167
168 21
    public function __construct($countryCode, CountryCode $countryCodeRule = null)
169
    {
170 21
        $countryCodeRule = $countryCodeRule ?: new CountryCode();
171 21
        if (! $countryCodeRule->validate($countryCode)) {
172 1
            throw new ComponentException(sprintf('Cannot validate postal code from "%s" country', $countryCode));
173
        }
174
175 20
        $regex = self::DEFAULT_PATTERN;
176 20
        $upperCountryCode = strtoupper($countryCode);
177 20
        if (isset($this->postalCodes[$upperCountryCode])) {
178 15
            $regex = $this->postalCodes[$upperCountryCode];
179 15
        }
180
181 20
        parent::__construct($regex);
182 20
    }
183
}
184