///|
fn registry() -> Array[CountrySpec] {
[
{
code: "AD",
length: 24,
bban_pattern: "4n4n12c",
bank: 4,
branch: 4,
account: 12,
},
{
code: "AE",
length: 23,
bban_pattern: "3n16n",
bank: 3,
branch: 0,
account: 16,
},
{
code: "AL",
length: 28,
bban_pattern: "8n16c",
bank: 8,
branch: 0,
account: 16,
},
{
code: "AT",
length: 20,
bban_pattern: "5n11n",
bank: 5,
branch: 0,
account: 11,
},
{
code: "AZ",
length: 28,
bban_pattern: "4n20c",
bank: 4,
branch: 0,
account: 20,
},
{
code: "BA",
length: 20,
bban_pattern: "3n3n8n2n",
bank: 3,
branch: 3,
account: 8,
},
{
code: "BE",
length: 16,
bban_pattern: "3n7n2n",
bank: 3,
branch: 0,
account: 7,
},
{
code: "BG",
length: 22,
bban_pattern: "4a4n2n8c",
bank: 4,
branch: 4,
account: 8,
},
{
code: "BH",
length: 22,
bban_pattern: "4a14c",
bank: 4,
branch: 0,
account: 14,
},
{
code: "BR",
length: 29,
bban_pattern: "8n5n10n1a1c",
bank: 8,
branch: 5,
account: 10,
},
{
code: "CH",
length: 21,
bban_pattern: "5n12c",
bank: 5,
branch: 0,
account: 12,
},
{
code: "CR",
length: 22,
bban_pattern: "4n14n",
bank: 4,
branch: 0,
account: 14,
},
{
code: "CY",
length: 28,
bban_pattern: "3n5n16c",
bank: 3,
branch: 5,
account: 16,
},
{
code: "CZ",
length: 24,
bban_pattern: "4n6n10n",
bank: 4,
branch: 6,
account: 10,
},
{
code: "DE",
length: 22,
bban_pattern: "8n10n",
bank: 8,
branch: 0,
account: 10,
},
{
code: "DK",
length: 18,
bban_pattern: "4n9n1n",
bank: 4,
branch: 0,
account: 9,
},
{
code: "DO",
length: 28,
bban_pattern: "4c20n",
bank: 4,
branch: 0,
account: 20,
},
{
code: "EE",
length: 20,
bban_pattern: "2n14n",
bank: 2,
branch: 0,
account: 14,
},
{
code: "EG",
length: 29,
bban_pattern: "4n4n17n",
bank: 4,
branch: 4,
account: 17,
},
{
code: "ES",
length: 24,
bban_pattern: "4n4n1n1n10n",
bank: 4,
branch: 4,
account: 10,
},
{
code: "FI",
length: 18,
bban_pattern: "6n7n1n",
bank: 6,
branch: 0,
account: 7,
},
{
code: "FO",
length: 18,
bban_pattern: "4n9n1n",
bank: 4,
branch: 0,
account: 9,
},
{
code: "FR",
length: 27,
bban_pattern: "5n5n11c2n",
bank: 5,
branch: 5,
account: 11,
},
{
code: "GB",
length: 22,
bban_pattern: "4a6n8n",
bank: 4,
branch: 6,
account: 8,
},
{
code: "GE",
length: 22,
bban_pattern: "2a16n",
bank: 2,
branch: 0,
account: 16,
},
{
code: "GI",
length: 23,
bban_pattern: "4a15c",
bank: 4,
branch: 0,
account: 15,
},
{
code: "GL",
length: 18,
bban_pattern: "4n9n1n",
bank: 4,
branch: 0,
account: 9,
},
{
code: "GR",
length: 27,
bban_pattern: "3n4n16c",
bank: 3,
branch: 4,
account: 16,
},
{
code: "GT",
length: 28,
bban_pattern: "4c20c",
bank: 4,
branch: 0,
account: 20,
},
{
code: "HR",
length: 21,
bban_pattern: "7n10n",
bank: 7,
branch: 0,
account: 10,
},
{
code: "HU",
length: 28,
bban_pattern: "3n4n1n15n1n",
bank: 3,
branch: 4,
account: 15,
},
{
code: "IE",
length: 22,
bban_pattern: "4a6n8n",
bank: 4,
branch: 6,
account: 8,
},
{
code: "IL",
length: 23,
bban_pattern: "3n3n13n",
bank: 3,
branch: 3,
account: 13,
},
{
code: "IQ",
length: 23,
bban_pattern: "4a3n12n",
bank: 4,
branch: 3,
account: 12,
},
{
code: "IS",
length: 26,
bban_pattern: "4n2n6n10n",
bank: 4,
branch: 2,
account: 10,
},
{
code: "IT",
length: 27,
bban_pattern: "1a5n5n12c",
bank: 5,
branch: 5,
account: 12,
},
{
code: "JO",
length: 30,
bban_pattern: "4a4n18c",
bank: 4,
branch: 4,
account: 18,
},
{
code: "KW",
length: 30,
bban_pattern: "4a22c",
bank: 4,
branch: 0,
account: 22,
},
{
code: "KZ",
length: 20,
bban_pattern: "3n13c",
bank: 3,
branch: 0,
account: 13,
},
{
code: "LB",
length: 28,
bban_pattern: "4n20c",
bank: 4,
branch: 0,
account: 20,
},
{
code: "LC",
length: 32,
bban_pattern: "4a24c",
bank: 4,
branch: 0,
account: 24,
},
{
code: "LI",
length: 21,
bban_pattern: "5n12c",
bank: 5,
branch: 0,
account: 12,
},
{
code: "LT",
length: 20,
bban_pattern: "5n11n",
bank: 5,
branch: 0,
account: 11,
},
{
code: "LU",
length: 20,
bban_pattern: "3n13c",
bank: 3,
branch: 0,
account: 13,
},
{
code: "LV",
length: 21,
bban_pattern: "4a13c",
bank: 4,
branch: 0,
account: 13,
},
{
code: "MC",
length: 27,
bban_pattern: "5n5n11c2n",
bank: 5,
branch: 5,
account: 11,
},
{
code: "MD",
length: 24,
bban_pattern: "2c18c",
bank: 2,
branch: 0,
account: 18,
},
{
code: "ME",
length: 22,
bban_pattern: "3n13n2n",
bank: 3,
branch: 0,
account: 13,
},
{
code: "MK",
length: 19,
bban_pattern: "3n10n2n",
bank: 3,
branch: 0,
account: 10,
},
{
code: "MT",
length: 31,
bban_pattern: "4a5n18c",
bank: 4,
branch: 5,
account: 18,
},
{
code: "MU",
length: 30,
bban_pattern: "4a2n2n12n3n3a",
bank: 4,
branch: 2,
account: 12,
},
{
code: "NL",
length: 18,
bban_pattern: "4a10n",
bank: 4,
branch: 0,
account: 10,
},
{
code: "NO",
length: 15,
bban_pattern: "4n6n1n",
bank: 4,
branch: 0,
account: 6,
},
{
code: "PK",
length: 24,
bban_pattern: "4a16c",
bank: 4,
branch: 0,
account: 16,
},
{
code: "PL",
length: 28,
bban_pattern: "8n16n",
bank: 8,
branch: 0,
account: 16,
},
{
code: "PS",
length: 29,
bban_pattern: "4a21c",
bank: 4,
branch: 0,
account: 21,
},
{
code: "PT",
length: 25,
bban_pattern: "4n4n11n2n",
bank: 4,
branch: 4,
account: 11,
},
{
code: "QA",
length: 29,
bban_pattern: "4a21c",
bank: 4,
branch: 0,
account: 21,
},
{
code: "RO",
length: 24,
bban_pattern: "4a16c",
bank: 4,
branch: 0,
account: 16,
},
{
code: "RS",
length: 22,
bban_pattern: "3n13n2n",
bank: 3,
branch: 0,
account: 13,
},
{
code: "SA",
length: 24,
bban_pattern: "2n18c",
bank: 2,
branch: 0,
account: 18,
},
{
code: "SC",
length: 31,
bban_pattern: "4a2n2n16n3a",
bank: 4,
branch: 2,
account: 16,
},
{
code: "SE",
length: 24,
bban_pattern: "3n16n1n",
bank: 3,
branch: 0,
account: 16,
},
{
code: "SI",
length: 19,
bban_pattern: "5n8n2n",
bank: 5,
branch: 0,
account: 8,
},
{
code: "SK",
length: 24,
bban_pattern: "4n6n10n",
bank: 4,
branch: 6,
account: 10,
},
{
code: "SM",
length: 27,
bban_pattern: "1a5n5n12c",
bank: 5,
branch: 5,
account: 12,
},
{
code: "TN",
length: 24,
bban_pattern: "2n3n13n2n",
bank: 2,
branch: 3,
account: 13,
},
{
code: "TR",
length: 26,
bban_pattern: "5n1c16c",
bank: 5,
branch: 0,
account: 16,
},
{
code: "UA",
length: 29,
bban_pattern: "6n19c",
bank: 6,
branch: 0,
account: 19,
},
{
code: "VA",
length: 22,
bban_pattern: "3n15n",
bank: 3,
branch: 0,
account: 15,
},
{
code: "VG",
length: 24,
bban_pattern: "4a16n",
bank: 4,
branch: 0,
account: 16,
},
{
code: "XK",
length: 20,
bban_pattern: "4n10n2n",
bank: 4,
branch: 0,
account: 10,
},
]
}
///|
pub fn country_spec(code : String) -> CountrySpec? {
let needle = code.to_upper()
for spec in registry() {
if spec.code == needle {
return Some(spec)
}
}
None
}
///|
pub fn registered_countries() -> Array[String] {
registry().map(fn(spec) { spec.code })
}