currencies.go
package countries
import (
"encoding/json"
"fmt"
)
// CurrencyCode - currency code of country
type CurrencyCode int64 // int64 for database/sql/driver.Valuer compatibility
// Currency - all info about currency
type Currency struct {
NickelRounding bool
Name string
Alpha string
Digits int
Code CurrencyCode
Countries []CountryCode
}
// Emoji - return a currency as Emoji (only for USD, EUR, JPY and GBP)
func (c CurrencyCode) Emoji() string {
switch c {
case CurrencyUSD:
return "đ”"
case CurrencyEUR:
return "đ¶"
case CurrencyJPY:
return "đŽ"
case CurrencyGBP:
return "đ·"
}
return c.Alpha()
}
// TotalCurrencies - returns number of currencies in the package, countries.TotalCurrencies() == len(countries.AllCurrencies()) but static value for performance
func TotalCurrencies() int {
return 169
}
// Type implements Typer interface
func (c CurrencyCode) Type() string {
return TypeCurrencyCode
}
// String - implements fmt.Stringer, returns a english name of currency
//
//nolint:gocyclo
func (c CurrencyCode) String() string { //nolint:gocyclo
switch c {
case 840:
return "US Dollar"
case 978:
return "Euro"
case 971:
return "Afghani"
case 8:
return "Lek"
case 12:
return "Algerian Dinar"
case 973:
return "Kwanza"
case 951:
return "East Caribbean Dollar"
case 32:
return "Argentine Peso"
case 51:
return "Armenian Dram"
case 533:
return "Aruban Florin"
case 36:
return "Australian Dollar"
case 944:
return "Azerbaijanian Manat"
case 44:
return "Bahamian Dollar"
case 48:
return "Bahraini Dinar"
case 50:
return "Taka"
case 52:
return "Barbados Dollar"
case 933:
return "Belarussian Ruble"
case 84:
return "Belize Dollar"
case 952:
return "CFA Franc BCEAO"
case 60:
return "Bermudian Dollar"
case 64:
return "Ngultrum"
case 356:
return "Indian Rupee"
case 68:
return "Boliviano"
case 977:
return "Convertible Mark"
case 72:
return "Pula"
case 578:
return "Norwegian Krone"
case 986:
return "Brazilian Real"
case 96:
return "Brunei Dollar"
case 975:
return "Bulgarian Lev"
case 108:
return "Burundi Franc"
case 132:
return "Cabo Verde Escudo"
case 116:
return "Riel"
case 950:
return "CFA Franc BEAC"
case 124:
return "Canadian Dollar"
case 136:
return "Cayman Islands Dollar"
case 990:
return "Unidad de Fomento"
case 152:
return "Chilean Peso"
case 156:
return "Yuan Renminbi"
case 170:
return "Colombian Peso"
case 970:
return "Unidad de Valor Real (UVR)"
case 174:
return "Comoro Franc"
case 976:
return "Congolese Franc"
case 554:
return "New Zealand Dollar"
case 188:
return "Costa Rican Colon"
case 191:
return "Kuna"
case 931:
return "Peso Convertible"
case 192:
return "Cuban Peso"
case 532:
return "Netherlands Antillean Guilder"
case 203:
return "Czech Koruna"
case 208:
return "Danish Krone"
case 262:
return "Djibouti Franc"
case 214:
return "Dominican Peso"
case 818:
return "Egyptian Pound"
case 222:
return "El Salvador Colon"
case 232:
return "Nakfa"
case 230:
return "Ethiopian Birr"
case 238:
return "Falkland Islands Pound"
case 242:
return "Fiji Dollar"
case 953:
return "CFP Franc"
case 270:
return "Dalasi"
case 981:
return "Lari"
case 936:
return "Ghana Cedi"
case 292:
return "Gibraltar Pound"
case 320:
return "Quetzal"
case 826:
return "Pound Sterling"
case 324:
return "Guinea Franc"
case 328:
return "Guyana Dollar"
case 332:
return "Gourde"
case 340:
return "Lempira"
case 344:
return "Hong Kong Dollar"
case 348:
return "Forint"
case 352:
return "Iceland Krona"
case 360:
return "Rupiah"
case 960:
return "SDR (Special Drawing Right)"
case 364:
return "Iranian Rial"
case 368:
return "Iraqi Dinar"
case 376:
return "New Israeli Sheqel"
case 388:
return "Jamaican Dollar"
case 392:
return "Yen"
case 400:
return "Jordanian Dinar"
case 398:
return "Tenge"
case 404:
return "Kenyan Shilling"
case 408:
return "North Korean Won"
case 410:
return "Won"
case 414:
return "Kuwaiti Dinar"
case 417:
return "Som"
case 418:
return "Kip"
case 422:
return "Lebanese Pound"
case 426:
return "Loti"
case 710:
return "Rand"
case 430:
return "Liberian Dollar"
case 434:
return "Libyan Dinar"
case 756:
return "Swiss Franc"
case 446:
return "Pataca"
case 807:
return "Denar"
case 969:
return "Malagasy Ariary"
case 454:
return "Kwacha"
case 458:
return "Malaysian Ringgit"
case 462:
return "Rufiyaa"
case 929:
return "Ouguiya"
case 480:
return "Mauritius Rupee"
case 965:
return "ADB Unit of Account"
case 484:
return "Mexican Peso"
case 979:
return "Mexican Unidad de Inversion (UDI)"
case 498:
return "Moldovan Leu"
case 496:
return "Tugrik"
case 504:
return "Moroccan Dirham"
case 943:
return "Mozambique Metical"
case 104:
return "Kyat"
case 516:
return "Namibia Dollar"
case 524:
return "Nepalese Rupee"
case 558:
return "Cordoba Oro"
case 566:
return "Naira"
case 512:
return "Rial Omani"
case 586:
return "Pakistan Rupee"
case 590:
return "Balboa"
case 598:
return "Kina"
case 600:
return "Guarani"
case 604:
return "Nuevo Sol"
case 608:
return "Philippine Peso"
case 985:
return "Zloty"
case 634:
return "Qatari Rial"
case 946:
return "Romanian Leu"
case 643:
return "Russian Ruble"
case 646:
return "Rwanda Franc"
case 654:
return "Saint Helena Pound"
case 882:
return "Tala"
case 930:
return "Dobra"
case 682:
return "Saudi Riyal"
case 941:
return "Serbian Dinar"
case 690:
return "Seychelles Rupee"
case 694:
return "Leone"
case 702:
return "Singapore Dollar"
case 994:
return "Sucre"
case 90:
return "Solomon Islands Dollar"
case 706:
return "Somali Shilling"
case 728:
return "South Sudanese Pound"
case 144:
return "Sri Lanka Rupee"
case 938:
return "Sudanese Pound"
case 968:
return "Surinam Dollar"
case 748:
return "Lilangeni"
case 752:
return "Swedish Krona"
case 947:
return "WIR Euro"
case 948:
return "WIR Franc"
case 760:
return "Syrian Pound"
case 901:
return "New Taiwan Dollar"
case 972:
return "Somoni"
case 834:
return "Tanzanian Shilling"
case 764:
return "Baht"
case 776:
return "Paâanga"
case 780:
return "Trinidad and Tobago Dollar"
case 788:
return "Tunisian Dinar"
case 949:
return "Turkish Lira"
case 934:
return "Turkmenistan New Manat"
case 800:
return "Uganda Shilling"
case 980:
return "Hryvnia"
case 784:
return "UAE Dirham"
case 997:
return "US Dollar Next day"
case 940:
return "Uruguay Peso en Unidades Indexadas (URUIURUI)"
case 858:
return "Peso Uruguayo"
case 860:
return "Uzbekistan Sum"
case 548:
return "Vatu"
case 928:
return "Bolivar"
case 937:
return "Bolivar (deprecated)"
case 704:
return "Dong"
case 886:
return "Yemeni Rial"
case 967:
return "Zambian Kwacha"
case 932:
return "Zimbabwe Dollar"
case 891:
return "Yugoslavian Dinar"
case 998:
return "None"
}
return UnknownMsg
}
// Alpha - returns a default ISO 3166-1 Alpha (3 chars) code of currency
//
//nolint:gocyclo
func (c CurrencyCode) Alpha() string { //nolint:gocyclo
switch c {
case 840:
return "USD"
case 978:
return "EUR"
case 971:
return "AFN"
case 8:
return "ALL"
case 12:
return "DZD"
case 973:
return "AOA"
case 951:
return "XCD"
case 32:
return "ARS"
case 51:
return "AMD"
case 533:
return "AWG"
case 36:
return "AUD"
case 944:
return "AZN"
case 44:
return "BSD"
case 48:
return "BHD"
case 50:
return "BDT"
case 52:
return "BBD"
case 933:
return "BYN"
case 84:
return "BZD"
case 952:
return "XOF"
case 60:
return "BMD"
case 64:
return "BTN"
case 356:
return "INR"
case 68:
return "BOB"
case 977:
return "BAM"
case 72:
return "BWP"
case 578:
return "NOK"
case 986:
return "BRL"
case 96:
return "BND"
case 975:
return "BGN"
case 108:
return "BIF"
case 132:
return "CVE"
case 116:
return "KHR"
case 950:
return "XAF"
case 124:
return "CAD"
case 136:
return "KYD"
case 990:
return "CLF"
case 152:
return "CLP"
case 156:
return "CNY"
case 170:
return "COP"
case 970:
return "COU"
case 174:
return "KMF"
case 976:
return "CDF"
case 554:
return "NZD"
case 188:
return "CRC"
case 191:
return "HRK"
case 931:
return "CUC"
case 192:
return "CUP"
case 532:
return "ANG"
case 203:
return "CZK"
case 208:
return "DKK"
case 262:
return "DJF"
case 214:
return "DOP"
case 818:
return "EGP"
case 222:
return "SVC"
case 232:
return "ERN"
case 230:
return "ETB"
case 238:
return "FKP"
case 242:
return "FJD"
case 953:
return "XPF"
case 270:
return "GMD"
case 981:
return "GEL"
case 936:
return "GHS"
case 292:
return "GIP"
case 320:
return "GTQ"
case 826:
return "GBP"
case 324:
return "GNF"
case 328:
return "GYD"
case 332:
return "HTG"
case 340:
return "HNL"
case 344:
return "HKD"
case 348:
return "HUF"
case 352:
return "ISK"
case 360:
return "IDR"
case 960:
return "XDR"
case 364:
return "IRR"
case 368:
return "IQD"
case 376:
return "ILS"
case 388:
return "JMD"
case 392:
return "JPY"
case 400:
return "JOD"
case 398:
return "KZT"
case 404:
return "KES"
case 408:
return "KPW"
case 410:
return "KRW"
case 414:
return "KWD"
case 417:
return "KGS"
case 418:
return "LAK"
case 422:
return "LBP"
case 426:
return "LSL"
case 710:
return "ZAR"
case 430:
return "LRD"
case 434:
return "LYD"
case 756:
return "CHF"
case 446:
return "MOP"
case 807:
return "MKD"
case 969:
return "MGA"
case 454:
return "MWK"
case 458:
return "MYR"
case 462:
return "MVR"
case 929:
return "MRU"
case 480:
return "MUR"
case 965:
return "XUA"
case 484:
return "MXN"
case 979:
return "MXV"
case 498:
return "MDL"
case 496:
return "MNT"
case 504:
return "MAD"
case 943:
return "MZN"
case 104:
return "MMK"
case 516:
return "NAD"
case 524:
return "NPR"
case 558:
return "NIO"
case 566:
return "NGN"
case 512:
return "OMR"
case 586:
return "PKR"
case 590:
return "PAB"
case 598:
return "PGK"
case 600:
return "PYG"
case 604:
return "PEN"
case 608:
return "PHP"
case 985:
return "PLN"
case 634:
return "QAR"
case 946:
return "RON"
case 643:
return "RUB"
case 646:
return "RWF"
case 654:
return "SHP"
case 882:
return "WST"
case 930:
return "STN"
case 682:
return "SAR"
case 941:
return "RSD"
case 690:
return "SCR"
case 694:
return "SLL"
case 702:
return "SGD"
case 994:
return "XSU"
case 90:
return "SBD"
case 706:
return "SOS"
case 728:
return "SSP"
case 144:
return "LKR"
case 938:
return "SDG"
case 968:
return "SRD"
case 748:
return "SZL"
case 752:
return "SEK"
case 947:
return "CHE"
case 948:
return "CHW"
case 760:
return "SYP"
case 901:
return "TWD"
case 972:
return "TJS"
case 834:
return "TZS"
case 764:
return "THB"
case 776:
return "TOP"
case 780:
return "TTD"
case 788:
return "TND"
case 949:
return "TRY"
case 934:
return "TMT"
case 800:
return "UGX"
case 980:
return "UAH"
case 784:
return "AED"
case 997:
return "USN"
case 940:
return "UYI"
case 858:
return "UYU"
case 860:
return "UZS"
case 548:
return "VUV"
case 928:
return "VES"
case 937:
return "VEF"
case 704:
return "VND"
case 886:
return "YER"
case 967:
return "ZMW"
case 932:
return "ZWL"
case 891:
return "YUD"
case 998:
return "None"
}
return UnknownMsg
}
// IsValid - returns true, if code is correct
func (c CurrencyCode) IsValid() bool {
return c.Alpha() != UnknownMsg
}
// Countries - returns a country codes of currency using
//
//nolint:gocyclo
func (c CurrencyCode) Countries() []CountryCode { //nolint:gocyclo
switch c {
case CurrencyAFN:
return []CountryCode{AFG}
case CurrencyDZD:
return []CountryCode{DZA}
case CurrencyARS:
return []CountryCode{ARG}
case CurrencyAMD:
return []CountryCode{ARM}
case CurrencyAWG:
return []CountryCode{ABW}
case CurrencyAUD:
return []CountryCode{AUS, CXR, CCK, HMD, KIR, NRU, NFK, TUV}
case CurrencyAZN:
return []CountryCode{AZE}
case CurrencyBSD:
return []CountryCode{BHS}
case CurrencyBHD:
return []CountryCode{BHR}
case CurrencyTHB:
return []CountryCode{THA}
case CurrencyPAB:
return []CountryCode{PAN}
case CurrencyBBD:
return []CountryCode{BRB}
case CurrencyBYN:
return []CountryCode{BLR}
case CurrencyBZD:
return []CountryCode{BLZ}
case CurrencyBMD:
return []CountryCode{BMU}
case CurrencyVES:
return []CountryCode{VEN}
case CurrencyVEF:
return []CountryCode{VEN}
case CurrencyBOB:
return []CountryCode{BOL}
case CurrencyBRL:
return []CountryCode{BRA}
case CurrencyBND:
return []CountryCode{BRN}
case CurrencyBGN:
return []CountryCode{BGR}
case CurrencyBIF:
return []CountryCode{BDI}
case CurrencyCVE:
return []CountryCode{CPV}
case CurrencyCAD:
return []CountryCode{CAN}
case CurrencyKYD:
return []CountryCode{CYM}
case CurrencyXOF:
return []CountryCode{BEN, BFA, CIV, GNB, MLI, NER, SEN, TGO}
case CurrencyXAF:
return []CountryCode{CMR, CAF, TCD, COG, GNQ, GAB}
case CurrencyXPF:
return []CountryCode{PYF, NCL, WLF}
case CurrencyCLP:
return []CountryCode{CHL}
case CurrencyCOP:
return []CountryCode{COL}
case CurrencyKMF:
return []CountryCode{COM}
case CurrencyCDF:
return []CountryCode{COD}
case CurrencyBAM:
return []CountryCode{BIH}
case CurrencyNIO:
return []CountryCode{NIC}
case CurrencyCRC:
return []CountryCode{CRI}
case CurrencyCUP:
return []CountryCode{CUB}
case CurrencyCZK:
return []CountryCode{CZE}
case CurrencyGMD:
return []CountryCode{GMB}
case CurrencyDKK:
return []CountryCode{DNK, FRO, GRL}
case CurrencyMKD:
return []CountryCode{MKD}
case CurrencyDJF:
return []CountryCode{DJI}
case CurrencySTN:
return []CountryCode{STP}
case CurrencyDOP:
return []CountryCode{DOM}
case CurrencyVND:
return []CountryCode{VNM}
case CurrencyXCD:
return []CountryCode{AIA, ATG, DMA, GRD, MSR, KNA, LCA, VCT}
case CurrencyEGP:
return []CountryCode{EGY}
case CurrencySVC:
return []CountryCode{SLV}
case CurrencyETB:
return []CountryCode{ETH}
case CurrencyEUR:
return []CountryCode{AND, AUT, BEL, CYP, EST, FIN, FRA, GUF, ATF, DEU, GRC, GLP, VAT, IRL, ITA, LVA, LTU, LUX, MLT, MTQ, MYT, MCO, MNE, NLD, PRT, REU, BLM, MAF, SPM, SMR, SVK, SVN, ESP, ALA, HRV}
case CurrencyFKP:
return []CountryCode{FLK}
case CurrencyFJD:
return []CountryCode{FJI}
case CurrencyHUF:
return []CountryCode{HUN}
case CurrencyGHS:
return []CountryCode{GHA}
case CurrencyGIP:
return []CountryCode{GIB}
case CurrencyHTG:
return []CountryCode{HTI}
case CurrencyPYG:
return []CountryCode{PRY}
case CurrencyGNF:
return []CountryCode{GIN}
case CurrencyGYD:
return []CountryCode{GUY}
case CurrencyHKD:
return []CountryCode{HKG}
case CurrencyUAH:
return []CountryCode{UKR}
case CurrencyISK:
return []CountryCode{ISL}
case CurrencyINR:
return []CountryCode{BTN, IND}
case CurrencyIRR:
return []CountryCode{IRN}
case CurrencyIQD:
return []CountryCode{IRQ}
case CurrencyJMD:
return []CountryCode{JAM}
case CurrencyJOD:
return []CountryCode{JOR}
case CurrencyKES:
return []CountryCode{KEN}
case CurrencyPGK:
return []CountryCode{PNG}
case CurrencyLAK:
return []CountryCode{LAO}
case CurrencyHRK:
return []CountryCode{HRV}
case CurrencyKWD:
return []CountryCode{KWT}
case CurrencyMWK:
return []CountryCode{MWI}
case CurrencyAOA:
return []CountryCode{AGO}
case CurrencyMMK:
return []CountryCode{MMR}
case CurrencyGEL:
return []CountryCode{GEO}
case CurrencyLBP:
return []CountryCode{LBN}
case CurrencyALL:
return []CountryCode{ALB}
case CurrencyHNL:
return []CountryCode{HND}
case CurrencySLL:
return []CountryCode{SLE}
case CurrencyLRD:
return []CountryCode{LBR}
case CurrencyLYD:
return []CountryCode{LBY}
case CurrencySZL:
return []CountryCode{SWZ}
case CurrencyLSL:
return []CountryCode{LSO}
case CurrencyMGA:
return []CountryCode{MDG}
case CurrencyMYR:
return []CountryCode{MYS}
case CurrencyMUR:
return []CountryCode{MUS}
case CurrencyMXN:
return []CountryCode{MEX}
case CurrencyMXV:
return []CountryCode{MEX}
case CurrencyMDL:
return []CountryCode{MDA}
case CurrencyMAD:
return []CountryCode{MAR, ESH}
case CurrencyMZN:
return []CountryCode{MOZ}
case CurrencyNGN:
return []CountryCode{NGA}
case CurrencyERN:
return []CountryCode{ERI}
case CurrencyNAD:
return []CountryCode{NAM}
case CurrencyNPR:
return []CountryCode{NPL}
case CurrencyANG:
return []CountryCode{CUW, SXM, ANT}
case CurrencyILS:
return []CountryCode{ISR, PSE}
case CurrencyTWD:
return []CountryCode{TWN}
case CurrencyNZD:
return []CountryCode{COK, NZL, NIU, PCN, TKL}
case CurrencyBTN:
return []CountryCode{BTN}
case CurrencyKPW:
return []CountryCode{PRK}
case CurrencyNOK:
return []CountryCode{BVT, NOR, SJM}
case CurrencyPEN:
return []CountryCode{PER}
case CurrencyMRU:
return []CountryCode{MRT}
case CurrencyTOP:
return []CountryCode{TON}
case CurrencyPKR:
return []CountryCode{PAK}
case CurrencyMOP:
return []CountryCode{MAC}
case CurrencyCUC:
return []CountryCode{CUB}
case CurrencyUYU:
return []CountryCode{URY}
case CurrencyPHP:
return []CountryCode{PHL}
case CurrencyGBP:
return []CountryCode{GGY, IMN, JEY, GBR, XWA, SGS, XSC}
case CurrencyBWP:
return []CountryCode{BWA}
case CurrencyQAR:
return []CountryCode{QAT}
case CurrencyGTQ:
return []CountryCode{GTM}
case CurrencyZAR:
return []CountryCode{LSO, NAM, ZAF}
case CurrencyOMR:
return []CountryCode{OMN}
case CurrencyKHR:
return []CountryCode{KHM}
case CurrencyRON:
return []CountryCode{ROU}
case CurrencyMVR:
return []CountryCode{MDV}
case CurrencyIDR:
return []CountryCode{IDN}
case CurrencyRUB:
return []CountryCode{RUS}
case CurrencyRWF:
return []CountryCode{RWA}
case CurrencySHP:
return []CountryCode{SHN}
case CurrencySAR:
return []CountryCode{SAU}
case CurrencyRSD:
return []CountryCode{SRB}
case CurrencySCR:
return []CountryCode{SYC}
case CurrencySGD:
return []CountryCode{SGP}
case CurrencySBD:
return []CountryCode{SLB}
case CurrencyKGS:
return []CountryCode{KGZ}
case CurrencySOS:
return []CountryCode{SOM}
case CurrencyTJS:
return []CountryCode{TJK}
case CurrencySSP:
return []CountryCode{SSD}
case CurrencyLKR:
return []CountryCode{LKA}
case CurrencySDG:
return []CountryCode{SDN}
case CurrencySRD:
return []CountryCode{SUR}
case CurrencySEK:
return []CountryCode{SWE}
case CurrencyCHF:
return []CountryCode{LIE, CHE}
case CurrencySYP:
return []CountryCode{SYR}
case CurrencyBDT:
return []CountryCode{BGD}
case CurrencyWST:
return []CountryCode{WSM}
case CurrencyTZS:
return []CountryCode{TZA}
case CurrencyKZT:
return []CountryCode{KAZ}
case CurrencyTTD:
return []CountryCode{TTO}
case CurrencyMNT:
return []CountryCode{MNG}
case CurrencyTND:
return []CountryCode{TUN}
case CurrencyTRY:
return []CountryCode{TUR}
case CurrencyTMT:
return []CountryCode{TKM}
case CurrencyAED:
return []CountryCode{ARE}
case CurrencyUGX:
return []CountryCode{UGA}
case CurrencyCLF:
return []CountryCode{CHL}
case CurrencyCOU:
return []CountryCode{COL}
case CurrencyUYI:
return []CountryCode{URY}
case CurrencyUSD:
return []CountryCode{ASM, BES, IOT, ECU, SLV, GUM, HTI, MHL, FSM, MNP, PLW, PAN, PRI, TLS, TCA, UMI, USA, VGB, VIR}
case CurrencyUSN:
return []CountryCode{USA}
case CurrencyUZS:
return []CountryCode{UZB}
case CurrencyVUV:
return []CountryCode{VUT}
case CurrencyCHE:
return []CountryCode{CHE}
case CurrencyCHW:
return []CountryCode{CHE}
case CurrencyKRW:
return []CountryCode{KOR}
case CurrencyYER:
return []CountryCode{YEM}
case CurrencyJPY:
return []CountryCode{JPN}
case CurrencyCNY:
return []CountryCode{CHN}
case CurrencyYUD:
return []CountryCode{YUG}
case CurrencyZMW:
return []CountryCode{ZMB}
case CurrencyZWL:
return []CountryCode{ZWE}
case CurrencyPLN:
return []CountryCode{POL}
case CurrencyNON:
return []CountryCode{NON}
}
return []CountryCode{Unknown}
}
// AllCurrencies - return all currencies codes
func AllCurrencies() []CurrencyCode {
return []CurrencyCode{
CurrencyAFN,
CurrencyALL,
CurrencyDZD,
CurrencyUSD,
CurrencyEUR,
CurrencyAOA,
CurrencyXCD,
CurrencyARS,
CurrencyAMD,
CurrencyAWG,
CurrencyAUD,
CurrencyAZN,
CurrencyBSD,
CurrencyBHD,
CurrencyBDT,
CurrencyBBD,
CurrencyBYN,
CurrencyBZD,
CurrencyXOF,
CurrencyBMD,
CurrencyBTN,
CurrencyINR,
CurrencyBOB,
CurrencyBAM,
CurrencyBWP,
CurrencyNOK,
CurrencyBRL,
CurrencyBND,
CurrencyBGN,
CurrencyBIF,
CurrencyCVE,
CurrencyKHR,
CurrencyXAF,
CurrencyCAD,
CurrencyKYD,
CurrencyCLF,
CurrencyCLP,
CurrencyCNY,
CurrencyCOP,
CurrencyCOU,
CurrencyKMF,
CurrencyCDF,
CurrencyNZD,
CurrencyCRC,
CurrencyHRK,
CurrencyCUC,
CurrencyCUP,
CurrencyANG,
CurrencyCZK,
CurrencyDKK,
CurrencyDJF,
CurrencyDOP,
CurrencyEGP,
CurrencySVC,
CurrencyERN,
CurrencyETB,
CurrencyFKP,
CurrencyFJD,
CurrencyXPF,
CurrencyGMD,
CurrencyGEL,
CurrencyGHS,
CurrencyGIP,
CurrencyGTQ,
CurrencyGBP,
CurrencyGNF,
CurrencyGYD,
CurrencyHTG,
CurrencyHNL,
CurrencyHKD,
CurrencyHUF,
CurrencyISK,
CurrencyIDR,
CurrencyXDR,
CurrencyIRR,
CurrencyIQD,
CurrencyILS,
CurrencyJMD,
CurrencyJPY,
CurrencyJOD,
CurrencyKZT,
CurrencyKES,
CurrencyKPW,
CurrencyKRW,
CurrencyKWD,
CurrencyKGS,
CurrencyLAK,
CurrencyLBP,
CurrencyLSL,
CurrencyZAR,
CurrencyLRD,
CurrencyLYD,
CurrencyCHF,
CurrencyMOP,
CurrencyMKD,
CurrencyMGA,
CurrencyMWK,
CurrencyMYR,
CurrencyMVR,
CurrencyMRU,
CurrencyMUR,
CurrencyXUA,
CurrencyMXN,
CurrencyMXV,
CurrencyMDL,
CurrencyMNT,
CurrencyMAD,
CurrencyMZN,
CurrencyMMK,
CurrencyNAD,
CurrencyNPR,
CurrencyNIO,
CurrencyNGN,
CurrencyOMR,
CurrencyPKR,
CurrencyPAB,
CurrencyPGK,
CurrencyPYG,
CurrencyPEN,
CurrencyPHP,
CurrencyPLN,
CurrencyQAR,
CurrencyRON,
CurrencyRUB,
CurrencyRWF,
CurrencySHP,
CurrencyWST,
CurrencySTN,
CurrencySAR,
CurrencyRSD,
CurrencySCR,
CurrencySLL,
CurrencySGD,
CurrencyXSU,
CurrencySBD,
CurrencySOS,
CurrencySSP,
CurrencyLKR,
CurrencySDG,
CurrencySRD,
CurrencySZL,
CurrencySEK,
CurrencyCHE,
CurrencyCHW,
CurrencySYP,
CurrencyTWD,
CurrencyTJS,
CurrencyTZS,
CurrencyTHB,
CurrencyTOP,
CurrencyTTD,
CurrencyTND,
CurrencyTRY,
CurrencyTMT,
CurrencyUGX,
CurrencyUAH,
CurrencyAED,
CurrencyUSN,
CurrencyUYI,
CurrencyUYU,
CurrencyUZS,
CurrencyVUV,
CurrencyVES,
CurrencyVEF,
CurrencyVND,
CurrencyYER,
CurrencyZMW,
CurrencyYUD,
CurrencyZWL,
}
}
// Digits - returns a number of digits used for each currency
//
//nolint:gocyclo
func (c CurrencyCode) Digits() int { //nolint:gocyclo
switch c {
case CurrencyAFN:
return 0
case CurrencyALL:
return 0
case CurrencyDZD:
return 2
case CurrencyUSD:
return 2
case CurrencyEUR:
return 2
case CurrencyAOA:
return 2
case CurrencyXCD:
return 2
case CurrencyARS:
return 2
case CurrencyAMD:
return 0
case CurrencyAWG:
return 2
case CurrencyAUD:
return 2
case CurrencyAZN:
return 2
case CurrencyBSD:
return 2
case CurrencyBHD:
return 3
case CurrencyBDT:
return 2
case CurrencyBBD:
return 2
case CurrencyBYN:
return 0
case CurrencyBZD:
return 2
case CurrencyXOF:
return 0
case CurrencyBMD:
return 2
case CurrencyBTN:
return 2
case CurrencyINR:
return 2
case CurrencyBOB:
return 2
case CurrencyBAM:
return 2
case CurrencyBWP:
return 2
case CurrencyNOK:
return 2
case CurrencyBRL:
return 2
case CurrencyBND:
return 2
case CurrencyBGN:
return 2
case CurrencyBIF:
return 0
case CurrencyCVE:
return 2
case CurrencyKHR:
return 2
case CurrencyXAF:
return 0
case CurrencyCAD:
return 2
case CurrencyKYD:
return 2
case CurrencyCLF:
return 4
case CurrencyCLP:
return 0
case CurrencyCNY:
return 2
case CurrencyCOP:
return 2
case CurrencyCOU:
return 2
case CurrencyKMF:
return 0
case CurrencyCDF:
return 2
case CurrencyNZD:
return 2
case CurrencyCRC:
return 2
case CurrencyHRK:
return 2
case CurrencyCUC:
return 2
case CurrencyCUP:
return 2
case CurrencyANG:
return 2
case CurrencyCZK:
return 2
case CurrencyDKK:
return 2
case CurrencyDJF:
return 0
case CurrencyDOP:
return 2
case CurrencyEGP:
return 2
case CurrencySVC:
return 2
case CurrencyERN:
return 2
case CurrencyETB:
return 2
case CurrencyFKP:
return 2
case CurrencyFJD:
return 2
case CurrencyXPF:
return 0
case CurrencyGMD:
return 2
case CurrencyGEL:
return 2
case CurrencyGHS:
return 2
case CurrencyGIP:
return 2
case CurrencyGTQ:
return 2
case CurrencyGBP:
return 2
case CurrencyGNF:
return 0
case CurrencyGYD:
return 0
case CurrencyHTG:
return 2
case CurrencyHNL:
return 2
case CurrencyHKD:
return 2
case CurrencyHUF:
return 2
case CurrencyISK:
return 0
case CurrencyIDR:
return 0
case CurrencyXDR:
return 2
case CurrencyIRR:
return 0
case CurrencyIQD:
return 3
case CurrencyILS:
return 2
case CurrencyJMD:
return 2
case CurrencyJPY:
return 0
case CurrencyJOD:
return 3
case CurrencyKZT:
return 2
case CurrencyKES:
return 2
case CurrencyKPW:
return 0
case CurrencyKRW:
return 0
case CurrencyKWD:
return 3
case CurrencyKGS:
return 2
case CurrencyLAK:
return 0
case CurrencyLBP:
return 0
case CurrencyLSL:
return 2
case CurrencyZAR:
return 2
case CurrencyLRD:
return 2
case CurrencyLYD:
return 3
case CurrencyCHF:
return 2
case CurrencyMOP:
return 2
case CurrencyMKD:
return 2
case CurrencyMGA:
return 0
case CurrencyMWK:
return 2
case CurrencyMYR:
return 2
case CurrencyMVR:
return 2
case CurrencyMRU:
return 2
case CurrencyMUR:
return 0
case CurrencyXUA:
return 2
case CurrencyMXN:
return 2
case CurrencyMXV:
return 2
case CurrencyMDL:
return 2
case CurrencyMNT:
return 0
case CurrencyMAD:
return 2
case CurrencyMZN:
return 2
case CurrencyMMK:
return 0
case CurrencyNAD:
return 2
case CurrencyNPR:
return 2
case CurrencyNIO:
return 2
case CurrencyNGN:
return 2
case CurrencyOMR:
return 3
case CurrencyPKR:
return 2
case CurrencyPAB:
return 2
case CurrencyPGK:
return 2
case CurrencyPYG:
return 0
case CurrencyPEN:
return 2
case CurrencyPHP:
return 2
case CurrencyPLN:
return 2
case CurrencyQAR:
return 2
case CurrencyRON:
return 2
case CurrencyRUB:
return 2
case CurrencyRWF:
return 0
case CurrencySHP:
return 2
case CurrencyWST:
return 2
case CurrencySTN:
return 2
case CurrencySAR:
return 2
case CurrencyRSD:
return 2
case CurrencySCR:
return 2
case CurrencySLL:
return 0
case CurrencySGD:
return 2
case CurrencyXSU:
return 2
case CurrencySBD:
return 2
case CurrencySOS:
return 0
case CurrencySSP:
return 2
case CurrencyLKR:
return 2
case CurrencySDG:
return 2
case CurrencySRD:
return 2
case CurrencySZL:
return 2
case CurrencySEK:
return 2
case CurrencyCHE:
return 2
case CurrencyCHW:
return 2
case CurrencySYP:
return 0
case CurrencyTWD:
return 2
case CurrencyTJS:
return 2
case CurrencyTZS:
return 0
case CurrencyTHB:
return 2
case CurrencyTOP:
return 2
case CurrencyTTD:
return 2
case CurrencyTND:
return 3
case CurrencyTRY:
return 2
case CurrencyTMT:
return 2
case CurrencyUGX:
return 0
case CurrencyUAH:
return 2
case CurrencyAED:
return 2
case CurrencyUSN:
return 2
case CurrencyUYI:
return 0
case CurrencyUYU:
return 2
case CurrencyUZS:
return 0
case CurrencyVUV:
return 0
case CurrencyVES, CurrencyVEF:
return 2
case CurrencyVND:
return 0
case CurrencyYER:
return 0
case CurrencyZMW:
return 2
case CurrencyYUD:
return 2
case CurrencyZWL:
return 2
case CurrencyNON:
return 0
}
return -1 // never gone here
}
// NickelRounding - returns true, if the currency uses ânickel roundingâ in transactions
func (c CurrencyCode) NickelRounding() bool {
switch c {
case CurrencyCAD, CurrencyDKK, CurrencyCHF:
return true
}
return false
}
// Info - return all info about currency as Currency struct
func (c CurrencyCode) Info() *Currency {
return &Currency{
NickelRounding: c.NickelRounding(),
Name: c.String(),
Alpha: c.Alpha(),
Digits: c.Digits(),
Code: c,
Countries: c.Countries(),
}
}
// Type implements Typer interface.
func (currency *Currency) Type() string {
return TypeCurrency
}
// Value implements database/sql/driver.Valuer
func (currency Currency) Value() (Value, error) {
return json.Marshal(currency)
}
// Scan implements database/sql.Scanner
func (currency *Currency) Scan(src interface{}) error {
if currency == nil {
return fmt.Errorf("countries::Scan: Currency scan err: currency == nil")
}
switch src := src.(type) {
case *Currency:
*currency = *src
case Currency:
*currency = src
default:
return fmt.Errorf("countries::Scan: Currency scan err: unexpected value of type %T for %T", src, *currency)
}
return nil
}
// AllCurrenciesInfo - return all currencies as []Currency
func AllCurrenciesInfo() []*Currency {
all := AllCurrencies()
currencies := make([]*Currency, 0, len(all))
for _, v := range all {
currencies = append(currencies, v.Info())
}
return currencies
}
// CurrencyCodeByName - return CurrencyCode by currencyCode Alpha name, case-insensitive, example: currencyUSD := CurrencyCodeByName("usd") OR currencyUSD := CurrencyCodeByName("USD")
//
//nolint:gocyclo
func CurrencyCodeByName(name string) CurrencyCode { //nolint:gocyclo
switch textPrepare(name) {
case "AFN", "AFGHANI", "AFHANI":
return CurrencyAFN
case "ALL", "LEK":
return CurrencyALL
case "DZD", "ALGERIANDINAR":
return CurrencyDZD
case "USD", "USDOLLAR", "USADOLLAR", "AMERICANDOLLAR":
return CurrencyUSD
case "EUR", "EURO":
return CurrencyEUR
case "AOA", "KWANZA":
return CurrencyAOA
case "XCD", "EASTCARIBBEANDOLLAR":
return CurrencyXCD
case "ARS", "ARGENTINEPESO":
return CurrencyARS
case "AMD", "ARMENIANDRAM":
return CurrencyAMD
case "AWG", "ARUBANFLORIN":
return CurrencyAWG
case "AUD", "AUSTRALIANDOLLAR":
return CurrencyAUD
case "AZN", "AZERBAIJANIANMANAT":
return CurrencyAZN
case "BSD", "BAHAMIANDOLLAR":
return CurrencyBSD
case "BHD", "BAHRAINIDINAR":
return CurrencyBHD
case "BDT", "TAKA":
return CurrencyBDT
case "BBD", "BARBADOSDOLLAR":
return CurrencyBBD
case "BYN", "BELARUSSIANRUBLE":
return CurrencyBYN
case "BZD", "BELIZEDOLLAR":
return CurrencyBZD
case "XOF", "CFAFRANCBCEAO":
return CurrencyXOF
case "BMD", "BERMUDIANDOLLAR":
return CurrencyBMD
case "BTN", "NGULTRUM":
return CurrencyBTN
case "INR", "INDIANRUPEE", "INDIANRUPE", "INDIARUPEE", "INDIARUPE":
return CurrencyINR
case "BOB", "BOLIVIANO", "BOLIVIAN", "BOLIVIA":
return CurrencyBOB
case "BAM", "CONVERTIBLEMARK":
return CurrencyBAM
case "BWP", "PULA":
return CurrencyBWP
case "NOK", "NORWEGIANKRONE":
return CurrencyNOK
case "BRL", "BRAZILIANREAL":
return CurrencyBRL
case "BND", "BRUNEIDOLLAR":
return CurrencyBND
case "BGN", "BULGARIANLEV":
return CurrencyBGN
case "BIF", "BURUNDIFRANC":
return CurrencyBIF
case "CVE", "CABOVERDEESCUDO":
return CurrencyCVE
case "KHR", "RIEL":
return CurrencyKHR
case "XAF", "CFAFRANCBEAC":
return CurrencyXAF
case "CAD", "CANADIANDOLLAR":
return CurrencyCAD
case "KYD", "CAYMANISLANDSDOLLAR":
return CurrencyKYD
case "CLF", "UNIDADDEFOMENTO", "UNIDADFOMENTO":
return CurrencyCLF
case "CLP", "CHILEANPESO", "CHILE", "CHILI", "CHILLE", "CHILLI", "CHILEAN", "CHILLEAN":
return CurrencyCLP
case "CNY", "YUANRENMINBI":
return CurrencyCNY
case "COP", "COLOMBIANPESO":
return CurrencyCOP
case "COU", "UNIDADDEVALORREAL", "UVR", "COLOMBIA":
return CurrencyCOU
case "KMF", "COMOROFRANC":
return CurrencyKMF
case "CDF", "CONGOLESEFRANC":
return CurrencyCDF
case "NZD", "NEWZEALANDDOLLAR":
return CurrencyNZD
case "CRC", "COSTARICANCOLON":
return CurrencyCRC
case "HRK", "KUNA":
return CurrencyHRK
case "CUC", "PESOCONVERTIBLE":
return CurrencyCUC
case "CUP", "CUBANPESO":
return CurrencyCUP
case "ANG", "NETHERLANDSANTILLEANGUILDER":
return CurrencyANG
case "CZK", "CZECHKORUNA":
return CurrencyCZK
case "DKK", "DANISHKRONE":
return CurrencyDKK
case "DJF", "DJIBOUTIFRANC":
return CurrencyDJF
case "DOP", "DOMINICANPESO":
return CurrencyDOP
case "EGP", "EGYPTIANPOUND":
return CurrencyEGP
case "SVC", "ELSALVADORCOLON":
return CurrencySVC
case "ERN", "NAKFA":
return CurrencyERN
case "ETB", "ETHIOPIANBIRR":
return CurrencyETB
case "FKP", "FALKLANDISLANDSPOUND":
return CurrencyFKP
case "FJD", "FIJIDOLLAR":
return CurrencyFJD
case "XPF", "CFPFRANC":
return CurrencyXPF
case "GMD", "DALASI":
return CurrencyGMD
case "GEL", "LARI":
return CurrencyGEL
case "GHS", "GHANACEDI":
return CurrencyGHS
case "GIP", "GIBRALTARPOUND":
return CurrencyGIP
case "GTQ", "QUETZAL":
return CurrencyGTQ
case "GBP", "POUNDSTERLING":
return CurrencyGBP
case "GNF", "GUINEAFRANC":
return CurrencyGNF
case "GYD", "GUYANADOLLAR":
return CurrencyGYD
case "HTG", "GOURDE":
return CurrencyHTG
case "HNL", "LEMPIRA":
return CurrencyHNL
case "HKD", "HONGKONGDOLLAR":
return CurrencyHKD
case "HUF", "FORINT":
return CurrencyHUF
case "ISK", "ICELANDKRONA":
return CurrencyISK
case "IDR", "RUPIAH":
return CurrencyIDR
case "XDR", "SDR", "SDRSPECIALDRAWINGRIGHT":
return CurrencyXDR
case "IRR", "IRANIANRIAL":
return CurrencyIRR
case "IQD", "IRAQIDINAR", "IRAQDINAR":
return CurrencyIQD
case "ILS", "SHEQEL", "NEWISRAELISHEQEL":
return CurrencyILS
case "PLS", "PSE", "PALESTINE", "PALESTINA", "PALAISTINE", "PALAESTINA", "PALESTINIAN", "PALESTINIANTERRITORY":
return CurrencyILS
case "JMD", "JAMAICANDOLLAR", "JAMAICADOLLAR":
return CurrencyJMD
case "JPY", "YEN", "YENA":
return CurrencyJPY
case "JOD", "JORDANIANDINAR", "JORDANDINAR":
return CurrencyJOD
case "KZT", "TENGE", "TANGE":
return CurrencyKZT
case "KES", "KENYANSHILLING":
return CurrencyKES
case "KPW", "NORTHKOREANWON":
return CurrencyKPW
case "KRW", "WON":
return CurrencyKRW
case "KWD", "KUWAITIDINAR":
return CurrencyKWD
case "KGS", "SOM":
return CurrencyKGS
case "LAK", "KIP":
return CurrencyLAK
case "LBP", "LEBANESEPOUND":
return CurrencyLBP
case "LSL", "LOTI":
return CurrencyLSL
case "ZAR", "RAND":
return CurrencyZAR
case "LRD", "LIBERIANDOLLAR":
return CurrencyLRD
case "LYD", "LIBYANDINAR":
return CurrencyLYD
case "CHF", "SWISSFRANC":
return CurrencyCHF
case "MOP", "PATACA":
return CurrencyMOP
case "MKD", "DENAR":
return CurrencyMKD
case "MGA", "MALAGASYARIARY":
return CurrencyMGA
case "MWK", "KWACHA":
return CurrencyMWK
case "MYR", "MALAYSIANRINGGIT":
return CurrencyMYR
case "MVR", "RUFIYAA":
return CurrencyMVR
case "MRU", "OUGUIYA":
return CurrencyMRU
case "MUR", "MAURITIUSRUPEE":
return CurrencyMUR
case "XUA", "ADBUNITOFACCOUNT":
return CurrencyXUA
case "MXN", "MEXICANPESO":
return CurrencyMXN
case "MXV", "UDI", "MEXICANUNIDADDEINVERSIONUDI", "MEXICANUNIDADDEINVERSION", "MEXICO":
return CurrencyMXV
case "MDL", "MOLDOVANLEU":
return CurrencyMDL
case "MNT", "TUGRIK":
return CurrencyMNT
case "MAD", "MOROCCANDIRHAM":
return CurrencyMAD
case "MZN", "MOZAMBIQUEMETICAL":
return CurrencyMZN
case "MMK", "KYAT":
return CurrencyMMK
case "NAD", "NAMIBIADOLLAR":
return CurrencyNAD
case "NPR", "NEPALESERUPEE":
return CurrencyNPR
case "NIO", "CORDOBAORO":
return CurrencyNIO
case "NGN", "NAIRA":
return CurrencyNGN
case "OMR", "RIALOMANI":
return CurrencyOMR
case "PKR", "PAKISTANRUPEE":
return CurrencyPKR
case "PAB", "BALBOA":
return CurrencyPAB
case "PGK", "KINA":
return CurrencyPGK
case "PYG", "GUARANI":
return CurrencyPYG
case "PEN", "NUEVOSOL":
return CurrencyPEN
case "PHP", "PHILIPPINEPESO":
return CurrencyPHP
case "PLN", "ZLOTY":
return CurrencyPLN
case "QAR", "QATARIRIAL":
return CurrencyQAR
case "RON", "ROMANIANLEU":
return CurrencyRON
case "RUB", "RUSSIANRUBLE":
return CurrencyRUB
case "RWF", "RWANDAFRANC":
return CurrencyRWF
case "SHP", "SAINTHELENAPOUND":
return CurrencySHP
case "WST", "TALA":
return CurrencyWST
case "STN", "DOBRA":
return CurrencySTN
case "SAR", "SAUDIRIYAL":
return CurrencySAR
case "RSD", "SERBIANDINAR":
return CurrencyRSD
case "SCR", "SEYCHELLESRUPEE":
return CurrencySCR
case "SLL", "LEONE":
return CurrencySLL
case "SGD", "SINGAPOREDOLLAR":
return CurrencySGD
case "XSU", "SUCRE":
return CurrencyXSU
case "SBD", "SOLOMONISLANDSDOLLAR":
return CurrencySBD
case "SOS", "SOMALISHILLING":
return CurrencySOS
case "SSP", "SOUTHSUDANESEPOUND":
return CurrencySSP
case "LKR", "SRILANKARUPEE":
return CurrencyLKR
case "SDG", "SUDANESEPOUND":
return CurrencySDG
case "SRD", "SURINAMDOLLAR":
return CurrencySRD
case "SZL", "LILANGENI":
return CurrencySZL
case "SEK", "SWEDISHKRONA":
return CurrencySEK
case "CHE", "WIREURO":
return CurrencyCHE
case "CHW", "WIRFRANC":
return CurrencyCHW
case "SYP", "SYRIANPOUND", "SYRIAPOUND":
return CurrencySYP
case "TWD", "NEWTAIWANDOLLAR":
return CurrencyTWD
case "TJS", "SOMONI":
return CurrencyTJS
case "TZS", "TANZANIANSHILLING", "TANZANSHILLING":
return CurrencyTZS
case "THB", "BAHT":
return CurrencyTHB
case "TOP", "PAâANGA":
return CurrencyTOP
case "TTD", "TRINIDADANDTOBAGODOLLAR", "TRINIDADDOLLAR":
return CurrencyTTD
case "TND", "TUNISIANDINAR":
return CurrencyTND
case "TRY", "TURKISHLIRA":
return CurrencyTRY
case "TMT", "TURKMENISTANNEWMANAT":
return CurrencyTMT
case "UGX", "UGANDASHILLING":
return CurrencyUGX
case "UAH", "HRYVNIA":
return CurrencyUAH
case "AED", "UAEDIRHAM":
return CurrencyAED
case "USN", "USDOLLARNEXTDAY", "NEXTDAY":
return CurrencyUSN
case "UYI", "URUIURUI", "URUGUAYPESOENUNIDADESINDEXADASURUIURUI", "URUGUAYPESOENUNIDADESINDEXADAS":
return CurrencyUYI
case "UYU", "PESOURUGUAYO":
return CurrencyUYU
case "UZS", "UZBEKISTANSUM":
return CurrencyUZS
case "VUV", "VATU":
return CurrencyVUV
case "VES", "BOLIVAR", "BOLĂVAR", "BOLĂVARFUERTE", "VENEZUELANBOLĂVARFUERTE", "BOLIVARFUERTE", "VENEZUELANBOLIVARFUERTE", "VENEZUELA", "VENESUELA":
return CurrencyVES
case "VEF":
return CurrencyVEF
case "VND", "DONG":
return CurrencyVND
case "YER", "YEMENIRIAL":
return CurrencyYER
case "ZMW", "ZAMBIANKWACHA":
return CurrencyZMW
case "YUD", "YUGOSLAVIANDINAR":
return CurrencyYUD
case "ZWL", "ZIMBABWEDOLLAR":
return CurrencyZWL
case "XX", "NON", "NONE":
return CurrencyNON
}
return CurrencyUnknown
}