Serenity Operating System
at master 206 lines 5.7 kB view raw
1/* 2 * Copyright (c) 2021, Tim Flynn <trflynn89@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <LibUnicode/CurrencyCode.h> 8 9namespace Unicode { 10 11static auto const& ensure_currency_codes() 12{ 13 // https://www.iso.org/iso-4217-currency-codes.html 14 // https://www.six-group.com/dam/download/financial-information/data-center/iso-currrency/amendments/lists/list_one.xml 15 static HashMap<StringView, CurrencyCode> currency_codes { 16 { "AED"sv, { 2 } }, 17 { "AFN"sv, { 2 } }, 18 { "ALL"sv, { 2 } }, 19 { "AMD"sv, { 2 } }, 20 { "ANG"sv, { 2 } }, 21 { "AOA"sv, { 2 } }, 22 { "ARS"sv, { 2 } }, 23 { "AUD"sv, { 2 } }, 24 { "AWG"sv, { 2 } }, 25 { "AZN"sv, { 2 } }, 26 { "BAM"sv, { 2 } }, 27 { "BBD"sv, { 2 } }, 28 { "BDT"sv, { 2 } }, 29 { "BGN"sv, { 2 } }, 30 { "BHD"sv, { 3 } }, 31 { "BIF"sv, { 0 } }, 32 { "BMD"sv, { 2 } }, 33 { "BND"sv, { 2 } }, 34 { "BOB"sv, { 2 } }, 35 { "BOV"sv, { 2 } }, 36 { "BRL"sv, { 2 } }, 37 { "BSD"sv, { 2 } }, 38 { "BTN"sv, { 2 } }, 39 { "BWP"sv, { 2 } }, 40 { "BYN"sv, { 2 } }, 41 { "BZD"sv, { 2 } }, 42 { "CAD"sv, { 2 } }, 43 { "CDF"sv, { 2 } }, 44 { "CHE"sv, { 2 } }, 45 { "CHF"sv, { 2 } }, 46 { "CHW"sv, { 2 } }, 47 { "CLF"sv, { 4 } }, 48 { "CLP"sv, { 0 } }, 49 { "CNY"sv, { 2 } }, 50 { "COP"sv, { 2 } }, 51 { "COU"sv, { 2 } }, 52 { "CRC"sv, { 2 } }, 53 { "CUC"sv, { 2 } }, 54 { "CUP"sv, { 2 } }, 55 { "CVE"sv, { 2 } }, 56 { "CZK"sv, { 2 } }, 57 { "DJF"sv, { 0 } }, 58 { "DKK"sv, { 2 } }, 59 { "DOP"sv, { 2 } }, 60 { "DZD"sv, { 2 } }, 61 { "EGP"sv, { 2 } }, 62 { "ERN"sv, { 2 } }, 63 { "ETB"sv, { 2 } }, 64 { "EUR"sv, { 2 } }, 65 { "FJD"sv, { 2 } }, 66 { "FKP"sv, { 2 } }, 67 { "GBP"sv, { 2 } }, 68 { "GEL"sv, { 2 } }, 69 { "GHS"sv, { 2 } }, 70 { "GIP"sv, { 2 } }, 71 { "GMD"sv, { 2 } }, 72 { "GNF"sv, { 0 } }, 73 { "GTQ"sv, { 2 } }, 74 { "GYD"sv, { 2 } }, 75 { "HKD"sv, { 2 } }, 76 { "HNL"sv, { 2 } }, 77 { "HRK"sv, { 2 } }, 78 { "HTG"sv, { 2 } }, 79 { "HUF"sv, { 2 } }, 80 { "IDR"sv, { 2 } }, 81 { "ILS"sv, { 2 } }, 82 { "INR"sv, { 2 } }, 83 { "IQD"sv, { 3 } }, 84 { "IRR"sv, { 2 } }, 85 { "ISK"sv, { 0 } }, 86 { "JMD"sv, { 2 } }, 87 { "JOD"sv, { 3 } }, 88 { "JPY"sv, { 0 } }, 89 { "KES"sv, { 2 } }, 90 { "KGS"sv, { 2 } }, 91 { "KHR"sv, { 2 } }, 92 { "KMF"sv, { 0 } }, 93 { "KPW"sv, { 2 } }, 94 { "KRW"sv, { 0 } }, 95 { "KWD"sv, { 3 } }, 96 { "KYD"sv, { 2 } }, 97 { "KZT"sv, { 2 } }, 98 { "LAK"sv, { 2 } }, 99 { "LBP"sv, { 2 } }, 100 { "LKR"sv, { 2 } }, 101 { "LRD"sv, { 2 } }, 102 { "LSL"sv, { 2 } }, 103 { "LYD"sv, { 3 } }, 104 { "MAD"sv, { 2 } }, 105 { "MDL"sv, { 2 } }, 106 { "MGA"sv, { 2 } }, 107 { "MKD"sv, { 2 } }, 108 { "MMK"sv, { 2 } }, 109 { "MNT"sv, { 2 } }, 110 { "MOP"sv, { 2 } }, 111 { "MRU"sv, { 2 } }, 112 { "MUR"sv, { 2 } }, 113 { "MVR"sv, { 2 } }, 114 { "MWK"sv, { 2 } }, 115 { "MXN"sv, { 2 } }, 116 { "MXV"sv, { 2 } }, 117 { "MYR"sv, { 2 } }, 118 { "MZN"sv, { 2 } }, 119 { "NAD"sv, { 2 } }, 120 { "NGN"sv, { 2 } }, 121 { "NIO"sv, { 2 } }, 122 { "NOK"sv, { 2 } }, 123 { "NPR"sv, { 2 } }, 124 { "NZD"sv, { 2 } }, 125 { "OMR"sv, { 3 } }, 126 { "PAB"sv, { 2 } }, 127 { "PEN"sv, { 2 } }, 128 { "PGK"sv, { 2 } }, 129 { "PHP"sv, { 2 } }, 130 { "PKR"sv, { 2 } }, 131 { "PLN"sv, { 2 } }, 132 { "PYG"sv, { 0 } }, 133 { "QAR"sv, { 2 } }, 134 { "RON"sv, { 2 } }, 135 { "RSD"sv, { 2 } }, 136 { "RUB"sv, { 2 } }, 137 { "RWF"sv, { 0 } }, 138 { "SAR"sv, { 2 } }, 139 { "SBD"sv, { 2 } }, 140 { "SCR"sv, { 2 } }, 141 { "SDG"sv, { 2 } }, 142 { "SEK"sv, { 2 } }, 143 { "SGD"sv, { 2 } }, 144 { "SHP"sv, { 2 } }, 145 { "SLL"sv, { 2 } }, 146 { "SOS"sv, { 2 } }, 147 { "SRD"sv, { 2 } }, 148 { "SSP"sv, { 2 } }, 149 { "STN"sv, { 2 } }, 150 { "SVC"sv, { 2 } }, 151 { "SYP"sv, { 2 } }, 152 { "SZL"sv, { 2 } }, 153 { "THB"sv, { 2 } }, 154 { "TJS"sv, { 2 } }, 155 { "TMT"sv, { 2 } }, 156 { "TND"sv, { 3 } }, 157 { "TOP"sv, { 2 } }, 158 { "TRY"sv, { 2 } }, 159 { "TTD"sv, { 2 } }, 160 { "TWD"sv, { 2 } }, 161 { "TZS"sv, { 2 } }, 162 { "UAH"sv, { 2 } }, 163 { "UGX"sv, { 0 } }, 164 { "USD"sv, { 2 } }, 165 { "USN"sv, { 2 } }, 166 { "UYI"sv, { 0 } }, 167 { "UYU"sv, { 2 } }, 168 { "UYW"sv, { 4 } }, 169 { "UZS"sv, { 2 } }, 170 { "VES"sv, { 2 } }, 171 { "VND"sv, { 0 } }, 172 { "VUV"sv, { 0 } }, 173 { "WST"sv, { 2 } }, 174 { "XAF"sv, { 0 } }, 175 { "XAG"sv, { {} } }, 176 { "XAU"sv, { {} } }, 177 { "XBA"sv, { {} } }, 178 { "XBB"sv, { {} } }, 179 { "XBC"sv, { {} } }, 180 { "XBD"sv, { {} } }, 181 { "XCD"sv, { 2 } }, 182 { "XDR"sv, { {} } }, 183 { "XOF"sv, { 0 } }, 184 { "XPD"sv, { {} } }, 185 { "XPF"sv, { 0 } }, 186 { "XPT"sv, { {} } }, 187 { "XSU"sv, { {} } }, 188 { "XTS"sv, { {} } }, 189 { "XUA"sv, { {} } }, 190 { "XXX"sv, { {} } }, 191 { "YER"sv, { 2 } }, 192 { "ZAR"sv, { 2 } }, 193 { "ZMW"sv, { 2 } }, 194 { "ZWL"sv, { 2 } }, 195 }; 196 197 return currency_codes; 198} 199 200Optional<CurrencyCode> get_currency_code(StringView currency) 201{ 202 static auto const& currency_codes = ensure_currency_codes(); 203 return currency_codes.get(currency); 204} 205 206}