Completed
Push — master ( 7f7e0b...5ab691 )
by Nikola
02:14
created

CurrencyCode::validate()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 10
ccs 5
cts 5
cp 1
rs 9.4286
cc 2
eloc 5
nc 2
nop 1
crap 2
1
<?php
2
3
namespace RunOpenCode\ExchangeRate\Utils;
4
5
use RunOpenCode\ExchangeRate\Exception\UnknownCurrencyCodeException;
6
7
final class CurrencyCode
8
{
9
    private function __construct() { }
10
11
    /**
12
     * List of currency codes.
13
     *
14
     * @see https://gist.github.com/Min2liz/5728013
15
     *
16
     * @var array
17
     */
18
    private static $codes = array(
19
        'ALL' => 'Albania Lek',
20
        'AFN' => 'Afghanistan Afghani',
21
        'ARS' => 'Argentina Peso',
22
        'AWG' => 'Aruba Guilder',
23
        'AUD' => 'Australia Dollar',
24
        'AZN' => 'Azerbaijan New Manat',
25
        'BSD' => 'Bahamas Dollar',
26
        'BBD' => 'Barbados Dollar',
27
        'BDT' => 'Bangladeshi taka',
28
        'BYR' => 'Belarus Ruble',
29
        'BZD' => 'Belize Dollar',
30
        'BMD' => 'Bermuda Dollar',
31
        'BOB' => 'Bolivia Boliviano',
32
        'BAM' => 'Bosnia and Herzegovina Convertible Marka',
33
        'BWP' => 'Botswana Pula',
34
        'BGN' => 'Bulgaria Lev',
35
        'BRL' => 'Brazil Real',
36
        'BND' => 'Brunei Darussalam Dollar',
37
        'KHR' => 'Cambodia Riel',
38
        'CAD' => 'Canada Dollar',
39
        'KYD' => 'Cayman Islands Dollar',
40
        'CLP' => 'Chile Peso',
41
        'CNY' => 'China Yuan Renminbi',
42
        'COP' => 'Colombia Peso',
43
        'CRC' => 'Costa Rica Colon',
44
        'HRK' => 'Croatia Kuna',
45
        'CUP' => 'Cuba Peso',
46
        'CZK' => 'Czech Republic Koruna',
47
        'DKK' => 'Denmark Krone',
48
        'DOP' => 'Dominican Republic Peso',
49
        'XCD' => 'East Caribbean Dollar',
50
        'EGP' => 'Egypt Pound',
51
        'SVC' => 'El Salvador Colon',
52
        'EEK' => 'Estonia Kroon',
53
        'EUR' => 'Euro Member Countries',
54
        'FKP' => 'Falkland Islands (Malvinas) Pound',
55
        'FJD' => 'Fiji Dollar',
56
        'GHC' => 'Ghana Cedis',
57
        'GIP' => 'Gibraltar Pound',
58
        'GTQ' => 'Guatemala Quetzal',
59
        'GGP' => 'Guernsey Pound',
60
        'GYD' => 'Guyana Dollar',
61
        'HNL' => 'Honduras Lempira',
62
        'HKD' => 'Hong Kong Dollar',
63
        'HUF' => 'Hungary Forint',
64
        'ISK' => 'Iceland Krona',
65
        'INR' => 'India Rupee',
66
        'IDR' => 'Indonesia Rupiah',
67
        'IRR' => 'Iran Rial',
68
        'IMP' => 'Isle of Man Pound',
69
        'ILS' => 'Israel Shekel',
70
        'JMD' => 'Jamaica Dollar',
71
        'JPY' => 'Japan Yen',
72
        'JEP' => 'Jersey Pound',
73
        'KZT' => 'Kazakhstan Tenge',
74
        'KPW' => 'Korea (North) Won',
75
        'KRW' => 'Korea (South) Won',
76
        'KGS' => 'Kyrgyzstan Som',
77
        'LAK' => 'Laos Kip',
78
        'LVL' => 'Latvia Lat',
79
        'LBP' => 'Lebanon Pound',
80
        'LRD' => 'Liberia Dollar',
81
        'LTL' => 'Lithuania Litas',
82
        'MKD' => 'Macedonia Denar',
83
        'MYR' => 'Malaysia Ringgit',
84
        'MUR' => 'Mauritius Rupee',
85
        'MXN' => 'Mexico Peso',
86
        'MNT' => 'Mongolia Tughrik',
87
        'MZN' => 'Mozambique Metical',
88
        'NAD' => 'Namibia Dollar',
89
        'NPR' => 'Nepal Rupee',
90
        'ANG' => 'Netherlands Antilles Guilder',
91
        'NZD' => 'New Zealand Dollar',
92
        'NIO' => 'Nicaragua Cordoba',
93
        'NGN' => 'Nigeria Naira',
94
        'NOK' => 'Norway Krone',
95
        'OMR' => 'Oman Rial',
96
        'PKR' => 'Pakistan Rupee',
97
        'PAB' => 'Panama Balboa',
98
        'PYG' => 'Paraguay Guarani',
99
        'PEN' => 'Peru Nuevo Sol',
100
        'PHP' => 'Philippines Peso',
101
        'PLN' => 'Poland Zloty',
102
        'QAR' => 'Qatar Riyal',
103
        'RON' => 'Romania New Leu',
104
        'RUB' => 'Russia Ruble',
105
        'SHP' => 'Saint Helena Pound',
106
        'SAR' => 'Saudi Arabia Riyal',
107
        'RSD' => 'Serbia Dinar',
108
        'SCR' => 'Seychelles Rupee',
109
        'SGD' => 'Singapore Dollar',
110
        'SBD' => 'Solomon Islands Dollar',
111
        'SOS' => 'Somalia Shilling',
112
        'ZAR' => 'South Africa Rand',
113
        'LKR' => 'Sri Lanka Rupee',
114
        'SEK' => 'Sweden Krona',
115
        'CHF' => 'Switzerland Franc',
116
        'SRD' => 'Suriname Dollar',
117
        'SYP' => 'Syria Pound',
118
        'TWD' => 'Taiwan New Dollar',
119
        'THB' => 'Thailand Baht',
120
        'TTD' => 'Trinidad and Tobago Dollar',
121
        'TRY' => 'Turkey Lira',
122
        'TRL' => 'Turkey Lira',
123
        'TVD' => 'Tuvalu Dollar',
124
        'UAH' => 'Ukraine Hryvna',
125
        'GBP' => 'United Kingdom Pound',
126
        'UGX' => 'Uganda Shilling',
127
        'USD' => 'United States Dollar',
128
        'UYU' => 'Uruguay Peso',
129
        'UZS' => 'Uzbekistan Som',
130
        'VEF' => 'Venezuela Bolivar',
131
        'VND' => 'Viet Nam Dong',
132
        'YER' => 'Yemen Rial',
133
        'ZWD' => 'Zimbabwe Dollar',
134
        'KWD' => 'Kuwait Dinar',
135
        'ATS' => 'Austrian Schilling',
136
        'BEF' => 'Belgian Franc',
137
        'FIM' => 'Finnish Markka',
138
        'FRF' => 'French Franc',
139
        'DEM' => 'German Mark',
140
        'GRD' => '',
141
        'IEP' => '',
142
        'ITL' => '',
143
        'LUF' => '',
144
        'PTE' => '',
145
        'ESP' => '',
146
        'XDR' => ''
147
    );
148
149 8
    public static function exists($currencyCode)
150
    {
151 8
        return array_key_exists($currencyCode, self::$codes);
152
    }
153
154 4
    public static function validate($currencyCode)
155
    {
156 4
        $currencyCode = trim(strtoupper($currencyCode));
157
158 4
        if (!self::exists($currencyCode)) {
159 2
            throw new UnknownCurrencyCodeException(sprintf('Unknown currency code "%s".', $currencyCode));
160
        }
161
162 2
        return $currencyCode;
163
    }
164
}
165
166