Skip to content

Commit d496344

Browse files
authored
Merge pull request #533 from woocommerce/issue/312-custom-currency
Currency Formatting - Mark I
2 parents 744668f + 018e58d commit d496344

File tree

5 files changed

+510
-1
lines changed

5 files changed

+510
-1
lines changed
Lines changed: 344 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,344 @@
1+
import Foundation
2+
3+
struct Money {
4+
enum Currency: String {
5+
case AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BRL, BSD, BTC, BTN, BWP, BYR, BYN, BZD, CAD, CDF, CHF, CLP, CNY, COP, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GGP, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, IMP, INR, IQD, IRR, IRT, ISK, JEP, 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, MRO, MUR, MVR, MWK, MXN, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PRB, PYG, QAR, RMB, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, SSP, STD, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEF, VND, VUV, WST, XAF, XCD, XOF, XPF, YER, ZAR, ZMW
6+
}
7+
8+
var amount: NSDecimalNumber
9+
10+
let currency: Currency
11+
12+
var symbol: String {
13+
// HTML entities and currency codes pulled from WC:
14+
// https://docs.woocommerce.com/wc-apidocs/source-function-get_woocommerce_currency.html#473
15+
switch currency {
16+
case .AED:
17+
return "د.إ".strippedHTML
18+
case .AFN:
19+
return "؋".strippedHTML
20+
case .ALL:
21+
return "L".strippedHTML
22+
case .AMD:
23+
return "AMD".strippedHTML
24+
case .ANG:
25+
return "ƒ".strippedHTML
26+
case .AOA:
27+
return "Kz".strippedHTML
28+
case .ARS:
29+
return "$".strippedHTML
30+
case .AUD:
31+
return "$".strippedHTML
32+
case .AWG:
33+
return "Afl.".strippedHTML
34+
case .AZN:
35+
return "AZN".strippedHTML
36+
case .BAM:
37+
return "KM".strippedHTML
38+
case .BBD:
39+
return "$".strippedHTML
40+
case .BDT:
41+
return "৳ ".strippedHTML
42+
case .BGN:
43+
return "лв.".strippedHTML
44+
case .BHD:
45+
return ".د.ب".strippedHTML
46+
case .BIF:
47+
return "Fr".strippedHTML
48+
case .BMD:
49+
return "$".strippedHTML
50+
case .BND:
51+
return "$".strippedHTML
52+
case .BOB:
53+
return "Bs.".strippedHTML
54+
case .BRL:
55+
return "R$".strippedHTML
56+
case .BSD:
57+
return "$".strippedHTML
58+
case .BTC:
59+
return "฿".strippedHTML
60+
case .BTN:
61+
return "Nu.".strippedHTML
62+
case .BWP:
63+
return "P".strippedHTML
64+
case .BYR:
65+
return "Br".strippedHTML
66+
case .BYN:
67+
return "Br".strippedHTML
68+
case .BZD:
69+
return "$".strippedHTML
70+
case .CAD:
71+
return "$".strippedHTML
72+
case .CDF:
73+
return "Fr".strippedHTML
74+
case .CHF:
75+
return "CHF".strippedHTML
76+
case .CLP:
77+
return "$".strippedHTML
78+
case .CNY:
79+
return "¥".strippedHTML
80+
case .COP:
81+
return "$".strippedHTML
82+
case .CRC:
83+
return "₡".strippedHTML
84+
case .CUC:
85+
return "$".strippedHTML
86+
case .CUP:
87+
return "$".strippedHTML
88+
case .CVE:
89+
return "$".strippedHTML
90+
case .CZK:
91+
return "Kč".strippedHTML
92+
case .DJF:
93+
return "Fr".strippedHTML
94+
case .DKK:
95+
return "DKK".strippedHTML
96+
case .DOP:
97+
return "RD$".strippedHTML
98+
case .DZD:
99+
return "د.ج".strippedHTML
100+
case .EGP:
101+
return "EGP".strippedHTML
102+
case .ERN:
103+
return "Nfk".strippedHTML
104+
case .ETB:
105+
return "Br".strippedHTML
106+
case .EUR:
107+
return "€".strippedHTML
108+
case .FJD:
109+
return "$".strippedHTML
110+
case .FKP:
111+
return "£".strippedHTML
112+
case .GBP:
113+
return "£".strippedHTML
114+
case .GEL:
115+
return "ლ".strippedHTML
116+
case .GGP:
117+
return "£".strippedHTML
118+
case .GHS:
119+
return "₵".strippedHTML
120+
case .GIP:
121+
return "£".strippedHTML
122+
case .GMD:
123+
return "D".strippedHTML
124+
case .GNF:
125+
return "Fr".strippedHTML
126+
case .GTQ:
127+
return "Q".strippedHTML
128+
case .GYD:
129+
return "$".strippedHTML
130+
case .HKD:
131+
return "$".strippedHTML
132+
case .HNL:
133+
return "L".strippedHTML
134+
case .HRK:
135+
return "Kn".strippedHTML
136+
case .HTG:
137+
return "G".strippedHTML
138+
case .HUF:
139+
return "Ft".strippedHTML
140+
case .IDR:
141+
return "Rp".strippedHTML
142+
case .ILS:
143+
return "₪".strippedHTML
144+
case .IMP:
145+
return "£".strippedHTML
146+
case .INR:
147+
return "₹".strippedHTML
148+
case .IQD:
149+
return "ع.د".strippedHTML
150+
case .IRR:
151+
return "﷼".strippedHTML
152+
case .IRT:
153+
return "تومان".strippedHTML
154+
case .ISK:
155+
return "kr.".strippedHTML
156+
case .JEP:
157+
return "£".strippedHTML
158+
case .JMD:
159+
return "$".strippedHTML
160+
case .JOD:
161+
return "د.ا".strippedHTML
162+
case .JPY:
163+
return "¥".strippedHTML
164+
case .KES:
165+
return "KSh".strippedHTML
166+
case .KGS:
167+
return "сом".strippedHTML
168+
case .KHR:
169+
return "៛".strippedHTML
170+
case .KMF:
171+
return "Fr".strippedHTML
172+
case .KPW:
173+
return "₩".strippedHTML
174+
case .KRW:
175+
return "₩".strippedHTML
176+
case .KWD:
177+
return "د.ك".strippedHTML
178+
case .KYD:
179+
return "$".strippedHTML
180+
case .KZT:
181+
return "KZT".strippedHTML
182+
case .LAK:
183+
return "₭".strippedHTML
184+
case .LBP:
185+
return "ل.ل".strippedHTML
186+
case .LKR:
187+
return "රු".strippedHTML
188+
case .LRD:
189+
return "$".strippedHTML
190+
case .LSL:
191+
return "L".strippedHTML
192+
case .LYD:
193+
return "ل.د".strippedHTML
194+
case .MAD:
195+
return "د.م.".strippedHTML
196+
case .MDL:
197+
return "MDL".strippedHTML
198+
case .MGA:
199+
return "Ar".strippedHTML
200+
case .MKD:
201+
return "ден".strippedHTML
202+
case .MMK:
203+
return "Ks".strippedHTML
204+
case .MNT:
205+
return "₮".strippedHTML
206+
case .MOP:
207+
return "P".strippedHTML
208+
case .MRO:
209+
return "UM".strippedHTML
210+
case .MUR:
211+
return "₨".strippedHTML
212+
case .MVR:
213+
return ".ރ".strippedHTML
214+
case .MWK:
215+
return "MK".strippedHTML
216+
case .MXN:
217+
return "$".strippedHTML
218+
case .MYR:
219+
return "RM".strippedHTML
220+
case .MZN:
221+
return "MT".strippedHTML
222+
case .NAD:
223+
return "$".strippedHTML
224+
case .NGN:
225+
return "₦".strippedHTML
226+
case .NIO:
227+
return "C$".strippedHTML
228+
case .NOK:
229+
return "kr".strippedHTML
230+
case .NPR:
231+
return "₨".strippedHTML
232+
case .NZD:
233+
return "$".strippedHTML
234+
case .OMR:
235+
return "ر.ع.".strippedHTML
236+
case .PAB:
237+
return "B/.".strippedHTML
238+
case .PEN:
239+
return "S/.".strippedHTML
240+
case .PGK:
241+
return "K".strippedHTML
242+
case .PHP:
243+
return "₱".strippedHTML
244+
case .PKR:
245+
return "₨".strippedHTML
246+
case .PLN:
247+
return "zł".strippedHTML
248+
case .PRB:
249+
return "р.".strippedHTML
250+
case .PYG:
251+
return "₲".strippedHTML
252+
case .QAR:
253+
return "ر.ق".strippedHTML
254+
case .RMB:
255+
return "¥".strippedHTML
256+
case .RON:
257+
return "lei".strippedHTML
258+
case .RSD:
259+
return "дин.".strippedHTML
260+
case .RUB:
261+
return "₽".strippedHTML
262+
case .RWF:
263+
return "Fr".strippedHTML
264+
case .SAR:
265+
return "ر.س".strippedHTML
266+
case .SBD:
267+
return "$".strippedHTML
268+
case .SCR:
269+
return "₨".strippedHTML
270+
case .SDG:
271+
return "ج.س.".strippedHTML
272+
case .SEK:
273+
return "kr".strippedHTML
274+
case .SGD:
275+
return "$".strippedHTML
276+
case .SHP:
277+
return "£".strippedHTML
278+
case .SLL:
279+
return "Le".strippedHTML
280+
case .SOS:
281+
return "Sh".strippedHTML
282+
case .SRD:
283+
return "$".strippedHTML
284+
case .SSP:
285+
return "£".strippedHTML
286+
case .STD:
287+
return "Db".strippedHTML
288+
case .SYP:
289+
return "ل.س".strippedHTML
290+
case .SZL:
291+
return "L".strippedHTML
292+
case .THB:
293+
return "฿".strippedHTML
294+
case .TJS:
295+
return "ЅМ".strippedHTML
296+
case .TMT:
297+
return "m".strippedHTML
298+
case .TND:
299+
return "د.ت".strippedHTML
300+
case .TOP:
301+
return "T$".strippedHTML
302+
case .TRY:
303+
return "₺".strippedHTML
304+
case .TTD:
305+
return "$".strippedHTML
306+
case .TWD:
307+
return "NT$".strippedHTML
308+
case .TZS:
309+
return "Sh".strippedHTML
310+
case .UAH:
311+
return "₴".strippedHTML
312+
case .UGX:
313+
return "UGX".strippedHTML
314+
case .USD:
315+
return "$".strippedHTML
316+
case .UYU:
317+
return "$".strippedHTML
318+
case .UZS:
319+
return "UZS".strippedHTML
320+
case .VEF:
321+
return "Bs F".strippedHTML
322+
case .VND:
323+
return "₫".strippedHTML
324+
case .VUV:
325+
return "Vt".strippedHTML
326+
case .WST:
327+
return "T".strippedHTML
328+
case .XAF:
329+
return "CFA".strippedHTML
330+
case .XCD:
331+
return "$".strippedHTML
332+
case .XOF:
333+
return "CFA".strippedHTML
334+
case .XPF:
335+
return "Fr".strippedHTML
336+
case .YER:
337+
return "﷼".strippedHTML
338+
case .ZAR:
339+
return "R".strippedHTML
340+
case .ZMW:
341+
return "ZK".strippedHTML
342+
}
343+
}
344+
}

0 commit comments

Comments
 (0)