You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

274 lines
7.1 KiB

  1. const countries = function() {
  2. const expect = chai.expect;
  3. // Source : https://gist.github.com/maephisto/9228207
  4. const isoCountries = {
  5. 'AF' : 'Afghanistan',
  6. 'AX' : 'Aland Islands',
  7. 'AL' : 'Albania',
  8. 'DZ' : 'Algeria',
  9. 'AS' : 'American Samoa',
  10. 'AD' : 'Andorra',
  11. 'AO' : 'Angola',
  12. 'AI' : 'Anguilla',
  13. 'AQ' : 'Antarctica',
  14. 'AG' : 'Antigua And Barbuda',
  15. 'AR' : 'Argentina',
  16. 'AM' : 'Armenia',
  17. 'AW' : 'Aruba',
  18. 'AU' : 'Australia',
  19. 'AT' : 'Austria',
  20. 'AZ' : 'Azerbaijan',
  21. 'BS' : 'Bahamas',
  22. 'BH' : 'Bahrain',
  23. 'BD' : 'Bangladesh',
  24. 'BB' : 'Barbados',
  25. 'BY' : 'Belarus',
  26. 'BE' : 'Belgium',
  27. 'BZ' : 'Belize',
  28. 'BJ' : 'Benin',
  29. 'BM' : 'Bermuda',
  30. 'BT' : 'Bhutan',
  31. 'BO' : 'Bolivia',
  32. 'BA' : 'Bosnia And Herzegovina',
  33. 'BW' : 'Botswana',
  34. 'BV' : 'Bouvet Island',
  35. 'BR' : 'Brazil',
  36. 'IO' : 'British Indian Ocean Territory',
  37. 'BN' : 'Brunei Darussalam',
  38. 'BG' : 'Bulgaria',
  39. 'BF' : 'Burkina Faso',
  40. 'BI' : 'Burundi',
  41. 'KH' : 'Cambodia',
  42. 'CM' : 'Cameroon',
  43. 'CA' : 'Canada',
  44. 'CV' : 'Cape Verde',
  45. 'KY' : 'Cayman Islands',
  46. 'CF' : 'Central African Republic',
  47. 'TD' : 'Chad',
  48. 'CL' : 'Chile',
  49. 'CN' : 'China',
  50. 'CX' : 'Christmas Island',
  51. 'CC' : 'Cocos (Keeling) Islands',
  52. 'CO' : 'Colombia',
  53. 'KM' : 'Comoros',
  54. 'CG' : 'Congo',
  55. 'CD' : 'Congo, Democratic Republic',
  56. 'CK' : 'Cook Islands',
  57. 'CR' : 'Costa Rica',
  58. 'CI' : 'Cote D\'Ivoire',
  59. 'HR' : 'Croatia',
  60. 'CU' : 'Cuba',
  61. 'CY' : 'Cyprus',
  62. 'CZ' : 'Czech Republic',
  63. 'DK' : 'Denmark',
  64. 'DJ' : 'Djibouti',
  65. 'DM' : 'Dominica',
  66. 'DO' : 'Dominican Republic',
  67. 'EC' : 'Ecuador',
  68. 'EG' : 'Egypt',
  69. 'SV' : 'El Salvador',
  70. 'GQ' : 'Equatorial Guinea',
  71. 'ER' : 'Eritrea',
  72. 'EE' : 'Estonia',
  73. 'ET' : 'Ethiopia',
  74. 'FK' : 'Falkland Islands (Malvinas)',
  75. 'FO' : 'Faroe Islands',
  76. 'FJ' : 'Fiji',
  77. 'FI' : 'Finland',
  78. 'FR' : 'France',
  79. 'GF' : 'French Guiana',
  80. 'PF' : 'French Polynesia',
  81. 'TF' : 'French Southern Territories',
  82. 'GA' : 'Gabon',
  83. 'GM' : 'Gambia',
  84. 'GE' : 'Georgia',
  85. 'DE' : 'Germany',
  86. 'GH' : 'Ghana',
  87. 'GI' : 'Gibraltar',
  88. 'GR' : 'Greece',
  89. 'GL' : 'Greenland',
  90. 'GD' : 'Grenada',
  91. 'GP' : 'Guadeloupe',
  92. 'GU' : 'Guam',
  93. 'GT' : 'Guatemala',
  94. 'GG' : 'Guernsey',
  95. 'GN' : 'Guinea',
  96. 'GW' : 'Guinea-Bissau',
  97. 'GY' : 'Guyana',
  98. 'HT' : 'Haiti',
  99. 'HM' : 'Heard Island & Mcdonald Islands',
  100. 'VA' : 'Holy See (Vatican City State)',
  101. 'HN' : 'Honduras',
  102. 'HK' : 'Hong Kong',
  103. 'HU' : 'Hungary',
  104. 'IS' : 'Iceland',
  105. 'IN' : 'India',
  106. 'ID' : 'Indonesia',
  107. 'IR' : 'Iran, Islamic Republic Of',
  108. 'IQ' : 'Iraq',
  109. 'IE' : 'Ireland',
  110. 'IM' : 'Isle Of Man',
  111. 'IL' : 'Israel',
  112. 'IT' : 'Italy',
  113. 'JM' : 'Jamaica',
  114. 'JP' : 'Japan',
  115. 'JE' : 'Jersey',
  116. 'JO' : 'Jordan',
  117. 'KZ' : 'Kazakhstan',
  118. 'KE' : 'Kenya',
  119. 'KI' : 'Kiribati',
  120. 'KR' : 'Korea',
  121. 'KW' : 'Kuwait',
  122. 'KG' : 'Kyrgyzstan',
  123. 'LA' : 'Lao People\'s Democratic Republic',
  124. 'LV' : 'Latvia',
  125. 'LB' : 'Lebanon',
  126. 'LS' : 'Lesotho',
  127. 'LR' : 'Liberia',
  128. 'LY' : 'Libyan Arab Jamahiriya',
  129. 'LI' : 'Liechtenstein',
  130. 'LT' : 'Lithuania',
  131. 'LU' : 'Luxembourg',
  132. 'MO' : 'Macao',
  133. 'MK' : 'Macedonia',
  134. 'MG' : 'Madagascar',
  135. 'MW' : 'Malawi',
  136. 'MY' : 'Malaysia',
  137. 'MV' : 'Maldives',
  138. 'ML' : 'Mali',
  139. 'MT' : 'Malta',
  140. 'MH' : 'Marshall Islands',
  141. 'MQ' : 'Martinique',
  142. 'MR' : 'Mauritania',
  143. 'MU' : 'Mauritius',
  144. 'YT' : 'Mayotte',
  145. 'MX' : 'Mexico',
  146. 'FM' : 'Micronesia, Federated States Of',
  147. 'MD' : 'Moldova',
  148. 'MC' : 'Monaco',
  149. 'MN' : 'Mongolia',
  150. 'ME' : 'Montenegro',
  151. 'MS' : 'Montserrat',
  152. 'MA' : 'Morocco',
  153. 'MZ' : 'Mozambique',
  154. 'MM' : 'Myanmar',
  155. 'NA' : 'Namibia',
  156. 'NR' : 'Nauru',
  157. 'NP' : 'Nepal',
  158. 'NL' : 'Netherlands',
  159. 'AN' : 'Netherlands Antilles',
  160. 'NC' : 'New Caledonia',
  161. 'NZ' : 'New Zealand',
  162. 'NI' : 'Nicaragua',
  163. 'NE' : 'Niger',
  164. 'NG' : 'Nigeria',
  165. 'NU' : 'Niue',
  166. 'NF' : 'Norfolk Island',
  167. 'MP' : 'Northern Mariana Islands',
  168. 'NO' : 'Norway',
  169. 'OM' : 'Oman',
  170. 'PK' : 'Pakistan',
  171. 'PW' : 'Palau',
  172. 'PS' : 'Palestinian Territory, Occupied',
  173. 'PA' : 'Panama',
  174. 'PG' : 'Papua New Guinea',
  175. 'PY' : 'Paraguay',
  176. 'PE' : 'Peru',
  177. 'PH' : 'Philippines',
  178. 'PN' : 'Pitcairn',
  179. 'PL' : 'Poland',
  180. 'PT' : 'Portugal',
  181. 'PR' : 'Puerto Rico',
  182. 'QA' : 'Qatar',
  183. 'RE' : 'Reunion',
  184. 'RO' : 'Romania',
  185. 'RU' : 'Russian Federation',
  186. 'RW' : 'Rwanda',
  187. 'BL' : 'Saint Barthelemy',
  188. 'SH' : 'Saint Helena',
  189. 'KN' : 'Saint Kitts And Nevis',
  190. 'LC' : 'Saint Lucia',
  191. 'MF' : 'Saint Martin',
  192. 'PM' : 'Saint Pierre And Miquelon',
  193. 'VC' : 'Saint Vincent And Grenadines',
  194. 'WS' : 'Samoa',
  195. 'SM' : 'San Marino',
  196. 'ST' : 'Sao Tome And Principe',
  197. 'SA' : 'Saudi Arabia',
  198. 'SN' : 'Senegal',
  199. 'RS' : 'Serbia',
  200. 'SC' : 'Seychelles',
  201. 'SL' : 'Sierra Leone',
  202. 'SG' : 'Singapore',
  203. 'SK' : 'Slovakia',
  204. 'SI' : 'Slovenia',
  205. 'SB' : 'Solomon Islands',
  206. 'SO' : 'Somalia',
  207. 'ZA' : 'South Africa',
  208. 'GS' : 'South Georgia And Sandwich Isl.',
  209. 'ES' : 'Spain',
  210. 'LK' : 'Sri Lanka',
  211. 'SD' : 'Sudan',
  212. 'SR' : 'Suriname',
  213. 'SJ' : 'Svalbard And Jan Mayen',
  214. 'SZ' : 'Swaziland',
  215. 'SE' : 'Sweden',
  216. 'CH' : 'Switzerland',
  217. 'SY' : 'Syrian Arab Republic',
  218. 'TW' : 'Taiwan',
  219. 'TJ' : 'Tajikistan',
  220. 'TZ' : 'Tanzania',
  221. 'TH' : 'Thailand',
  222. 'TL' : 'Timor-Leste',
  223. 'TG' : 'Togo',
  224. 'TK' : 'Tokelau',
  225. 'TO' : 'Tonga',
  226. 'TT' : 'Trinidad And Tobago',
  227. 'TN' : 'Tunisia',
  228. 'TR' : 'Turkey',
  229. 'TM' : 'Turkmenistan',
  230. 'TC' : 'Turks And Caicos Islands',
  231. 'TV' : 'Tuvalu',
  232. 'UG' : 'Uganda',
  233. 'UA' : 'Ukraine',
  234. 'AE' : 'United Arab Emirates',
  235. 'GB' : 'United Kingdom',
  236. 'US' : 'United States',
  237. 'UM' : 'United States Outlying Islands',
  238. 'UY' : 'Uruguay',
  239. 'UZ' : 'Uzbekistan',
  240. 'VU' : 'Vanuatu',
  241. 'VE' : 'Venezuela',
  242. 'VN' : 'Viet Nam',
  243. 'VG' : 'Virgin Islands, British',
  244. 'VI' : 'Virgin Islands, U.S.',
  245. 'WF' : 'Wallis And Futuna',
  246. 'EH' : 'Western Sahara',
  247. 'YE' : 'Yemen',
  248. 'ZM' : 'Zambia',
  249. 'ZW' : 'Zimbabwe'
  250. };
  251. function getCountryName (countryCode) {
  252. if (isoCountries.hasOwnProperty(countryCode)) {
  253. return isoCountries[countryCode];
  254. } else {
  255. return null;
  256. }
  257. }
  258. return {
  259. getCountryName : getCountryName,
  260. isValidISOCode : function (isoCode) {
  261. expect(isoCode).to.be.ok;
  262. expect(isoCode).to.have.lengthOf(2);
  263. console.log(isoCode);
  264. return !!getCountryName(isoCode);
  265. }
  266. }
  267. }();