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