Packages

A ISO-4217 currency library for Gleam

Current section

Files

Jump to
dime src dime.gleam
Raw

src/dime.gleam

import gleam/result
import gleam/string
pub const aed = Currency(
"AED",
"784",
"United Arab Emirates Dirham",
"د.إ",
2,
)
pub const afn = Currency("AFN", "971", "Afghan Afghani", "؋", 2)
pub const all = Currency("ALL", "008", "Albanian Lek", "L", 2)
pub const amd = Currency("AMD", "051", "Armenian Dram", "֏", 2)
pub const ang = Currency("ANG", "532", "Netherlands Antillean Guilder", "ƒ", 2)
pub const aoa = Currency("AOA", "973", "Angolan Kwanza", "Kz", 2)
pub const ars = Currency("ARS", "032", "Argentine Peso", "$", 2)
pub const aud = Currency("AUD", "036", "Australian Dollar", "$", 2)
pub const awg = Currency("AWG", "533", "Aruban Florin", "ƒ", 2)
pub const azn = Currency("AZN", "944", "Azerbaijani Manat", "₼", 2)
pub const bam = Currency(
"BAM",
"977",
"Bosnia and Herzegovina Convertible Mark",
"KM",
2,
)
pub const bbd = Currency("BBD", "052", "Barbadian Dollar", "$", 2)
pub const bdt = Currency("BDT", "050", "Bangladeshi Taka", "৳", 2)
pub const bgn = Currency("BGN", "975", "Bulgarian Lev", "лв", 2)
pub const bhd = Currency("BHD", "048", "Bahraini Dinar", ".د.ب", 3)
pub const bif = Currency("BIF", "108", "Burundian Franc", "FBu", 0)
pub const bmd = Currency("BMD", "060", "Bermudian Dollar", "$", 2)
pub const bnd = Currency("BND", "096", "Brunei Dollar", "$", 2)
pub const bob = Currency("BOB", "068", "Bolivian Boliviano", "Bs", 2)
pub const brl = Currency("BRL", "986", "Brazilian Real", "R$", 2)
pub const bsd = Currency("BSD", "044", "Bahamian Dollar", "$", 2)
pub const btn = Currency("BTN", "064", "Bhutanese Ngultrum", "Nu.", 2)
pub const bwp = Currency("BWP", "072", "Botswana Pula", "P", 2)
pub const byn = Currency("BYN", "933", "Belarusian Ruble", "Br", 2)
pub const bzd = Currency("BZD", "084", "Belize Dollar", "$", 2)
pub const cad = Currency("CAD", "124", "Canadian Dollar", "$", 2)
pub const cdf = Currency("CDF", "976", "Congolese Franc", "FC", 2)
pub const chf = Currency("CHF", "756", "Swiss Franc", "CHF", 2)
pub const clp = Currency("CLP", "152", "Chilean Peso", "$", 0)
pub const cny = Currency("CNY", "156", "Chinese Yuan Renminbi", "¥", 2)
pub const cop = Currency("COP", "170", "Colombian Peso", "$", 2)
pub const crc = Currency("CRC", "188", "Costa Rican Colon", "₡", 2)
pub const cup = Currency("CUP", "192", "Cuban Peso", "$", 2)
pub const cuc = Currency("CUC", "931", "Peso Convertible", "$", 2)
pub const cve = Currency("CVE", "132", "Cabo Verde Escudo", "$", 2)
pub const czk = Currency("CZK", "203", "Czech Koruna", "Kč", 2)
pub const djf = Currency("DJF", "262", "Djibouti Franc", "Fdj", 0)
pub const dkk = Currency("DKK", "208", "Danish Krone", "kr", 2)
pub const dop = Currency("DOP", "214", "Dominican Peso", "$", 2)
pub const dzd = Currency("DZD", "012", "Algerian Dinar", "دج", 2)
pub const egp = Currency("EGP", "818", "Egyptian Pound", "£", 2)
pub const ern = Currency("ERN", "232", "Eritrean Nakfa", "Nfk", 2)
pub const etb = Currency("ETB", "230", "Ethiopian Birr", "Br", 2)
pub const eur = Currency("EUR", "978", "Euro", "€", 2)
pub const fjd = Currency("FJD", "242", "Fiji Dollar", "$", 2)
pub const fkp = Currency("FKP", "238", "Falkland Islands Pound", "£", 2)
pub const gbp = Currency("GBP", "826", "Pound Sterling", "£", 2)
pub const gel = Currency("GEL", "981", "Georgian Lari", "₾", 2)
pub const ghs = Currency("GHS", "936", "Ghana Cedi", "₵", 2)
pub const gip = Currency("GIP", "292", "Gibraltar Pound", "£", 2)
pub const gmd = Currency("GMD", "270", "Gambian Dalasi", "D", 2)
pub const gnf = Currency("GNF", "324", "Guinean Franc", "FG", 0)
pub const gtq = Currency("GTQ", "320", "Guatemalan Quetzal", "Q", 2)
pub const gyd = Currency("GYD", "328", "Guyana Dollar", "$", 2)
pub const hkd = Currency("HKD", "344", "Hong Kong Dollar", "$", 2)
pub const hnl = Currency("HNL", "340", "Hondurasi Lempira", "L", 2)
pub const hrk = Currency("HRK", "191", "Croatian Kuna", "kn", 2)
pub const htg = Currency("HTG", "332", "Haitian Gourde", "G", 2)
pub const huf = Currency("HUF", "348", "Hungarian Forint", "Ft", 2)
pub const idr = Currency("IDR", "360", "Indian Rupiah", "Rp", 2)
pub const ils = Currency("ILS", "376", "Israeli New Sheqel", "₪", 2)
pub const inr = Currency("INR", "356", "Indian Rupee", "₹", 2)
pub const iqd = Currency("IQD", "368", "Iraqi Dinar", "ع.د", 3)
pub const irr = Currency("IRR", "364", "Iranian Rial", "﷼", 2)
pub const isk = Currency("ISK", "352", "Icelandic Króna", "kr", 0)
pub const jmd = Currency("JMD", "388", "Jamaican Dollar", "$", 2)
pub const jod = Currency("JOD", "400", "Jordanian Dinar", "د.ا", 3)
pub const jpy = Currency("JPY", "392", "Japanese Yen", "¥", 0)
pub const kes = Currency("KES", "404", "Kenyan Shilling", "Sh", 2)
pub const kgs = Currency("KGS", "417", "Kyrgyzstani Som", "лв", 2)
pub const khr = Currency("KHR", "116", "Cambodian Riel", "៛", 2)
pub const kmf = Currency("KMF", "174", "Comorian Franc", "CF", 0)
pub const kpw = Currency("KPW", "408", "North Korean Won", "₩", 2)
pub const krw = Currency("KRW", "410", "South Korean Won", "₩", 0)
pub const kwd = Currency("KWD", "414", "Kuwaiti Dinar", "د.ك", 3)
pub const kyd = Currency("KYD", "136", "Cayman Islands Dollar", "$", 2)
pub const kzt = Currency("KZT", "398", "Kazakhstani Tenge", "₸", 2)
pub const lak = Currency("LAK", "418", "Lao Kip", "₭", 2)
pub const lbp = Currency("LBP", "422", "Lebanese Pound", "ل.ل", 2)
pub const lkr = Currency("LKR", "144", "Sri Lankan Rupee", "Rs", 2)
pub const lrd = Currency("LRD", "430", "Liberian Dollar", "$", 2)
pub const lsl = Currency("LSL", "426", "Loti", "L", 2)
pub const lyd = Currency("LYD", "434", "Libyan Dinar", "ل.د", 3)
pub const mad = Currency("MAD", "504", "Moroccan Dirham", "د.م.", 2)
pub const mdl = Currency("MDL", "498", "Moldovan Leu", "L", 2)
pub const mga = Currency("MGA", "969", "Malagasy Ariary", "Ar", 2)
pub const mkd = Currency("MKD", "807", "Macedonian Denar", "ден", 2)
pub const mmk = Currency("MMK", "104", "Myanmar Kyat", "K", 2)
pub const mnt = Currency("MNT", "496", "Mongolian Tögrög", "₮", 2)
pub const mop = Currency("MOP", "446", "Macanese Pataca", "P", 2)
pub const mru = Currency("MRU", "929", "Mauritanian Ouguiya", "UM", 2)
pub const mur = Currency("MUR", "480", "Mauritian Rupee", "₨", 2)
pub const mvr = Currency("MVR", "462", "Maldivian Rufiyaa", ".ރ", 2)
pub const mwk = Currency("MWK", "454", "Malawian Kwacha", "MK", 2)
pub const mxn = Currency("MXN", "484", "Mexican Peso", "$", 2)
pub const myr = Currency("MYR", "458", "Malaysian Ringgit", "RM", 2)
pub const mzn = Currency("MZN", "943", "Mozambican Metical", "MT", 2)
pub const nad = Currency("NAD", "516", "Namibian Dollar", "$", 2)
pub const ngn = Currency("NGN", "566", "Nigerian Naira", "₦", 2)
pub const nio = Currency("NIO", "558", "Nicaraguan Córdoba", "C$", 2)
pub const nok = Currency("NOK", "578", "Norwegian Krone", "kr", 2)
pub const npr = Currency("NPR", "524", "Nepalese Rupee", "₨", 2)
pub const nzd = Currency("NZD", "554", "New Zealand Dollar", "$", 2)
pub const omr = Currency("OMR", "512", "Omani Rial", "ر.ع.", 3)
pub const pab = Currency("PAB", "590", "Panamanian Balboa", "B/.", 2)
pub const pen = Currency("PEN", "604", "Peruvian Sol", "S/", 2)
pub const pgk = Currency("PGK", "598", "Papua New Guinean Kina", "K", 2)
pub const php = Currency("PHP", "608", "Philippine Peso", "₱", 2)
pub const pkr = Currency("PKR", "586", "Pakistani Rupee", "₨", 2)
pub const pln = Currency("PLN", "985", "Polish Złoty", "zł", 2)
pub const pyg = Currency("PYG", "600", "Paraguayan Guaraní", "₲", 0)
pub const qar = Currency("QAR", "634", "Qatari Riyal", "ر.ق", 2)
pub const ron = Currency("RON", "946", "Romanian Leu", "lei", 2)
pub const rsd = Currency("RSD", "941", "Serbian Dinar", "дин", 2)
pub const rub = Currency("RUB", "643", "Russian Ruble", "₽", 2)
pub const rwf = Currency("RWF", "646", "Rwandan Franc", "FRw", 0)
pub const sar = Currency("SAR", "682", "Saudi Riyal", "ر.س", 2)
pub const sbd = Currency("SBD", "090", "Solomon Islands Dollar", "$", 2)
pub const scr = Currency("SCR", "690", "Seychellois Rupee", "₨", 2)
pub const sdg = Currency("SDG", "938", "Sudanese Pound", "ج.س.", 2)
pub const sek = Currency("SEK", "752", "Swedish Krona", "kr", 2)
pub const sgd = Currency("SGD", "702", "Singapore Dollar", "$", 2)
pub const shp = Currency("SHP", "654", "Saint Helena Pound", "£", 2)
pub const sle = Currency("SLE", "925", "Sierra Leonean Leone", "Le", 2)
pub const sos = Currency("SOS", "706", "Somali Shilling", "Sh", 2)
pub const srd = Currency("SRD", "968", "Surinamese Dollar", "$", 2)
pub const ssp = Currency("SSP", "728", "South Sudanese Pound", "£", 2)
pub const stn = Currency(
"STN",
"930",
"São Tomé and Príncipe Dobra",
"Db",
2,
)
pub const svc = Currency("SVC", "222", "El Salvador Colon", "₡", 2)
pub const syp = Currency("SYP", "760", "Syrian Pound", "£", 2)
pub const szl = Currency("SZL", "748", "Swazi Lilangeni", "L", 2)
pub const thb = Currency("THB", "764", "Thai Baht", "฿", 2)
pub const tjs = Currency("TJS", "972", "Tajikistani Somoni", "ЅМ", 2)
pub const tmt = Currency("TMT", "934", "Turkmenistani New Manat", "m", 2)
pub const tnd = Currency("TND", "788", "Tunisian Dinar", "د.ت", 3)
pub const top = Currency("TOP", "776", "Tongan Paʻanga", "T$", 2)
pub const try = Currency("TRY", "949", "Turkish Lira", "₺", 2)
pub const ttd = Currency("TTD", "780", "Trinidad and Tobago Dollar", "$", 2)
pub const twd = Currency("TWD", "901", "New Taiwan Dollar", "$", 2)
pub const tzs = Currency("TZS", "834", "Tanzanian Shilling", "Sh", 2)
pub const uah = Currency("UAH", "980", "Ukrainian Hryvnia", "₴", 2)
pub const ugx = Currency("UGX", "800", "Ugandan Shilling", "Sh", 0)
pub const usd = Currency("USD", "840", "United States Dollar", "$", 2)
pub const uyu = Currency("UYU", "858", "Uruguayan Peso", "$U", 2)
pub const uyw = Currency("UYW", "927", "Unidad Previsional", "UP", 4)
pub const uzs = Currency("UZS", "860", "Uzbekistani So'm", "лв", 2)
pub const ved = Currency("VED", "926", "Venezuelan Bolívar", "Bs.", 2)
pub const ves = Currency("VES", "928", "Venezuelan Bolívar", "Bs.", 2)
pub const vnd = Currency("VND", "704", "Vietnamese Đồng", "₫", 0)
pub const vuv = Currency("VUV", "548", "Vanuatu Vatu", "VT", 0)
pub const wst = Currency("WST", "882", "Samoan Tālā", "T", 2)
pub const xaf = Currency("XAF", "950", "Central African CFA Franc", "F.CFA", 0)
pub const xcd = Currency("XCD", "951", "East Caribbean Dollar", "$", 2)
pub const xof = Currency("XOF", "952", "West African CFA Franc", "F.CFA", 0)
pub const xpf = Currency("XPF", "953", "CFP Franc", "₣", 0)
pub const yer = Currency("YER", "886", "Yemeni Rial", "﷼", 2)
pub const zar = Currency("ZAR", "710", "South African Rand", "R", 2)
pub const zmw = Currency("ZMW", "967", "Zambian Kwacha", "ZK", 2)
pub const zwg = Currency("ZWG", "924", "Zimbabwean Gold", "ZiG", 2)
/// A list of all the currencies known to this library.
///
const all_currencies = [
aed, afn, all, amd, ang, aoa, ars, aud, awg, azn, bam, bbd, bdt, bgn, bhd, bif,
bmd, bnd, bob, brl, bsd, btn, bwp, byn, bzd, cad, cdf, chf, clp, cny, cop, crc,
cup, cuc, cve, czk, djf, dkk, dop, dzd, egp, ern, etb, eur, fjd, fkp, gbp, gel,
ghs, gip, gmd, gnf, gtq, gyd, hkd, hnl, hrk, htg, huf, idr, ils, inr, iqd, irr,
isk, jmd, jod, jpy, kes, kgs, khr, kmf, kpw, krw, kwd, kyd, kzt, lak, lbp, lkr,
lrd, lsl, lyd, mad, mdl, mga, mkd, mmk, mnt, mop, mru, mur, mvr, mwk, mxn, myr,
mzn, nad, ngn, nio, nok, npr, nzd, omr, pab, pen, pgk, php, pkr, pln, pyg, qar,
ron, rsd, rub, rwf, sar, sbd, scr, sdg, sek, sgd, shp, sle, sos, srd, ssp, stn,
svc, syp, szl, thb, tjs, tmt, tnd, top, try, ttd, twd, tzs, uah, ugx, usd, uyu,
uyw, uzs, ved, ves, vnd, vuv, wst, xaf, xcd, xof, xpf, yer, zar, zmw, zwg,
]
pub opaque type Currency {
Currency(
// alpha code
String,
// numeric code
String,
// display name
String,
// symbol
String,
// minor units
Int,
)
}
/// Types of errors that can be encountered when parsing
/// a currency from it's code (alpha or numeric).
///
pub type CurrencyCodeError {
InvalidFormat
UnrecognizedCode
}
/// Get the 3 character alphabetic code for the currency.
///
pub fn alpha_code(currency: Currency) -> String {
let Currency(alpha_code, ..) = currency
alpha_code
}
/// Get the 3 character numeric code for the currency.
///
pub fn numeric_code(currency: Currency) -> String {
let Currency(_, numeric_code, ..) = currency
numeric_code
}
/// Get the display name of the currency in English.
///
pub fn display_name(currency: Currency) -> String {
let Currency(_, _, display_name, ..) = currency
display_name
}
/// Get the graphical symbol used as a shorthand
/// representation of the specific currency unit.
///
pub fn symbol(currency: Currency) -> String {
let Currency(_, _, _, symbol, ..) = currency
symbol
}
/// The decimal relationship between the currency and
/// it's minor unit, e.g. euro and euro cent.
///
/// 1, 2 and 3 signify a ratio of 10:1, 100:1 and 1000:1
/// respectively.
///
pub fn minor_units(currency: Currency) -> Int {
let Currency(_, _, _, _, minor_units, ..) = currency
minor_units
}
/// Retrieve the list of all the currencies known to this library.
///
pub fn known_currencies() -> List(Currency) {
all_currencies
}
/// Try and retrieve a currency by it's 3 character alphabetic code.
///
pub fn from_alpha_code(
currency_code: String,
) -> Result(Currency, CurrencyCodeError) {
validate_length(currency_code)
|> result.try(parse_alpha_code)
}
fn parse_alpha_code(
currency_code: String,
) -> Result(Currency, CurrencyCodeError) {
case string.uppercase(currency_code) {
"AED" -> Ok(aed)
"AFN" -> Ok(afn)
"ALL" -> Ok(all)
"AMD" -> Ok(amd)
"ANG" -> Ok(ang)
"AOA" -> Ok(aoa)
"ARS" -> Ok(ars)
"AUD" -> Ok(aud)
"AWG" -> Ok(awg)
"AZN" -> Ok(azn)
"BAM" -> Ok(bam)
"BBD" -> Ok(bbd)
"BDT" -> Ok(bdt)
"BGN" -> Ok(bgn)
"BHD" -> Ok(bhd)
"BIF" -> Ok(bif)
"BMD" -> Ok(bmd)
"BND" -> Ok(bnd)
"BOB" -> Ok(bob)
"BRL" -> Ok(brl)
"BSD" -> Ok(bsd)
"BTN" -> Ok(btn)
"BWP" -> Ok(bwp)
"BYN" -> Ok(byn)
"BZD" -> Ok(bzd)
"CAD" -> Ok(cad)
"CDF" -> Ok(cdf)
"CHF" -> Ok(chf)
"CLP" -> Ok(clp)
"CNY" -> Ok(cny)
"COP" -> Ok(cop)
"CRC" -> Ok(crc)
"CUP" -> Ok(cup)
"CUC" -> Ok(cuc)
"CVE" -> Ok(cve)
"CZK" -> Ok(czk)
"DJF" -> Ok(djf)
"DKK" -> Ok(dkk)
"DOP" -> Ok(dop)
"DZD" -> Ok(dzd)
"EGP" -> Ok(egp)
"ERN" -> Ok(ern)
"ETB" -> Ok(etb)
"EUR" -> Ok(eur)
"FJD" -> Ok(fjd)
"FKP" -> Ok(fkp)
"GBP" -> Ok(gbp)
"GEL" -> Ok(gel)
"GHS" -> Ok(ghs)
"GIP" -> Ok(gip)
"GMD" -> Ok(gmd)
"GNF" -> Ok(gnf)
"GTQ" -> Ok(gtq)
"GYD" -> Ok(gyd)
"HKD" -> Ok(hkd)
"HNL" -> Ok(hnl)
"HRK" -> Ok(hrk)
"HTG" -> Ok(htg)
"HUF" -> Ok(huf)
"IDR" -> Ok(idr)
"ILS" -> Ok(ils)
"INR" -> Ok(inr)
"IQD" -> Ok(iqd)
"IRR" -> Ok(irr)
"ISK" -> Ok(isk)
"JMD" -> Ok(jmd)
"JPY" -> Ok(jpy)
"JOD" -> Ok(jod)
"KES" -> Ok(kes)
"KGS" -> Ok(kgs)
"KHR" -> Ok(khr)
"KMF" -> Ok(kmf)
"KPW" -> Ok(kpw)
"KRW" -> Ok(krw)
"KWD" -> Ok(kwd)
"KYD" -> Ok(kyd)
"KZT" -> Ok(kzt)
"LAK" -> Ok(lak)
"LBP" -> Ok(lbp)
"LKR" -> Ok(lkr)
"LRD" -> Ok(lrd)
"LSL" -> Ok(lsl)
"LYD" -> Ok(lyd)
"MAD" -> Ok(mad)
"MDL" -> Ok(mdl)
"MGA" -> Ok(mga)
"MKD" -> Ok(mkd)
"MMK" -> Ok(mmk)
"MNT" -> Ok(mnt)
"MOP" -> Ok(mop)
"MRU" -> Ok(mru)
"MUR" -> Ok(mur)
"MVR" -> Ok(mvr)
"MWK" -> Ok(mwk)
"MXN" -> Ok(mxn)
"MYR" -> Ok(myr)
"MZN" -> Ok(mzn)
"NAD" -> Ok(nad)
"NPR" -> Ok(npr)
"NGN" -> Ok(ngn)
"NIO" -> Ok(nio)
"NOK" -> Ok(nok)
"NZD" -> Ok(nzd)
"OMR" -> Ok(omr)
"PKR" -> Ok(pkr)
"PAB" -> Ok(pab)
"PGK" -> Ok(pgk)
"PYG" -> Ok(pyg)
"PEN" -> Ok(pen)
"PHP" -> Ok(php)
"PLN" -> Ok(pln)
"QAR" -> Ok(qar)
"RON" -> Ok(ron)
"RSD" -> Ok(rsd)
"RUB" -> Ok(rub)
"RWF" -> Ok(rwf)
"SHP" -> Ok(shp)
"SAR" -> Ok(sar)
"SBD" -> Ok(sbd)
"SCR" -> Ok(scr)
"SLE" -> Ok(sle)
"SOS" -> Ok(sos)
"SSP" -> Ok(ssp)
"SDG" -> Ok(sdg)
"SRD" -> Ok(srd)
"SEK" -> Ok(sek)
"SGD" -> Ok(sgd)
"STN" -> Ok(stn)
"SVC" -> Ok(svc)
"SYP" -> Ok(syp)
"SZL" -> Ok(szl)
"THB" -> Ok(thb)
"TJS" -> Ok(tjs)
"TMT" -> Ok(tmt)
"TZS" -> Ok(tzs)
"TOP" -> Ok(top)
"TRY" -> Ok(try)
"TTD" -> Ok(ttd)
"TND" -> Ok(tnd)
"TWD" -> Ok(twd)
"UAH" -> Ok(uah)
"UGX" -> Ok(ugx)
"USD" -> Ok(usd)
"UYU" -> Ok(uyu)
"UYW" -> Ok(uyw)
"UZS" -> Ok(uzs)
"VUV" -> Ok(vuv)
"VED" -> Ok(ved)
"VES" -> Ok(ves)
"VND" -> Ok(vnd)
"WST" -> Ok(wst)
"XAF" -> Ok(xaf)
"XCD" -> Ok(xcd)
"XOF" -> Ok(xof)
"XPF" -> Ok(xpf)
"YER" -> Ok(yer)
"ZAR" -> Ok(zar)
"ZMW" -> Ok(zmw)
"ZWG" -> Ok(zwg)
_ -> Error(UnrecognizedCode)
}
}
/// Try and retrieve a currency by it's 3 character numeric code.
///
pub fn from_numeric_code(
currency_code: String,
) -> Result(Currency, CurrencyCodeError) {
validate_length(currency_code)
|> result.try(parse_numeric_code)
}
fn parse_numeric_code(
currency_code: String,
) -> Result(Currency, CurrencyCodeError) {
case currency_code {
"784" -> Ok(aed)
"971" -> Ok(afn)
"008" -> Ok(all)
"051" -> Ok(amd)
"532" -> Ok(ang)
"973" -> Ok(aoa)
"032" -> Ok(ars)
"036" -> Ok(aud)
"533" -> Ok(awg)
"944" -> Ok(azn)
"977" -> Ok(bam)
"052" -> Ok(bbd)
"050" -> Ok(bdt)
"975" -> Ok(bgn)
"048" -> Ok(bhd)
"108" -> Ok(bif)
"060" -> Ok(bmd)
"096" -> Ok(bnd)
"068" -> Ok(bob)
"986" -> Ok(brl)
"044" -> Ok(bsd)
"064" -> Ok(btn)
"072" -> Ok(bwp)
"933" -> Ok(byn)
"084" -> Ok(bzd)
"124" -> Ok(cad)
"976" -> Ok(cdf)
"756" -> Ok(chf)
"152" -> Ok(clp)
"156" -> Ok(cny)
"170" -> Ok(cop)
"188" -> Ok(crc)
"931" -> Ok(cuc)
"192" -> Ok(cup)
"132" -> Ok(cve)
"203" -> Ok(czk)
"262" -> Ok(djf)
"208" -> Ok(dkk)
"214" -> Ok(dop)
"012" -> Ok(dzd)
"818" -> Ok(egp)
"232" -> Ok(ern)
"230" -> Ok(etb)
"978" -> Ok(eur)
"242" -> Ok(fjd)
"238" -> Ok(fkp)
"826" -> Ok(gbp)
"981" -> Ok(gel)
"936" -> Ok(ghs)
"292" -> Ok(gip)
"270" -> Ok(gmd)
"324" -> Ok(gnf)
"320" -> Ok(gtq)
"328" -> Ok(gyd)
"344" -> Ok(hkd)
"340" -> Ok(hnl)
"191" -> Ok(hrk)
"332" -> Ok(htg)
"348" -> Ok(huf)
"360" -> Ok(idr)
"376" -> Ok(ils)
"356" -> Ok(inr)
"368" -> Ok(iqd)
"364" -> Ok(irr)
"352" -> Ok(isk)
"388" -> Ok(jmd)
"392" -> Ok(jpy)
"400" -> Ok(jod)
"404" -> Ok(kes)
"417" -> Ok(kgs)
"116" -> Ok(khr)
"174" -> Ok(kmf)
"408" -> Ok(kpw)
"410" -> Ok(krw)
"414" -> Ok(kwd)
"136" -> Ok(kyd)
"398" -> Ok(kzt)
"418" -> Ok(lak)
"422" -> Ok(lbp)
"144" -> Ok(lkr)
"430" -> Ok(lrd)
"426" -> Ok(lsl)
"434" -> Ok(lyd)
"504" -> Ok(mad)
"498" -> Ok(mdl)
"969" -> Ok(mga)
"807" -> Ok(mkd)
"104" -> Ok(mmk)
"496" -> Ok(mnt)
"446" -> Ok(mop)
"929" -> Ok(mru)
"480" -> Ok(mur)
"462" -> Ok(mvr)
"454" -> Ok(mwk)
"484" -> Ok(mxn)
"979" -> Ok(mxn)
"458" -> Ok(myr)
"943" -> Ok(mzn)
"516" -> Ok(nad)
"524" -> Ok(npr)
"566" -> Ok(ngn)
"558" -> Ok(nio)
"578" -> Ok(nok)
"554" -> Ok(nzd)
"512" -> Ok(omr)
"586" -> Ok(pkr)
"590" -> Ok(pab)
"598" -> Ok(pgk)
"600" -> Ok(pyg)
"604" -> Ok(pen)
"608" -> Ok(php)
"985" -> Ok(pln)
"634" -> Ok(qar)
"946" -> Ok(ron)
"941" -> Ok(rsd)
"643" -> Ok(rub)
"646" -> Ok(rwf)
"654" -> Ok(shp)
"682" -> Ok(sar)
"090" -> Ok(sbd)
"690" -> Ok(scr)
"925" -> Ok(sle)
"706" -> Ok(sos)
"728" -> Ok(ssp)
"938" -> Ok(sdg)
"968" -> Ok(srd)
"752" -> Ok(sek)
"702" -> Ok(sgd)
"930" -> Ok(stn)
"222" -> Ok(svc)
"760" -> Ok(syp)
"748" -> Ok(szl)
"764" -> Ok(thb)
"972" -> Ok(tjs)
"934" -> Ok(tmt)
"776" -> Ok(top)
"949" -> Ok(try)
"780" -> Ok(ttd)
"788" -> Ok(tnd)
"901" -> Ok(twd)
"834" -> Ok(tzs)
"980" -> Ok(uah)
"800" -> Ok(ugx)
"840" -> Ok(usd)
"858" -> Ok(uyu)
"927" -> Ok(uyw)
"860" -> Ok(uzs)
"548" -> Ok(vuv)
"926" -> Ok(ved)
"928" -> Ok(ves)
"704" -> Ok(vnd)
"882" -> Ok(wst)
"950" -> Ok(xaf)
"951" -> Ok(xcd)
"952" -> Ok(xof)
"953" -> Ok(xpf)
"886" -> Ok(yer)
"710" -> Ok(zar)
"967" -> Ok(zmw)
"924" -> Ok(zwg)
_ -> Error(UnrecognizedCode)
}
}
fn validate_length(input: String) -> Result(String, CurrencyCodeError) {
case string.length(input) {
3 -> Ok(input)
_ -> Error(InvalidFormat)
}
}