389 lines
19 KiB
Swift
389 lines
19 KiB
Swift
import UIKit
|
|
|
|
struct Currency {
|
|
/// The `ISO 4217` currency code
|
|
var code: String
|
|
|
|
/// The number of digits to display after the decimal point when displaying the currency
|
|
var minorUnits: Int
|
|
|
|
/// The factor to divide the currency figure by before handing to a currency formatter
|
|
var factor: Int
|
|
}
|
|
|
|
class Currencies {
|
|
static let AED: Currency = Currency(code: "AED", minorUnits: 2, factor: 100)
|
|
static let AFN: Currency = Currency(code: "AFN", minorUnits: 2, factor: 100)
|
|
static let ALL: Currency = Currency(code: "ALL", minorUnits: 2, factor: 100)
|
|
static let AMD: Currency = Currency(code: "AMD", minorUnits: 2, factor: 100)
|
|
static let ANG: Currency = Currency(code: "ANG", minorUnits: 2, factor: 100)
|
|
static let AOA: Currency = Currency(code: "AOA", minorUnits: 2, factor: 100)
|
|
static let ARS: Currency = Currency(code: "ARS", minorUnits: 2, factor: 100)
|
|
static let AUD: Currency = Currency(code: "AUD", minorUnits: 2, factor: 100)
|
|
static let AWG: Currency = Currency(code: "AWG", minorUnits: 2, factor: 100)
|
|
static let AZN: Currency = Currency(code: "AZN", minorUnits: 2, factor: 100)
|
|
static let BAM: Currency = Currency(code: "BAM", minorUnits: 2, factor: 100)
|
|
static let BBD: Currency = Currency(code: "BBD", minorUnits: 2, factor: 100)
|
|
static let BDT: Currency = Currency(code: "BDT", minorUnits: 2, factor: 100)
|
|
static let BGN: Currency = Currency(code: "BGN", minorUnits: 2, factor: 100)
|
|
static let BHD: Currency = Currency(code: "BHD", minorUnits: 3, factor: 1000)
|
|
static let BIF: Currency = Currency(code: "BIF", minorUnits: 0, factor: 1)
|
|
static let BMD: Currency = Currency(code: "BMD", minorUnits: 2, factor: 100)
|
|
static let BND: Currency = Currency(code: "BND", minorUnits: 2, factor: 100)
|
|
static let BOB: Currency = Currency(code: "BOB", minorUnits: 2, factor: 100)
|
|
static let BOV: Currency = Currency(code: "BOV", minorUnits: 2, factor: 100)
|
|
static let BRL: Currency = Currency(code: "BRL", minorUnits: 2, factor: 100)
|
|
static let BSD: Currency = Currency(code: "BSD", minorUnits: 2, factor: 100)
|
|
static let BTN: Currency = Currency(code: "BTN", minorUnits: 2, factor: 100)
|
|
static let BWP: Currency = Currency(code: "BWP", minorUnits: 2, factor: 100)
|
|
static let BYN: Currency = Currency(code: "BYN", minorUnits: 2, factor: 100)
|
|
static let BZD: Currency = Currency(code: "BZD", minorUnits: 2, factor: 100)
|
|
static let CAD: Currency = Currency(code: "CAD", minorUnits: 2, factor: 100)
|
|
static let CDF: Currency = Currency(code: "CDF", minorUnits: 2, factor: 100)
|
|
static let CHE: Currency = Currency(code: "CHE", minorUnits: 2, factor: 100)
|
|
static let CHF: Currency = Currency(code: "CHF", minorUnits: 2, factor: 100)
|
|
static let CHW: Currency = Currency(code: "CHW", minorUnits: 2, factor: 100)
|
|
static let CLF: Currency = Currency(code: "CLF", minorUnits: 4, factor: 10000)
|
|
static let CLP: Currency = Currency(code: "CLP", minorUnits: 0, factor: 1)
|
|
static let CNY: Currency = Currency(code: "CNY", minorUnits: 2, factor: 100)
|
|
static let COP: Currency = Currency(code: "COP", minorUnits: 2, factor: 100)
|
|
static let COU: Currency = Currency(code: "COU", minorUnits: 2, factor: 100)
|
|
static let CRC: Currency = Currency(code: "CRC", minorUnits: 2, factor: 100)
|
|
static let CUC: Currency = Currency(code: "CUC", minorUnits: 2, factor: 100)
|
|
static let CUP: Currency = Currency(code: "CUP", minorUnits: 2, factor: 100)
|
|
static let CVE: Currency = Currency(code: "CVE", minorUnits: 2, factor: 100)
|
|
static let CZK: Currency = Currency(code: "CZK", minorUnits: 2, factor: 100)
|
|
static let DJF: Currency = Currency(code: "DJF", minorUnits: 0, factor: 1)
|
|
static let DKK: Currency = Currency(code: "DKK", minorUnits: 2, factor: 100)
|
|
static let DOP: Currency = Currency(code: "DOP", minorUnits: 2, factor: 100)
|
|
static let DZD: Currency = Currency(code: "DZD", minorUnits: 2, factor: 100)
|
|
static let EGP: Currency = Currency(code: "EGP", minorUnits: 2, factor: 100)
|
|
static let ERN: Currency = Currency(code: "ERN", minorUnits: 2, factor: 100)
|
|
static let ETB: Currency = Currency(code: "ETB", minorUnits: 2, factor: 100)
|
|
static let EUR: Currency = Currency(code: "EUR", minorUnits: 2, factor: 100)
|
|
static let FJD: Currency = Currency(code: "FJD", minorUnits: 2, factor: 100)
|
|
static let FKP: Currency = Currency(code: "FKP", minorUnits: 2, factor: 100)
|
|
static let GBP: Currency = Currency(code: "GBP", minorUnits: 2, factor: 100)
|
|
static let GEL: Currency = Currency(code: "GEL", minorUnits: 2, factor: 100)
|
|
static let GHS: Currency = Currency(code: "GHS", minorUnits: 2, factor: 100)
|
|
static let GIP: Currency = Currency(code: "GIP", minorUnits: 2, factor: 100)
|
|
static let GMD: Currency = Currency(code: "GMD", minorUnits: 2, factor: 100)
|
|
static let GNF: Currency = Currency(code: "GNF", minorUnits: 0, factor: 1)
|
|
static let GTQ: Currency = Currency(code: "GTQ", minorUnits: 2, factor: 100)
|
|
static let GYD: Currency = Currency(code: "GYD", minorUnits: 2, factor: 100)
|
|
static let HKD: Currency = Currency(code: "HKD", minorUnits: 2, factor: 100)
|
|
static let HNL: Currency = Currency(code: "HNL", minorUnits: 2, factor: 100)
|
|
static let HTG: Currency = Currency(code: "HTG", minorUnits: 2, factor: 100)
|
|
static let HUF: Currency = Currency(code: "HUF", minorUnits: 2, factor: 100)
|
|
static let IDR: Currency = Currency(code: "IDR", minorUnits: 2, factor: 100)
|
|
static let ILS: Currency = Currency(code: "ILS", minorUnits: 2, factor: 100)
|
|
static let INR: Currency = Currency(code: "INR", minorUnits: 2, factor: 100)
|
|
static let IQD: Currency = Currency(code: "IQD", minorUnits: 3, factor: 1000)
|
|
static let IRR: Currency = Currency(code: "IRR", minorUnits: 2, factor: 100)
|
|
static let ISK: Currency = Currency(code: "ISK", minorUnits: 0, factor: 1)
|
|
static let JMD: Currency = Currency(code: "JMD", minorUnits: 2, factor: 100)
|
|
static let JOD: Currency = Currency(code: "JOD", minorUnits: 3, factor: 1000)
|
|
static let JPY: Currency = Currency(code: "JPY", minorUnits: 0, factor: 1)
|
|
static let KES: Currency = Currency(code: "KES", minorUnits: 2, factor: 100)
|
|
static let KGS: Currency = Currency(code: "KGS", minorUnits: 2, factor: 100)
|
|
static let KHR: Currency = Currency(code: "KHR", minorUnits: 2, factor: 100)
|
|
static let KMF: Currency = Currency(code: "KMF", minorUnits: 0, factor: 1)
|
|
static let KPW: Currency = Currency(code: "KPW", minorUnits: 2, factor: 100)
|
|
static let KRW: Currency = Currency(code: "KRW", minorUnits: 0, factor: 1)
|
|
static let KWD: Currency = Currency(code: "KWD", minorUnits: 3, factor: 1000)
|
|
static let KYD: Currency = Currency(code: "KYD", minorUnits: 2, factor: 100)
|
|
static let KZT: Currency = Currency(code: "KZT", minorUnits: 2, factor: 100)
|
|
static let LAK: Currency = Currency(code: "LAK", minorUnits: 2, factor: 100)
|
|
static let LBP: Currency = Currency(code: "LBP", minorUnits: 2, factor: 100)
|
|
static let LKR: Currency = Currency(code: "LKR", minorUnits: 2, factor: 100)
|
|
static let LRD: Currency = Currency(code: "LRD", minorUnits: 2, factor: 100)
|
|
static let LSL: Currency = Currency(code: "LSL", minorUnits: 2, factor: 100)
|
|
static let LYD: Currency = Currency(code: "LYD", minorUnits: 3, factor: 1000)
|
|
static let MAD: Currency = Currency(code: "MAD", minorUnits: 2, factor: 100)
|
|
static let MDL: Currency = Currency(code: "MDL", minorUnits: 2, factor: 100)
|
|
static let MGA: Currency = Currency(code: "MGA", minorUnits: 2, factor: 100)
|
|
static let MKD: Currency = Currency(code: "MKD", minorUnits: 2, factor: 100)
|
|
static let MMK: Currency = Currency(code: "MMK", minorUnits: 2, factor: 100)
|
|
static let MNT: Currency = Currency(code: "MNT", minorUnits: 2, factor: 100)
|
|
static let MOP: Currency = Currency(code: "MOP", minorUnits: 2, factor: 100)
|
|
static let MRU: Currency = Currency(code: "MRU", minorUnits: 2, factor: 100)
|
|
static let MUR: Currency = Currency(code: "MUR", minorUnits: 2, factor: 100)
|
|
static let MVR: Currency = Currency(code: "MVR", minorUnits: 2, factor: 100)
|
|
static let MWK: Currency = Currency(code: "MWK", minorUnits: 2, factor: 100)
|
|
static let MXN: Currency = Currency(code: "MXN", minorUnits: 2, factor: 100)
|
|
static let MXV: Currency = Currency(code: "MXV", minorUnits: 2, factor: 100)
|
|
static let MYR: Currency = Currency(code: "MYR", minorUnits: 2, factor: 100)
|
|
static let MZN: Currency = Currency(code: "MZN", minorUnits: 2, factor: 100)
|
|
static let NAD: Currency = Currency(code: "NAD", minorUnits: 2, factor: 100)
|
|
static let NGN: Currency = Currency(code: "NGN", minorUnits: 2, factor: 100)
|
|
static let NIO: Currency = Currency(code: "NIO", minorUnits: 2, factor: 100)
|
|
static let NOK: Currency = Currency(code: "NOK", minorUnits: 2, factor: 100)
|
|
static let NPR: Currency = Currency(code: "NPR", minorUnits: 2, factor: 100)
|
|
static let NZD: Currency = Currency(code: "NZD", minorUnits: 2, factor: 100)
|
|
static let OMR: Currency = Currency(code: "OMR", minorUnits: 3, factor: 1000)
|
|
static let PAB: Currency = Currency(code: "PAB", minorUnits: 2, factor: 100)
|
|
static let PEN: Currency = Currency(code: "PEN", minorUnits: 2, factor: 100)
|
|
static let PGK: Currency = Currency(code: "PGK", minorUnits: 2, factor: 100)
|
|
static let PHP: Currency = Currency(code: "PHP", minorUnits: 2, factor: 100)
|
|
static let PKR: Currency = Currency(code: "PKR", minorUnits: 2, factor: 100)
|
|
static let PLN: Currency = Currency(code: "PLN", minorUnits: 2, factor: 100)
|
|
static let PYG: Currency = Currency(code: "PYG", minorUnits: 0, factor: 1)
|
|
static let QAR: Currency = Currency(code: "QAR", minorUnits: 2, factor: 100)
|
|
static let RON: Currency = Currency(code: "RON", minorUnits: 2, factor: 100)
|
|
static let RSD: Currency = Currency(code: "RSD", minorUnits: 2, factor: 100)
|
|
static let RUB: Currency = Currency(code: "RUB", minorUnits: 2, factor: 100)
|
|
static let RWF: Currency = Currency(code: "RWF", minorUnits: 0, factor: 1)
|
|
static let SAR: Currency = Currency(code: "SAR", minorUnits: 2, factor: 100)
|
|
static let SBD: Currency = Currency(code: "SBD", minorUnits: 2, factor: 100)
|
|
static let SCR: Currency = Currency(code: "SCR", minorUnits: 2, factor: 100)
|
|
static let SDG: Currency = Currency(code: "SDG", minorUnits: 2, factor: 100)
|
|
static let SEK: Currency = Currency(code: "SEK", minorUnits: 2, factor: 100)
|
|
static let SGD: Currency = Currency(code: "SGD", minorUnits: 2, factor: 100)
|
|
static let SHP: Currency = Currency(code: "SHP", minorUnits: 2, factor: 100)
|
|
static let SLE: Currency = Currency(code: "SLE", minorUnits: 2, factor: 100)
|
|
static let SLL: Currency = Currency(code: "SLL", minorUnits: 2, factor: 100)
|
|
static let SOS: Currency = Currency(code: "SOS", minorUnits: 2, factor: 100)
|
|
static let SRD: Currency = Currency(code: "SRD", minorUnits: 2, factor: 100)
|
|
static let SSP: Currency = Currency(code: "SSP", minorUnits: 2, factor: 100)
|
|
static let STN: Currency = Currency(code: "STN", minorUnits: 2, factor: 100)
|
|
static let SVC: Currency = Currency(code: "SVC", minorUnits: 2, factor: 100)
|
|
static let SYP: Currency = Currency(code: "SYP", minorUnits: 2, factor: 100)
|
|
static let SZL: Currency = Currency(code: "SZL", minorUnits: 2, factor: 100)
|
|
static let THB: Currency = Currency(code: "THB", minorUnits: 2, factor: 100)
|
|
static let TJS: Currency = Currency(code: "TJS", minorUnits: 2, factor: 100)
|
|
static let TMT: Currency = Currency(code: "TMT", minorUnits: 2, factor: 100)
|
|
static let TND: Currency = Currency(code: "TND", minorUnits: 3, factor: 1000)
|
|
static let TOP: Currency = Currency(code: "TOP", minorUnits: 2, factor: 100)
|
|
static let TRY: Currency = Currency(code: "TRY", minorUnits: 2, factor: 100)
|
|
static let TTD: Currency = Currency(code: "TTD", minorUnits: 2, factor: 100)
|
|
static let TWD: Currency = Currency(code: "TWD", minorUnits: 2, factor: 100)
|
|
static let TZS: Currency = Currency(code: "TZS", minorUnits: 2, factor: 100)
|
|
static let UAH: Currency = Currency(code: "UAH", minorUnits: 2, factor: 100)
|
|
static let UGX: Currency = Currency(code: "UGX", minorUnits: 0, factor: 1)
|
|
static let USD: Currency = Currency(code: "USD", minorUnits: 2, factor: 100)
|
|
static let USN: Currency = Currency(code: "USN", minorUnits: 2, factor: 100)
|
|
static let UYI: Currency = Currency(code: "UYI", minorUnits: 0, factor: 1)
|
|
static let UYU: Currency = Currency(code: "UYU", minorUnits: 2, factor: 100)
|
|
static let UYW: Currency = Currency(code: "UYW", minorUnits: 4, factor: 10000)
|
|
static let UZS: Currency = Currency(code: "UZS", minorUnits: 2, factor: 100)
|
|
static let VED: Currency = Currency(code: "VED", minorUnits: 2, factor: 100)
|
|
static let VES: Currency = Currency(code: "VES", minorUnits: 2, factor: 100)
|
|
static let VND: Currency = Currency(code: "VND", minorUnits: 0, factor: 1)
|
|
static let VUV: Currency = Currency(code: "VUV", minorUnits: 0, factor: 1)
|
|
static let WST: Currency = Currency(code: "WST", minorUnits: 2, factor: 100)
|
|
static let XAF: Currency = Currency(code: "XAF", minorUnits: 0, factor: 1)
|
|
static let XAG: Currency = Currency(code: "XAG", minorUnits: 0, factor: 1)
|
|
static let XAU: Currency = Currency(code: "XAU", minorUnits: 0, factor: 1)
|
|
static let XBA: Currency = Currency(code: "XBA", minorUnits: 0, factor: 1)
|
|
static let XBB: Currency = Currency(code: "XBB", minorUnits: 0, factor: 1)
|
|
static let XBC: Currency = Currency(code: "XBC", minorUnits: 0, factor: 1)
|
|
static let XBD: Currency = Currency(code: "XBD", minorUnits: 0, factor: 1)
|
|
static let XCD: Currency = Currency(code: "XCD", minorUnits: 2, factor: 100)
|
|
static let XDR: Currency = Currency(code: "XDR", minorUnits: 0, factor: 1)
|
|
static let XOF: Currency = Currency(code: "XOF", minorUnits: 0, factor: 1)
|
|
static let XPD: Currency = Currency(code: "XPD", minorUnits: 0, factor: 1)
|
|
static let XPF: Currency = Currency(code: "XPF", minorUnits: 0, factor: 1)
|
|
static let XPT: Currency = Currency(code: "XPT", minorUnits: 0, factor: 1)
|
|
static let XSU: Currency = Currency(code: "XSU", minorUnits: 0, factor: 1)
|
|
static let XTS: Currency = Currency(code: "XTS", minorUnits: 0, factor: 1)
|
|
static let XUA: Currency = Currency(code: "XUA", minorUnits: 0, factor: 1)
|
|
static let XXX: Currency = Currency(code: "XXX", minorUnits: 0, factor: 1)
|
|
static let YER: Currency = Currency(code: "YER", minorUnits: 2, factor: 100)
|
|
static let ZAR: Currency = Currency(code: "ZAR", minorUnits: 2, factor: 100)
|
|
static let ZMW: Currency = Currency(code: "ZMW", minorUnits: 2, factor: 100)
|
|
static let ZWL: Currency = Currency(code: "ZWL", minorUnits: 2, factor: 100)
|
|
|
|
|
|
static let allCurrencies: [String: Currency] =
|
|
[
|
|
"AED": AED,
|
|
"AFN": AFN,
|
|
"ALL": ALL,
|
|
"AMD": AMD,
|
|
"ANG": ANG,
|
|
"AOA": AOA,
|
|
"ARS": ARS,
|
|
"AUD": AUD,
|
|
"AWG": AWG,
|
|
"AZN": AZN,
|
|
"BAM": BAM,
|
|
"BBD": BBD,
|
|
"BDT": BDT,
|
|
"BGN": BGN,
|
|
"BHD": BHD,
|
|
"BIF": BIF,
|
|
"BMD": BMD,
|
|
"BND": BND,
|
|
"BOB": BOB,
|
|
"BOV": BOV,
|
|
"BRL": BRL,
|
|
"BSD": BSD,
|
|
"BTN": BTN,
|
|
"BWP": BWP,
|
|
"BYN": BYN,
|
|
"BZD": BZD,
|
|
"CAD": CAD,
|
|
"CDF": CDF,
|
|
"CHE": CHE,
|
|
"CHF": CHF,
|
|
"CHW": CHW,
|
|
"CLF": CLF,
|
|
"CLP": CLP,
|
|
"CNY": CNY,
|
|
"COP": COP,
|
|
"COU": COU,
|
|
"CRC": CRC,
|
|
"CUC": CUC,
|
|
"CUP": CUP,
|
|
"CVE": CVE,
|
|
"CZK": CZK,
|
|
"DJF": DJF,
|
|
"DKK": DKK,
|
|
"DOP": DOP,
|
|
"DZD": DZD,
|
|
"EGP": EGP,
|
|
"ERN": ERN,
|
|
"ETB": ETB,
|
|
"EUR": EUR,
|
|
"FJD": FJD,
|
|
"FKP": FKP,
|
|
"GBP": GBP,
|
|
"GEL": GEL,
|
|
"GHS": GHS,
|
|
"GIP": GIP,
|
|
"GMD": GMD,
|
|
"GNF": GNF,
|
|
"GTQ": GTQ,
|
|
"GYD": GYD,
|
|
"HKD": HKD,
|
|
"HNL": HNL,
|
|
"HTG": HTG,
|
|
"HUF": HUF,
|
|
"IDR": IDR,
|
|
"ILS": ILS,
|
|
"INR": INR,
|
|
"IQD": IQD,
|
|
"IRR": IRR,
|
|
"ISK": ISK,
|
|
"JMD": JMD,
|
|
"JOD": JOD,
|
|
"JPY": JPY,
|
|
"KES": KES,
|
|
"KGS": KGS,
|
|
"KHR": KHR,
|
|
"KMF": KMF,
|
|
"KPW": KPW,
|
|
"KRW": KRW,
|
|
"KWD": KWD,
|
|
"KYD": KYD,
|
|
"KZT": KZT,
|
|
"LAK": LAK,
|
|
"LBP": LBP,
|
|
"LKR": LKR,
|
|
"LRD": LRD,
|
|
"LSL": LSL,
|
|
"LYD": LYD,
|
|
"MAD": MAD,
|
|
"MDL": MDL,
|
|
"MGA": MGA,
|
|
"MKD": MKD,
|
|
"MMK": MMK,
|
|
"MNT": MNT,
|
|
"MOP": MOP,
|
|
"MRU": MRU,
|
|
"MUR": MUR,
|
|
"MVR": MVR,
|
|
"MWK": MWK,
|
|
"MXN": MXN,
|
|
"MXV": MXV,
|
|
"MYR": MYR,
|
|
"MZN": MZN,
|
|
"NAD": NAD,
|
|
"NGN": NGN,
|
|
"NIO": NIO,
|
|
"NOK": NOK,
|
|
"NPR": NPR,
|
|
"NZD": NZD,
|
|
"OMR": OMR,
|
|
"PAB": PAB,
|
|
"PEN": PEN,
|
|
"PGK": PGK,
|
|
"PHP": PHP,
|
|
"PKR": PKR,
|
|
"PLN": PLN,
|
|
"PYG": PYG,
|
|
"QAR": QAR,
|
|
"RON": RON,
|
|
"RSD": RSD,
|
|
"RUB": RUB,
|
|
"RWF": RWF,
|
|
"SAR": SAR,
|
|
"SBD": SBD,
|
|
"SCR": SCR,
|
|
"SDG": SDG,
|
|
"SEK": SEK,
|
|
"SGD": SGD,
|
|
"SHP": SHP,
|
|
"SLE": SLE,
|
|
"SLL": SLL,
|
|
"SOS": SOS,
|
|
"SRD": SRD,
|
|
"SSP": SSP,
|
|
"STN": STN,
|
|
"SVC": SVC,
|
|
"SYP": SYP,
|
|
"SZL": SZL,
|
|
"THB": THB,
|
|
"TJS": TJS,
|
|
"TMT": TMT,
|
|
"TND": TND,
|
|
"TOP": TOP,
|
|
"TRY": TRY,
|
|
"TTD": TTD,
|
|
"TWD": TWD,
|
|
"TZS": TZS,
|
|
"UAH": UAH,
|
|
"UGX": UGX,
|
|
"USD": USD,
|
|
"USN": USN,
|
|
"UYI": UYI,
|
|
"UYU": UYU,
|
|
"UYW": UYW,
|
|
"UZS": UZS,
|
|
"VED": VED,
|
|
"VES": VES,
|
|
"VND": VND,
|
|
"VUV": VUV,
|
|
"WST": WST,
|
|
"XAF": XAF,
|
|
"XAG": XAG,
|
|
"XAU": XAU,
|
|
"XBA": XBA,
|
|
"XBB": XBB,
|
|
"XBC": XBC,
|
|
"XBD": XBD,
|
|
"XCD": XCD,
|
|
"XDR": XDR,
|
|
"XOF": XOF,
|
|
"XPD": XPD,
|
|
"XPF": XPF,
|
|
"XPT": XPT,
|
|
"XSU": XSU,
|
|
"XTS": XTS,
|
|
"XUA": XUA,
|
|
"XXX": XXX,
|
|
"YER": YER,
|
|
"ZAR": ZAR,
|
|
"ZMW": ZMW,
|
|
"ZWL": ZWL
|
|
]
|
|
|
|
/// Look up a currency struct containing currency and formatting information
|
|
///
|
|
/// - Parameter code: The `ISO 4217` currency code to search for
|
|
/// - Returns: A `Currency` object, if supported. Otherwise nil.
|
|
class func currency(for code: String) -> Currency? {
|
|
return allCurrencies[code]
|
|
}
|
|
}
|