ladybird/Userland/Libraries/LibUnicode/CurrencyCode.cpp
Timothy Flynn e6334cb856 LibUnicode: Add some data related to currency codes
This data is published under ISO-4217 as an XML file. Since we can't
parse XML files yet, and the data isn't very large, it was translated to
C++ manually here.
2021-09-11 11:05:50 +01:00

206 lines
5.6 KiB
C++

/*
* Copyright (c) 2021, Tim Flynn <trflynn89@pm.me>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibUnicode/CurrencyCode.h>
namespace Unicode {
static auto const& ensure_currency_codes()
{
// https://www.iso.org/iso-4217-currency-codes.html
// https://www.six-group.com/dam/download/financial-information/data-center/iso-currrency/amendments/lists/list_one.xml
static HashMap<StringView, CurrencyCode> currency_codes {
{ "AED"sv, { 2 } },
{ "AFN"sv, { 2 } },
{ "ALL"sv, { 2 } },
{ "AMD"sv, { 2 } },
{ "ANG"sv, { 2 } },
{ "AOA"sv, { 2 } },
{ "ARS"sv, { 2 } },
{ "AUD"sv, { 2 } },
{ "AWG"sv, { 2 } },
{ "AZN"sv, { 2 } },
{ "BAM"sv, { 2 } },
{ "BBD"sv, { 2 } },
{ "BDT"sv, { 2 } },
{ "BGN"sv, { 2 } },
{ "BHD"sv, { 3 } },
{ "BIF"sv, { 0 } },
{ "BMD"sv, { 2 } },
{ "BND"sv, { 2 } },
{ "BOB"sv, { 2 } },
{ "BOV"sv, { 2 } },
{ "BRL"sv, { 2 } },
{ "BSD"sv, { 2 } },
{ "BTN"sv, { 2 } },
{ "BWP"sv, { 2 } },
{ "BYN"sv, { 2 } },
{ "BZD"sv, { 2 } },
{ "CAD"sv, { 2 } },
{ "CDF"sv, { 2 } },
{ "CHE"sv, { 2 } },
{ "CHF"sv, { 2 } },
{ "CHW"sv, { 2 } },
{ "CLF"sv, { 4 } },
{ "CLP"sv, { 0 } },
{ "CNY"sv, { 2 } },
{ "COP"sv, { 2 } },
{ "COU"sv, { 2 } },
{ "CRC"sv, { 2 } },
{ "CUC"sv, { 2 } },
{ "CUP"sv, { 2 } },
{ "CVE"sv, { 2 } },
{ "CZK"sv, { 2 } },
{ "DJF"sv, { 0 } },
{ "DKK"sv, { 2 } },
{ "DOP"sv, { 2 } },
{ "DZD"sv, { 2 } },
{ "EGP"sv, { 2 } },
{ "ERN"sv, { 2 } },
{ "ETB"sv, { 2 } },
{ "EUR"sv, { 2 } },
{ "FJD"sv, { 2 } },
{ "FKP"sv, { 2 } },
{ "GBP"sv, { 2 } },
{ "GEL"sv, { 2 } },
{ "GHS"sv, { 2 } },
{ "GIP"sv, { 2 } },
{ "GMD"sv, { 2 } },
{ "GNF"sv, { 0 } },
{ "GTQ"sv, { 2 } },
{ "GYD"sv, { 2 } },
{ "HKD"sv, { 2 } },
{ "HNL"sv, { 2 } },
{ "HRK"sv, { 2 } },
{ "HTG"sv, { 2 } },
{ "HUF"sv, { 2 } },
{ "IDR"sv, { 2 } },
{ "ILS"sv, { 2 } },
{ "INR"sv, { 2 } },
{ "IQD"sv, { 3 } },
{ "IRR"sv, { 2 } },
{ "ISK"sv, { 0 } },
{ "JMD"sv, { 2 } },
{ "JOD"sv, { 3 } },
{ "JPY"sv, { 0 } },
{ "KES"sv, { 2 } },
{ "KGS"sv, { 2 } },
{ "KHR"sv, { 2 } },
{ "KMF"sv, { 0 } },
{ "KPW"sv, { 2 } },
{ "KRW"sv, { 0 } },
{ "KWD"sv, { 3 } },
{ "KYD"sv, { 2 } },
{ "KZT"sv, { 2 } },
{ "LAK"sv, { 2 } },
{ "LBP"sv, { 2 } },
{ "LKR"sv, { 2 } },
{ "LRD"sv, { 2 } },
{ "LSL"sv, { 2 } },
{ "LYD"sv, { 3 } },
{ "MAD"sv, { 2 } },
{ "MDL"sv, { 2 } },
{ "MGA"sv, { 2 } },
{ "MKD"sv, { 2 } },
{ "MMK"sv, { 2 } },
{ "MNT"sv, { 2 } },
{ "MOP"sv, { 2 } },
{ "MRU"sv, { 2 } },
{ "MUR"sv, { 2 } },
{ "MVR"sv, { 2 } },
{ "MWK"sv, { 2 } },
{ "MXN"sv, { 2 } },
{ "MXV"sv, { 2 } },
{ "MYR"sv, { 2 } },
{ "MZN"sv, { 2 } },
{ "NAD"sv, { 2 } },
{ "NGN"sv, { 2 } },
{ "NIO"sv, { 2 } },
{ "NOK"sv, { 2 } },
{ "NPR"sv, { 2 } },
{ "NZD"sv, { 2 } },
{ "OMR"sv, { 3 } },
{ "PAB"sv, { 2 } },
{ "PEN"sv, { 2 } },
{ "PGK"sv, { 2 } },
{ "PHP"sv, { 2 } },
{ "PKR"sv, { 2 } },
{ "PLN"sv, { 2 } },
{ "PYG"sv, { 0 } },
{ "QAR"sv, { 2 } },
{ "RON"sv, { 2 } },
{ "RSD"sv, { 2 } },
{ "RUB"sv, { 2 } },
{ "RWF"sv, { 0 } },
{ "SAR"sv, { 2 } },
{ "SBD"sv, { 2 } },
{ "SCR"sv, { 2 } },
{ "SDG"sv, { 2 } },
{ "SEK"sv, { 2 } },
{ "SGD"sv, { 2 } },
{ "SHP"sv, { 2 } },
{ "SLL"sv, { 2 } },
{ "SOS"sv, { 2 } },
{ "SRD"sv, { 2 } },
{ "SSP"sv, { 2 } },
{ "STN"sv, { 2 } },
{ "SVC"sv, { 2 } },
{ "SYP"sv, { 2 } },
{ "SZL"sv, { 2 } },
{ "THB"sv, { 2 } },
{ "TJS"sv, { 2 } },
{ "TMT"sv, { 2 } },
{ "TND"sv, { 3 } },
{ "TOP"sv, { 2 } },
{ "TRY"sv, { 2 } },
{ "TTD"sv, { 2 } },
{ "TWD"sv, { 2 } },
{ "TZS"sv, { 2 } },
{ "UAH"sv, { 2 } },
{ "UGX"sv, { 0 } },
{ "USD"sv, { 2 } },
{ "USN"sv, { 2 } },
{ "UYI"sv, { 0 } },
{ "UYU"sv, { 2 } },
{ "UYW"sv, { 4 } },
{ "UZS"sv, { 2 } },
{ "VES"sv, { 2 } },
{ "VND"sv, { 0 } },
{ "VUV"sv, { 0 } },
{ "WST"sv, { 2 } },
{ "XAF"sv, { 0 } },
{ "XAG"sv, { {} } },
{ "XAU"sv, { {} } },
{ "XBA"sv, { {} } },
{ "XBB"sv, { {} } },
{ "XBC"sv, { {} } },
{ "XBD"sv, { {} } },
{ "XCD"sv, { 2 } },
{ "XDR"sv, { {} } },
{ "XOF"sv, { 0 } },
{ "XPD"sv, { {} } },
{ "XPF"sv, { 0 } },
{ "XPT"sv, { {} } },
{ "XSU"sv, { {} } },
{ "XTS"sv, { {} } },
{ "XUA"sv, { {} } },
{ "XXX"sv, { {} } },
{ "YER"sv, { 2 } },
{ "ZAR"sv, { 2 } },
{ "ZMW"sv, { 2 } },
{ "ZWL"sv, { 2 } },
};
return currency_codes;
}
Optional<CurrencyCode> get_currency_code(StringView currency)
{
static auto const& currency_codes = ensure_currency_codes();
return currency_codes.get(currency);
}
}