-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathjurisdiction.l4
More file actions
303 lines (235 loc) · 10.5 KB
/
Copy pathjurisdiction.l4
File metadata and controls
303 lines (235 loc) · 10.5 KB
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
IMPORT prelude
§ `Jurisdiction Library`
-- Library for representing jurisdictions (countries, regions, states, municipalities)
-- Uses ISO 3166-1 codes (alpha-2 and alpha-3) for countries
-- Uses ISO 3166-2 codes for subdivisions
-- Version 1.0.0 (2024-12-16)
§§ `Version`
`Jurisdiction Library Version` MEANS "1.0.0"
`Jurisdiction Library Date` MEANS "2024-12-16"
§§ `Country Codes - ISO 3166-1`
-- Major countries with both alpha-2 and alpha-3 codes
-- Format: Country name, 2-letter code, 3-letter code, numeric code
`United States alpha-2` MEANS "US"
`United States alpha-3` MEANS "USA"
`United States numeric` MEANS 840
`United Kingdom alpha-2` MEANS "GB"
`United Kingdom alpha-3` MEANS "GBR"
`United Kingdom numeric` MEANS 826
`Canada alpha-2` MEANS "CA"
`Canada alpha-3` MEANS "CAN"
`Canada numeric` MEANS 124
`Australia alpha-2` MEANS "AU"
`Australia alpha-3` MEANS "AUS"
`Australia numeric` MEANS 36
`Germany alpha-2` MEANS "DE"
`Germany alpha-3` MEANS "DEU"
`Germany numeric` MEANS 276
`France alpha-2` MEANS "FR"
`France alpha-3` MEANS "FRA"
`France numeric` MEANS 250
`China alpha-2` MEANS "CN"
`China alpha-3` MEANS "CHN"
`China numeric` MEANS 156
`Japan alpha-2` MEANS "JP"
`Japan alpha-3` MEANS "JPN"
`Japan numeric` MEANS 392
`Singapore alpha-2` MEANS "SG"
`Singapore alpha-3` MEANS "SGP"
`Singapore numeric` MEANS 702
`India alpha-2` MEANS "IN"
`India alpha-3` MEANS "IND"
`India numeric` MEANS 356
`Brazil alpha-2` MEANS "BR"
`Brazil alpha-3` MEANS "BRA"
`Brazil numeric` MEANS 76
`Mexico alpha-2` MEANS "MX"
`Mexico alpha-3` MEANS "MEX"
`Mexico numeric` MEANS 484
`Switzerland alpha-2` MEANS "CH"
`Switzerland alpha-3` MEANS "CHE"
`Switzerland numeric` MEANS 756
`Netherlands alpha-2` MEANS "NL"
`Netherlands alpha-3` MEANS "NLD"
`Netherlands numeric` MEANS 528
`Sweden alpha-2` MEANS "SE"
`Sweden alpha-3` MEANS "SWE"
`Sweden numeric` MEANS 752
`New Zealand alpha-2` MEANS "NZ"
`New Zealand alpha-3` MEANS "NZL"
`New Zealand numeric` MEANS 554
`South Korea alpha-2` MEANS "KR"
`South Korea alpha-3` MEANS "KOR"
`South Korea numeric` MEANS 410
`Italy alpha-2` MEANS "IT"
`Italy alpha-3` MEANS "ITA"
`Italy numeric` MEANS 380
`Spain alpha-2` MEANS "ES"
`Spain alpha-3` MEANS "ESP"
`Spain numeric` MEANS 724
`Hong Kong alpha-2` MEANS "HK"
`Hong Kong alpha-3` MEANS "HKG"
`Hong Kong numeric` MEANS 344
§§ `Supranational Regions`
`European Union code` MEANS "EU"
`European Union name` MEANS "European Union"
`ASEAN code` MEANS "ASEAN"
`ASEAN name` MEANS "Association of Southeast Asian Nations"
`NAFTA code` MEANS "USMCA"
`NAFTA name` MEANS "United States-Mexico-Canada Agreement"
§§ `Common US State Codes - ISO 3166-2:US`
`California code` MEANS "US-CA"
`California name` MEANS "California"
`New York code` MEANS "US-NY"
`New York name` MEANS "New York"
`Texas code` MEANS "US-TX"
`Texas name` MEANS "Texas"
`Florida code` MEANS "US-FL"
`Florida name` MEANS "Florida"
`Illinois code` MEANS "US-IL"
`Illinois name` MEANS "Illinois"
`Pennsylvania code` MEANS "US-PA"
`Pennsylvania name` MEANS "Pennsylvania"
`Massachusetts code` MEANS "US-MA"
`Massachusetts name` MEANS "Massachusetts"
`Washington code` MEANS "US-WA"
`Washington name` MEANS "Washington"
`Delaware code` MEANS "US-DE"
`Delaware name` MEANS "Delaware"
§§ `Common Canadian Province Codes - ISO 3166-2:CA`
`Ontario code` MEANS "CA-ON"
`Ontario name` MEANS "Ontario"
`Quebec code` MEANS "CA-QC"
`Quebec name` MEANS "Quebec"
`British Columbia code` MEANS "CA-BC"
`British Columbia name` MEANS "British Columbia"
`Alberta code` MEANS "CA-AB"
`Alberta name` MEANS "Alberta"
§§ `Common UK Constituent Countries - ISO 3166-2:GB`
`England code` MEANS "GB-ENG"
`England name` MEANS "England"
`Scotland code` MEANS "GB-SCT"
`Scotland name` MEANS "Scotland"
`Wales code` MEANS "GB-WLS"
`Wales name` MEANS "Wales"
`Northern Ireland code` MEANS "GB-NIR"
`Northern Ireland name` MEANS "Northern Ireland"
§§ `Validation Functions`
GIVEN code IS A STRING
GIVETH A BOOLEAN
`is valid ISO 3166-1 alpha-2` MEANS
STRINGLENGTH code EQUALS 2
AND code EQUALS TOUPPER code
GIVEN code IS A STRING
GIVETH A BOOLEAN
`is valid ISO 3166-1 alpha-3` MEANS
STRINGLENGTH code EQUALS 3
AND code EQUALS TOUPPER code
GIVEN code IS A STRING
GIVETH A BOOLEAN
`is valid ISO 3166-2` MEANS
STRINGLENGTH code AT LEAST 4
AND SUBSTRING code 0 2 EQUALS TOUPPER (SUBSTRING code 0 2)
AND SUBSTRING code 2 1 EQUALS "-"
§§ `Country Name Lookup`
GIVEN code IS A STRING
GIVETH AN EITHER STRING STRING
`country name from alpha-2` MEANS
BRANCH
IF code EQUALS `United States alpha-2` THEN RIGHT "United States"
IF code EQUALS `United Kingdom alpha-2` THEN RIGHT "United Kingdom"
IF code EQUALS `Canada alpha-2` THEN RIGHT "Canada"
IF code EQUALS `Australia alpha-2` THEN RIGHT "Australia"
IF code EQUALS `Germany alpha-2` THEN RIGHT "Germany"
IF code EQUALS `France alpha-2` THEN RIGHT "France"
IF code EQUALS `China alpha-2` THEN RIGHT "China"
IF code EQUALS `Japan alpha-2` THEN RIGHT "Japan"
IF code EQUALS `Singapore alpha-2` THEN RIGHT "Singapore"
IF code EQUALS `India alpha-2` THEN RIGHT "India"
IF code EQUALS `Brazil alpha-2` THEN RIGHT "Brazil"
IF code EQUALS `Mexico alpha-2` THEN RIGHT "Mexico"
IF code EQUALS `Switzerland alpha-2` THEN RIGHT "Switzerland"
IF code EQUALS `Netherlands alpha-2` THEN RIGHT "Netherlands"
IF code EQUALS `Sweden alpha-2` THEN RIGHT "Sweden"
IF code EQUALS `New Zealand alpha-2` THEN RIGHT "New Zealand"
IF code EQUALS `South Korea alpha-2` THEN RIGHT "South Korea"
IF code EQUALS `Italy alpha-2` THEN RIGHT "Italy"
IF code EQUALS `Spain alpha-2` THEN RIGHT "Spain"
IF code EQUALS `Hong Kong alpha-2` THEN RIGHT "Hong Kong"
OTHERWISE LEFT (CONCAT "Unknown country code: ", code)
GIVEN code IS A STRING
GIVETH AN EITHER STRING STRING
`country name from alpha-3` MEANS
BRANCH
IF code EQUALS `United States alpha-3` THEN RIGHT "United States"
IF code EQUALS `United Kingdom alpha-3` THEN RIGHT "United Kingdom"
IF code EQUALS `Canada alpha-3` THEN RIGHT "Canada"
IF code EQUALS `Australia alpha-3` THEN RIGHT "Australia"
IF code EQUALS `Germany alpha-3` THEN RIGHT "Germany"
IF code EQUALS `France alpha-3` THEN RIGHT "France"
IF code EQUALS `China alpha-3` THEN RIGHT "China"
IF code EQUALS `Japan alpha-3` THEN RIGHT "Japan"
IF code EQUALS `Singapore alpha-3` THEN RIGHT "Singapore"
IF code EQUALS `India alpha-3` THEN RIGHT "India"
IF code EQUALS `Brazil alpha-3` THEN RIGHT "Brazil"
IF code EQUALS `Mexico alpha-3` THEN RIGHT "Mexico"
IF code EQUALS `Switzerland alpha-3` THEN RIGHT "Switzerland"
IF code EQUALS `Netherlands alpha-3` THEN RIGHT "Netherlands"
IF code EQUALS `Sweden alpha-3` THEN RIGHT "Sweden"
IF code EQUALS `New Zealand alpha-3` THEN RIGHT "New Zealand"
IF code EQUALS `South Korea alpha-3` THEN RIGHT "South Korea"
IF code EQUALS `Italy alpha-3` THEN RIGHT "Italy"
IF code EQUALS `Spain alpha-3` THEN RIGHT "Spain"
IF code EQUALS `Hong Kong alpha-3` THEN RIGHT "Hong Kong"
OTHERWISE LEFT (CONCAT "Unknown country code: ", code)
§§ `Code Conversion Functions`
GIVEN alpha2 IS A STRING
GIVETH AN EITHER STRING STRING
`alpha-2 to alpha-3` MEANS
BRANCH
IF alpha2 EQUALS `United States alpha-2` THEN RIGHT `United States alpha-3`
IF alpha2 EQUALS `United Kingdom alpha-2` THEN RIGHT `United Kingdom alpha-3`
IF alpha2 EQUALS `Canada alpha-2` THEN RIGHT `Canada alpha-3`
IF alpha2 EQUALS `Australia alpha-2` THEN RIGHT `Australia alpha-3`
IF alpha2 EQUALS `Germany alpha-2` THEN RIGHT `Germany alpha-3`
IF alpha2 EQUALS `France alpha-2` THEN RIGHT `France alpha-3`
IF alpha2 EQUALS `China alpha-2` THEN RIGHT `China alpha-3`
IF alpha2 EQUALS `Japan alpha-2` THEN RIGHT `Japan alpha-3`
IF alpha2 EQUALS `Singapore alpha-2` THEN RIGHT `Singapore alpha-3`
IF alpha2 EQUALS `India alpha-2` THEN RIGHT `India alpha-3`
IF alpha2 EQUALS `Brazil alpha-2` THEN RIGHT `Brazil alpha-3`
IF alpha2 EQUALS `Mexico alpha-2` THEN RIGHT `Mexico alpha-3`
IF alpha2 EQUALS `Switzerland alpha-2` THEN RIGHT `Switzerland alpha-3`
IF alpha2 EQUALS `Netherlands alpha-2` THEN RIGHT `Netherlands alpha-3`
IF alpha2 EQUALS `Sweden alpha-2` THEN RIGHT `Sweden alpha-3`
IF alpha2 EQUALS `New Zealand alpha-2` THEN RIGHT `New Zealand alpha-3`
IF alpha2 EQUALS `South Korea alpha-2` THEN RIGHT `South Korea alpha-3`
IF alpha2 EQUALS `Italy alpha-2` THEN RIGHT `Italy alpha-3`
IF alpha2 EQUALS `Spain alpha-2` THEN RIGHT `Spain alpha-3`
IF alpha2 EQUALS `Hong Kong alpha-2` THEN RIGHT `Hong Kong alpha-3`
OTHERWISE LEFT (CONCAT "Cannot convert unknown alpha-2 code: ", alpha2)
GIVEN alpha3 IS A STRING
GIVETH AN EITHER STRING STRING
`alpha-3 to alpha-2` MEANS
BRANCH
IF alpha3 EQUALS `United States alpha-3` THEN RIGHT `United States alpha-2`
IF alpha3 EQUALS `United Kingdom alpha-3` THEN RIGHT `United Kingdom alpha-2`
IF alpha3 EQUALS `Canada alpha-3` THEN RIGHT `Canada alpha-2`
IF alpha3 EQUALS `Australia alpha-3` THEN RIGHT `Australia alpha-2`
IF alpha3 EQUALS `Germany alpha-3` THEN RIGHT `Germany alpha-2`
IF alpha3 EQUALS `France alpha-3` THEN RIGHT `France alpha-2`
IF alpha3 EQUALS `China alpha-3` THEN RIGHT `China alpha-2`
IF alpha3 EQUALS `Japan alpha-3` THEN RIGHT `Japan alpha-2`
IF alpha3 EQUALS `Singapore alpha-3` THEN RIGHT `Singapore alpha-2`
IF alpha3 EQUALS `India alpha-3` THEN RIGHT `India alpha-2`
IF alpha3 EQUALS `Brazil alpha-3` THEN RIGHT `Brazil alpha-2`
IF alpha3 EQUALS `Mexico alpha-3` THEN RIGHT `Mexico alpha-2`
IF alpha3 EQUALS `Switzerland alpha-3` THEN RIGHT `Switzerland alpha-2`
IF alpha3 EQUALS `Netherlands alpha-3` THEN RIGHT `Netherlands alpha-2`
IF alpha3 EQUALS `Sweden alpha-3` THEN RIGHT `Sweden alpha-2`
IF alpha3 EQUALS `New Zealand alpha-3` THEN RIGHT `New Zealand alpha-2`
IF alpha3 EQUALS `South Korea alpha-3` THEN RIGHT `South Korea alpha-2`
IF alpha3 EQUALS `Italy alpha-3` THEN RIGHT `Italy alpha-2`
IF alpha3 EQUALS `Spain alpha-3` THEN RIGHT `Spain alpha-2`
IF alpha3 EQUALS `Hong Kong alpha-3` THEN RIGHT `Hong Kong alpha-2`
OTHERWISE LEFT (CONCAT "Cannot convert unknown alpha-3 code: ", alpha3)