Coverage Report

Created: 2026-09-14 07:15

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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
}