-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIsUsaState.php
109 lines (100 loc) · 3.01 KB
/
IsUsaState.php
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
/**
* JBZoo Toolbox - Csv-Blueprint.
*
* This file is part of the JBZoo Toolbox project.
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @license MIT
* @copyright Copyright (C) JBZoo.com, All rights reserved.
* @see https://github.com/JBZoo/Csv-Blueprint
*/
declare(strict_types=1);
namespace JBZoo\CsvBlueprint\Rules\Cell;
final class IsUsaState extends AbstractCellRule
{
public function getHelpMeta(): array
{
return [
[],
[
self::DEFAULT => [
'true',
'Name or code of USA state name. Case-insensitive. '
. 'Example: "CA" or "California".',
],
],
];
}
public function validateRule(string $cellValue): ?string
{
if ($cellValue === '') {
return null;
}
if (!self::testValue($cellValue)) {
return "Value \"<c>{$cellValue}</c>\" is not a valid USA state name or code";
}
return null;
}
public static function testValue(string $cellValue): bool
{
return \in_array(\strtoupper($cellValue), self::getOptions(), true)
|| \in_array(\strtoupper($cellValue), \array_keys(self::getOptions()), true);
}
private static function getOptions(): array
{
return [
'AL' => 'ALABAMA',
'AK' => 'ALASKA',
'AZ' => 'ARIZONA',
'AR' => 'ARKANSAS',
'CA' => 'CALIFORNIA',
'CO' => 'COLORADO',
'CT' => 'CONNECTICUT',
'DE' => 'DELAWARE',
'FL' => 'FLORIDA',
'GA' => 'GEORGIA',
'HI' => 'HAWAII',
'ID' => 'IDAHO',
'IL' => 'ILLINOIS',
'IN' => 'INDIANA',
'IA' => 'IOWA',
'KS' => 'KANSAS',
'KY' => 'KENTUCKY',
'LA' => 'LOUISIANA',
'ME' => 'MAINE',
'MD' => 'MARYLAND',
'MA' => 'MASSACHUSETTS',
'MI' => 'MICHIGAN',
'MN' => 'MINNESOTA',
'MS' => 'MISSISSIPPI',
'MO' => 'MISSOURI',
'MT' => 'MONTANA',
'NE' => 'NEBRASKA',
'NV' => 'NEVADA',
'NH' => 'NEW HAMPSHIRE',
'NJ' => 'NEW JERSEY',
'NM' => 'NEW MEXICO',
'NY' => 'NEW YORK',
'NC' => 'NORTH CAROLINA',
'ND' => 'NORTH DAKOTA',
'OH' => 'OHIO',
'OK' => 'OKLAHOMA',
'OR' => 'OREGON',
'PA' => 'PENNSYLVANIA',
'RI' => 'RHODE ISLAND',
'SC' => 'SOUTH CAROLINA',
'SD' => 'SOUTH DAKOTA',
'TN' => 'TENNESSEE',
'TX' => 'TEXAS',
'UT' => 'UTAH',
'VT' => 'VERMONT',
'VA' => 'VIRGINIA',
'WA' => 'WASHINGTON',
'WV' => 'WEST VIRGINIA',
'WI' => 'WISCONSIN',
'WY' => 'WYOMING',
];
}
}