countries 4.1.3 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (273) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +40 -1
  3. data/README.markdown +42 -35
  4. data/Rakefile +23 -31
  5. data/lib/countries/cache/countries.json +1 -1
  6. data/lib/countries/cache/locales/nb.json +1 -1
  7. data/lib/countries/cache/locales/nn.json +1 -1
  8. data/lib/countries/country/class_methods.rb +19 -6
  9. data/lib/countries/country.rb +42 -2
  10. data/lib/countries/data/countries/AD.yaml +28 -29
  11. data/lib/countries/data/countries/AE.yaml +32 -33
  12. data/lib/countries/data/countries/AF.yaml +32 -33
  13. data/lib/countries/data/countries/AG.yaml +28 -29
  14. data/lib/countries/data/countries/AI.yaml +27 -28
  15. data/lib/countries/data/countries/AL.yaml +28 -29
  16. data/lib/countries/data/countries/AM.yaml +30 -31
  17. data/lib/countries/data/countries/AO.yaml +25 -26
  18. data/lib/countries/data/countries/AQ.yaml +24 -25
  19. data/lib/countries/data/countries/AR.yaml +30 -31
  20. data/lib/countries/data/countries/AS.yaml +31 -32
  21. data/lib/countries/data/countries/AT.yaml +36 -37
  22. data/lib/countries/data/countries/AU.yaml +33 -34
  23. data/lib/countries/data/countries/AW.yaml +25 -26
  24. data/lib/countries/data/countries/AX.yaml +27 -28
  25. data/lib/countries/data/countries/AZ.yaml +30 -31
  26. data/lib/countries/data/countries/BA.yaml +32 -33
  27. data/lib/countries/data/countries/BB.yaml +28 -29
  28. data/lib/countries/data/countries/BD.yaml +27 -28
  29. data/lib/countries/data/countries/BE.yaml +41 -42
  30. data/lib/countries/data/countries/BF.yaml +27 -28
  31. data/lib/countries/data/countries/BG.yaml +36 -37
  32. data/lib/countries/data/countries/BH.yaml +28 -29
  33. data/lib/countries/data/countries/BI.yaml +27 -28
  34. data/lib/countries/data/countries/BJ.yaml +26 -27
  35. data/lib/countries/data/countries/BL.yaml +25 -26
  36. data/lib/countries/data/countries/BM.yaml +29 -30
  37. data/lib/countries/data/countries/BN.yaml +26 -27
  38. data/lib/countries/data/countries/BO.yaml +31 -32
  39. data/lib/countries/data/countries/BQ.yaml +28 -29
  40. data/lib/countries/data/countries/BR.yaml +35 -36
  41. data/lib/countries/data/countries/BS.yaml +27 -28
  42. data/lib/countries/data/countries/BT.yaml +28 -29
  43. data/lib/countries/data/countries/BV.yaml +23 -24
  44. data/lib/countries/data/countries/BW.yaml +27 -28
  45. data/lib/countries/data/countries/BY.yaml +30 -31
  46. data/lib/countries/data/countries/BZ.yaml +28 -29
  47. data/lib/countries/data/countries/CA.yaml +30 -31
  48. data/lib/countries/data/countries/CC.yaml +28 -29
  49. data/lib/countries/data/countries/CD.yaml +35 -36
  50. data/lib/countries/data/countries/CF.yaml +29 -30
  51. data/lib/countries/data/countries/CG.yaml +29 -30
  52. data/lib/countries/data/countries/CH.yaml +40 -41
  53. data/lib/countries/data/countries/CI.yaml +27 -28
  54. data/lib/countries/data/countries/CK.yaml +27 -28
  55. data/lib/countries/data/countries/CL.yaml +32 -33
  56. data/lib/countries/data/countries/CM.yaml +29 -30
  57. data/lib/countries/data/countries/CN.yaml +28 -29
  58. data/lib/countries/data/countries/CO.yaml +28 -29
  59. data/lib/countries/data/countries/CR.yaml +26 -27
  60. data/lib/countries/data/countries/CU.yaml +27 -28
  61. data/lib/countries/data/countries/CV.yaml +28 -29
  62. data/lib/countries/data/countries/CW.yaml +25 -26
  63. data/lib/countries/data/countries/CX.yaml +30 -31
  64. data/lib/countries/data/countries/CY.yaml +40 -41
  65. data/lib/countries/data/countries/CZ.yaml +38 -39
  66. data/lib/countries/data/countries/DE.yaml +36 -37
  67. data/lib/countries/data/countries/DJ.yaml +29 -30
  68. data/lib/countries/data/countries/DK.yaml +35 -36
  69. data/lib/countries/data/countries/DM.yaml +26 -27
  70. data/lib/countries/data/countries/DO.yaml +28 -29
  71. data/lib/countries/data/countries/DZ.yaml +28 -29
  72. data/lib/countries/data/countries/EC.yaml +28 -29
  73. data/lib/countries/data/countries/EE.yaml +35 -36
  74. data/lib/countries/data/countries/EG.yaml +28 -29
  75. data/lib/countries/data/countries/EH.yaml +30 -31
  76. data/lib/countries/data/countries/ER.yaml +31 -32
  77. data/lib/countries/data/countries/ES.yaml +36 -37
  78. data/lib/countries/data/countries/ET.yaml +28 -29
  79. data/lib/countries/data/countries/FI.yaml +38 -39
  80. data/lib/countries/data/countries/FJ.yaml +33 -34
  81. data/lib/countries/data/countries/FK.yaml +29 -30
  82. data/lib/countries/data/countries/FM.yaml +28 -29
  83. data/lib/countries/data/countries/FO.yaml +28 -29
  84. data/lib/countries/data/countries/FR.yaml +37 -38
  85. data/lib/countries/data/countries/GA.yaml +27 -28
  86. data/lib/countries/data/countries/GB.yaml +39 -38
  87. data/lib/countries/data/countries/GD.yaml +26 -27
  88. data/lib/countries/data/countries/GE.yaml +28 -29
  89. data/lib/countries/data/countries/GF.yaml +29 -30
  90. data/lib/countries/data/countries/GG.yaml +30 -31
  91. data/lib/countries/data/countries/GH.yaml +27 -28
  92. data/lib/countries/data/countries/GI.yaml +26 -27
  93. data/lib/countries/data/countries/GL.yaml +29 -30
  94. data/lib/countries/data/countries/GM.yaml +25 -26
  95. data/lib/countries/data/countries/GN.yaml +30 -31
  96. data/lib/countries/data/countries/GP.yaml +27 -28
  97. data/lib/countries/data/countries/GQ.yaml +29 -30
  98. data/lib/countries/data/countries/GR.yaml +37 -38
  99. data/lib/countries/data/countries/GS.yaml +27 -28
  100. data/lib/countries/data/countries/GT.yaml +26 -27
  101. data/lib/countries/data/countries/GU.yaml +31 -32
  102. data/lib/countries/data/countries/GW.yaml +28 -29
  103. data/lib/countries/data/countries/GY.yaml +26 -27
  104. data/lib/countries/data/countries/HK.yaml +28 -29
  105. data/lib/countries/data/countries/HM.yaml +27 -28
  106. data/lib/countries/data/countries/HN.yaml +27 -28
  107. data/lib/countries/data/countries/HR.yaml +37 -38
  108. data/lib/countries/data/countries/HT.yaml +29 -30
  109. data/lib/countries/data/countries/HU.yaml +37 -38
  110. data/lib/countries/data/countries/ID.yaml +28 -29
  111. data/lib/countries/data/countries/IE.yaml +39 -40
  112. data/lib/countries/data/countries/IL.yaml +35 -29
  113. data/lib/countries/data/countries/IM.yaml +29 -30
  114. data/lib/countries/data/countries/IN.yaml +30 -31
  115. data/lib/countries/data/countries/IO.yaml +26 -27
  116. data/lib/countries/data/countries/IQ.yaml +28 -29
  117. data/lib/countries/data/countries/IR.yaml +28 -29
  118. data/lib/countries/data/countries/IS.yaml +35 -36
  119. data/lib/countries/data/countries/IT.yaml +36 -37
  120. data/lib/countries/data/countries/JE.yaml +26 -27
  121. data/lib/countries/data/countries/JM.yaml +28 -29
  122. data/lib/countries/data/countries/JO.yaml +28 -29
  123. data/lib/countries/data/countries/JP.yaml +28 -29
  124. data/lib/countries/data/countries/KE.yaml +29 -30
  125. data/lib/countries/data/countries/KG.yaml +30 -31
  126. data/lib/countries/data/countries/KH.yaml +28 -29
  127. data/lib/countries/data/countries/KI.yaml +25 -26
  128. data/lib/countries/data/countries/KM.yaml +29 -30
  129. data/lib/countries/data/countries/KN.yaml +29 -29
  130. data/lib/countries/data/countries/KP.yaml +27 -28
  131. data/lib/countries/data/countries/KR.yaml +28 -29
  132. data/lib/countries/data/countries/KW.yaml +28 -29
  133. data/lib/countries/data/countries/KY.yaml +29 -30
  134. data/lib/countries/data/countries/KZ.yaml +30 -31
  135. data/lib/countries/data/countries/LA.yaml +27 -28
  136. data/lib/countries/data/countries/LB.yaml +30 -31
  137. data/lib/countries/data/countries/LC.yaml +28 -29
  138. data/lib/countries/data/countries/LI.yaml +27 -28
  139. data/lib/countries/data/countries/LK.yaml +28 -29
  140. data/lib/countries/data/countries/LR.yaml +28 -29
  141. data/lib/countries/data/countries/LS.yaml +28 -29
  142. data/lib/countries/data/countries/LT.yaml +37 -38
  143. data/lib/countries/data/countries/LU.yaml +39 -40
  144. data/lib/countries/data/countries/LV.yaml +36 -37
  145. data/lib/countries/data/countries/LY.yaml +27 -28
  146. data/lib/countries/data/countries/MA.yaml +28 -29
  147. data/lib/countries/data/countries/MC.yaml +28 -29
  148. data/lib/countries/data/countries/MD.yaml +28 -29
  149. data/lib/countries/data/countries/ME.yaml +33 -34
  150. data/lib/countries/data/countries/MF.yaml +29 -30
  151. data/lib/countries/data/countries/MG.yaml +30 -31
  152. data/lib/countries/data/countries/MH.yaml +30 -31
  153. data/lib/countries/data/countries/MK.yaml +28 -29
  154. data/lib/countries/data/countries/ML.yaml +25 -26
  155. data/lib/countries/data/countries/MM.yaml +27 -28
  156. data/lib/countries/data/countries/MN.yaml +28 -29
  157. data/lib/countries/data/countries/MO.yaml +28 -29
  158. data/lib/countries/data/countries/MP.yaml +31 -32
  159. data/lib/countries/data/countries/MQ.yaml +27 -28
  160. data/lib/countries/data/countries/MR.yaml +29 -30
  161. data/lib/countries/data/countries/MS.yaml +26 -27
  162. data/lib/countries/data/countries/MT.yaml +36 -37
  163. data/lib/countries/data/countries/MU.yaml +28 -29
  164. data/lib/countries/data/countries/MV.yaml +28 -29
  165. data/lib/countries/data/countries/MW.yaml +27 -28
  166. data/lib/countries/data/countries/MX.yaml +33 -34
  167. data/lib/countries/data/countries/MY.yaml +30 -31
  168. data/lib/countries/data/countries/MZ.yaml +28 -29
  169. data/lib/countries/data/countries/NA.yaml +30 -31
  170. data/lib/countries/data/countries/NC.yaml +29 -30
  171. data/lib/countries/data/countries/NE.yaml +27 -28
  172. data/lib/countries/data/countries/NF.yaml +29 -30
  173. data/lib/countries/data/countries/NG.yaml +33 -34
  174. data/lib/countries/data/countries/NI.yaml +26 -27
  175. data/lib/countries/data/countries/NL.yaml +36 -37
  176. data/lib/countries/data/countries/NO.yaml +36 -37
  177. data/lib/countries/data/countries/NP.yaml +32 -33
  178. data/lib/countries/data/countries/NR.yaml +27 -28
  179. data/lib/countries/data/countries/NU.yaml +25 -26
  180. data/lib/countries/data/countries/NZ.yaml +34 -35
  181. data/lib/countries/data/countries/OM.yaml +28 -29
  182. data/lib/countries/data/countries/PA.yaml +26 -27
  183. data/lib/countries/data/countries/PE.yaml +28 -29
  184. data/lib/countries/data/countries/PF.yaml +29 -30
  185. data/lib/countries/data/countries/PG.yaml +28 -29
  186. data/lib/countries/data/countries/PH.yaml +35 -36
  187. data/lib/countries/data/countries/PK.yaml +30 -31
  188. data/lib/countries/data/countries/PL.yaml +36 -37
  189. data/lib/countries/data/countries/PM.yaml +29 -30
  190. data/lib/countries/data/countries/PN.yaml +27 -28
  191. data/lib/countries/data/countries/PR.yaml +28 -29
  192. data/lib/countries/data/countries/PS.yaml +31 -32
  193. data/lib/countries/data/countries/PT.yaml +33 -34
  194. data/lib/countries/data/countries/PW.yaml +26 -27
  195. data/lib/countries/data/countries/PY.yaml +28 -29
  196. data/lib/countries/data/countries/QA.yaml +27 -28
  197. data/lib/countries/data/countries/RE.yaml +28 -29
  198. data/lib/countries/data/countries/RO.yaml +37 -38
  199. data/lib/countries/data/countries/RS.yaml +28 -29
  200. data/lib/countries/data/countries/RU.yaml +28 -29
  201. data/lib/countries/data/countries/RW.yaml +31 -32
  202. data/lib/countries/data/countries/SA.yaml +33 -29
  203. data/lib/countries/data/countries/SB.yaml +27 -28
  204. data/lib/countries/data/countries/SC.yaml +28 -29
  205. data/lib/countries/data/countries/SD.yaml +30 -31
  206. data/lib/countries/data/countries/SE.yaml +37 -38
  207. data/lib/countries/data/countries/SG.yaml +32 -33
  208. data/lib/countries/data/countries/SH.yaml +29 -30
  209. data/lib/countries/data/countries/SI.yaml +36 -37
  210. data/lib/countries/data/countries/SJ.yaml +29 -30
  211. data/lib/countries/data/countries/SK.yaml +36 -37
  212. data/lib/countries/data/countries/SL.yaml +25 -26
  213. data/lib/countries/data/countries/SM.yaml +28 -29
  214. data/lib/countries/data/countries/SN.yaml +27 -28
  215. data/lib/countries/data/countries/SO.yaml +30 -31
  216. data/lib/countries/data/countries/SR.yaml +26 -27
  217. data/lib/countries/data/countries/SS.yaml +29 -30
  218. data/lib/countries/data/countries/ST.yaml +27 -28
  219. data/lib/countries/data/countries/SV.yaml +27 -28
  220. data/lib/countries/data/countries/SX.yaml +28 -29
  221. data/lib/countries/data/countries/SY.yaml +27 -28
  222. data/lib/countries/data/countries/SZ.yaml +30 -31
  223. data/lib/countries/data/countries/TC.yaml +30 -31
  224. data/lib/countries/data/countries/TD.yaml +29 -30
  225. data/lib/countries/data/countries/TF.yaml +28 -29
  226. data/lib/countries/data/countries/TG.yaml +25 -26
  227. data/lib/countries/data/countries/TH.yaml +34 -35
  228. data/lib/countries/data/countries/TJ.yaml +30 -31
  229. data/lib/countries/data/countries/TK.yaml +27 -28
  230. data/lib/countries/data/countries/TL.yaml +27 -28
  231. data/lib/countries/data/countries/TM.yaml +30 -31
  232. data/lib/countries/data/countries/TN.yaml +30 -31
  233. data/lib/countries/data/countries/TO.yaml +29 -30
  234. data/lib/countries/data/countries/TR.yaml +28 -29
  235. data/lib/countries/data/countries/TT.yaml +28 -29
  236. data/lib/countries/data/countries/TV.yaml +25 -26
  237. data/lib/countries/data/countries/TW.yaml +28 -29
  238. data/lib/countries/data/countries/TZ.yaml +30 -31
  239. data/lib/countries/data/countries/UA.yaml +34 -35
  240. data/lib/countries/data/countries/UG.yaml +28 -29
  241. data/lib/countries/data/countries/UM.yaml +29 -30
  242. data/lib/countries/data/countries/US.yaml +29 -29
  243. data/lib/countries/data/countries/UY.yaml +27 -28
  244. data/lib/countries/data/countries/UZ.yaml +30 -31
  245. data/lib/countries/data/countries/VA.yaml +31 -32
  246. data/lib/countries/data/countries/VC.yaml +29 -30
  247. data/lib/countries/data/countries/VE.yaml +26 -27
  248. data/lib/countries/data/countries/VG.yaml +29 -30
  249. data/lib/countries/data/countries/VI.yaml +28 -29
  250. data/lib/countries/data/countries/VN.yaml +28 -29
  251. data/lib/countries/data/countries/VU.yaml +31 -32
  252. data/lib/countries/data/countries/WF.yaml +29 -30
  253. data/lib/countries/data/countries/WS.yaml +28 -29
  254. data/lib/countries/data/countries/YE.yaml +27 -28
  255. data/lib/countries/data/countries/YT.yaml +26 -27
  256. data/lib/countries/data/countries/ZA.yaml +39 -40
  257. data/lib/countries/data/countries/ZM.yaml +28 -29
  258. data/lib/countries/data/countries/ZW.yaml +31 -32
  259. data/lib/countries/data/subdivisions/CZ.yaml +115 -50
  260. data/lib/countries/data/subdivisions/KE.yaml +391 -503
  261. data/lib/countries/data/subdivisions/MK.yaml +3501 -5809
  262. data/lib/countries/data/subdivisions/SG.yaml +39 -109
  263. data/lib/countries/data/subdivisions/US.yaml +0 -42
  264. data/lib/countries/data/translation_corrections.yaml +20 -14
  265. data/lib/countries/global.rb +1 -3
  266. data/lib/countries/structure.rb +2 -5
  267. data/lib/countries/tasks/geocoding.rake +1 -1
  268. data/lib/countries/version.rb +1 -1
  269. data/spec/country_spec.rb +60 -56
  270. data/spec/data_spec.rb +9 -9
  271. metadata +3 -5
  272. data/lib/countries/data/subdivisions/FO.yaml +0 -85
  273. data/lib/countries/data/subdivisions/KY.yaml +0 -85
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae71813db656246f61471bd911e6fafe63cb79724c87852516bdf3fe934d87af
4
- data.tar.gz: 8c5031c3441d62e7175f79646cb74174c5f23fcfb40cc590d879bf60cc67ab79
3
+ metadata.gz: 887715ef29fbd425dc5ed15b431c742a4fc65122768658232604ad34fade76e9
4
+ data.tar.gz: 21da6fd08a9ce1ff90cc3b3be66843811b1439c67d1bb4d17b39437b2e1c9ac8
5
5
  SHA512:
6
- metadata.gz: c5dfde3265a38f0a4a1efa49401651e565d1aab9d1f23f9bda495529563c0739f97703cb0da9b052678b4297254cc1ca411246516f9271faa38fc0ee4428c481
7
- data.tar.gz: 061abfadd069d1bbad88faf231dfb6e7a88e5aa84d04d5666a75f90d81ca6c533798c88ee454720340925d89abf1aa61f8733b0ea31cfbb2d7d1a38bbe87a88d
6
+ metadata.gz: ee49e9f7940118d1bf3ce03d9784b7e7d89c3f0d2f5c08b89548855447ebdd02d7be05b2ec52c3e3d03d753de2f73aae9db666fb5c6c4b989b6800e4bcc0c857
7
+ data.tar.gz: 3e0b5dcd574ce266e2d0243164d9370aad9aaf9a2c5a6572dae9b117e8c18a0b2e5e19b59382fac36516c744c5bf75fce4fbc08b9aa54c981360468ce8e18634
data/CHANGELOG.md CHANGED
@@ -4,7 +4,46 @@ This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
5
  ## [Future 5.0 release]
6
6
 
7
- - Drop support for Ruby 2.5 [\#708](https://github.com/countries/countries/pull/708) ([pmor](https://github.com/pmor))
7
+ **Breaking Changes**
8
+
9
+ - Drop support for Ruby 2.5 and 2.6 [\#708](https://github.com/countries/countries/pull/708) ([pmor](https://github.com/pmor))
10
+
11
+ ## [4.2.0](https://github.com/countries/countries/releases/tag/v4.2.0) (2022/01/11 11:04 +00:00)
12
+
13
+ **Deprecations**
14
+
15
+ - `Country#name`, `Country#names` and the finders using these attributes. See README ('Upgrading to 4.2 and 5.x')
16
+ - `latitude_dec` and `longitude_dec` attributes
17
+
18
+ **Merged pull requests:**
19
+
20
+ * Name methods refactor [\#717](https://github.com/countries/countries/pull/717) ([pmor](https://github.com/pmor))
21
+ * Remove non-ISO US subdivisions [\#720](https://github.com/countries/countries/pull/720) ([pmor](https://github.com/pmor))
22
+ * Update MK subdivisions [\#721](https://github.com/countries/countries/pull/721) ([pmor](https://github.com/pmor))
23
+ * Update Kenya subdivision data [\#722](https://github.com/countries/countries/pull/722) ([pmor](https://github.com/pmor))
24
+ * Fix French Southern Territories continent and region data [\#725](https://github.com/countries/countries/pull/725) ([pmor](https://github.com/pmor))
25
+ * Fix SG subdivision data [\#726](https://github.com/countries/countries/pull/726) ([pmor](https://github.com/pmor))
26
+ * Remove FO subdivisions [\#727](https://github.com/countries/countries/pull/727) ([pmor](https://github.com/pmor))
27
+ * JE and IM currencies should be GBP [\#728](https://github.com/countries/countries/pull/728) ([pmor](https://github.com/pmor))
28
+ * Fix US translations in nb and no locales [\#729](https://github.com/countries/countries/pull/729) ([pmor](https://github.com/pmor))
29
+ * Missing alternative names for GB and US [\#724](https://github.com/countries/countries/pull/#724) ([dima4p](https://github.com/dima4p))
30
+ * Deprecate latitude_dec and longitude_dec, delegate to latitude [\#723](https://github.com/countries/countries/pull/#723) ([pmor](https://github.com/pmor)
31
+ * add VAT for Israel and Saudi Arabia [\#730](https://github.com/countries/countries/pull/#723) ([Venca24](https://github.com/Venca24)
32
+ * Remove non-ISO KY subdivisions [\#731](https://github.com/countries/countries/pull/731) ([pmor](https://github.com/pmor))
33
+ * Fix duplicated translations of CZ-10 subdivision [\#733](https://github.com/countries/countries/pull/733) ([pmor](https://github.com/pmor))
34
+
35
+ **Closed issues:**
36
+
37
+ * Update Kenya subdivisions/states [\#318](https://github.com/countries/countries/issues/318)
38
+ * North Macedonia updates (2020-03-02) [\#674](https://github.com/countries/countries/issues/674)
39
+ * Singapore wrong subdivision codes (SG-SG-0x) [\#663](https://github.com/countries/countries/issues/663)
40
+ * Remove Faroe Islands subdivisions [\#606](https://github.com/countries/countries/issues/606)
41
+ * Jersey uses GBP instead of JEP currency [\#492](https://github.com/countries/countries/issues/492)
42
+ * USA in Norwegian translation should be 'USA' instead of 'De forente stater' [\#564](https://github.com/countries/countries/issues/564)
43
+ * Geographic bounds for UK includes all of Europe [\#535](https://github.com/countries/countries/issues/535)
44
+ * Wrong min_longitude for United States of America? [\#698](https://github.com/countries/countries/issues/698)
45
+ * Translations for CZ-10 are defined twice [\#732](https://github.com/countries/countries/issues/732)
46
+
8
47
 
9
48
  ## [4.1.3](https://github.com/countries/countries/releases/tag/v4.1.2) (2022/01/03 12:16 +00:00)
10
49
 
data/README.markdown CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Countries is a collection of all sorts of useful information for every country in the ISO 3166 standard. It contains info for the following standards ISO3166-1 (countries), ISO3166-2 (states/subdivisions), ISO4217 (currency) and E.164 (phone numbers). I will add any country based data I can get access to. I hope this to be a repository for all country based information.
4
4
 
5
- [![Gem Version](https://badge.fury.io/rb/countries.svg)](https://badge.fury.io/rb/countries) [![Tests](https://github.com/countries/countries/actions/workflows/tests.yml/badge.svg)](https://github.com/countries/countries/actions/workflows/tests.yml) [![Code Climate](https://codeclimate.com/github/hexorx/countries.svg)](https://codeclimate.com/github/hexorx/countries)
5
+ [![Gem Version](https://badge.fury.io/rb/countries.svg)](https://badge.fury.io/rb/countries) [![Tests](https://github.com/countries/countries/actions/workflows/tests.yml/badge.svg)](https://github.com/countries/countries/actions/workflows/tests.yml) [![Code Climate](https://codeclimate.com/github/countries/countries.svg)](https://codeclimate.com/github/countries/countries)
6
6
 
7
7
  ## Installation
8
8
 
@@ -48,20 +48,18 @@ To Use
48
48
  gem 'countries', require: 'countries/global'
49
49
  ```
50
50
 
51
- ## Upgrading to 3.x
51
+ ## Upgrading to 4.2 and 5.x
52
52
 
53
- We dropped currency support via money by default, read these [instructions](README.markdown#Currencies) if you are using currency features.
53
+ In release 4.2 the `#name` attribute was deprecated in favour of `#iso_short_name` and we added the `#iso_long_name` attribute, to make it clear that these attributes use the ISO3166 names, and are not the "common names" most people might expect, eg: The ISO name for "United Kingdom" is "United Kingdom of Great Britain and Northern Ireland", but if you're building a dropdown box to select a country, you're likely expecting to see "United Kingdom" instead.
54
54
 
55
- ## Upgrading Country Helper to > 1.2.0
55
+ "Common names" in English have been available in the translation data, via `#translation('en')`. As of release 4.2, a shortcut method has been added for simplicity, `#common_name`, which delegates to `#translation('en')`.
56
56
 
57
- ```ruby
58
- gem 'countries', require: 'global'
59
- ```
57
+ For additional clarity, the `#names` method, which was an alias to `#unofficial_names` has also been deprecated, together with the finder methods that use `name` or `names` attributes.
58
+
59
+ The `#name` and `#names` attributes, and corresponding finder methods will be removed in 5.0.
60
+
61
+ For translated country names, we use data from [pkg-isocodes](https://salsa.debian.org/iso-codes-team/iso-codes), via the [i18n_data](https://github.com/grosser/i18n_data) gem, and these generally correspond to the expected "common names". These names and the corresponding methods have not been changed.
60
62
 
61
- has become
62
- ```ruby
63
- gem 'countries', require: 'countries/global'
64
- ```
65
63
 
66
64
  ## Selective Loading of Locales
67
65
 
@@ -89,7 +87,7 @@ end
89
87
  You can lookup a country or an array of countries using any of the data attributes via the find\_country\_by_*attribute* dynamic methods:
90
88
 
91
89
  ```ruby
92
- c = ISO3166::Country.find_country_by_name('united states')
90
+ c = ISO3166::Country.find_country_by_iso_short_name('united states')
93
91
  h = ISO3166::Country.find_all_by(:translated_names, 'França')
94
92
  list = ISO3166::Country.find_all_countries_by_region('Americas')
95
93
  c = ISO3166::Country.find_country_by_alpha3('can')
@@ -98,6 +96,9 @@ c = ISO3166::Country.find_country_by_alpha3('can')
98
96
  For a list of available attributes please see ISO3166::DEFAULT_COUNTRY_HASH.
99
97
  Note: searches are *case insensitive and ignore accents*.
100
98
 
99
+ _Please note that `find_by_name`, `find_by_names`, `find_*_by_name` and `find_*_by_names` methods are deprecated and will be removed in 5.0. See [Upgrading to 4.2 and 5.x](#upgrading-to-4-2-and-5-x) above_
100
+
101
+
101
102
  ## Country Info
102
103
 
103
104
  ### Identification Codes
@@ -112,7 +113,9 @@ c.gec # => "US"
112
113
  ### Names & Translations
113
114
 
114
115
  ```ruby
115
- c.name # => "United States"
116
+ c.iso_long_name # => "The United States of America"
117
+ c.iso_short_name # => "United States of America"
118
+ c.common_name # => "United States" (This is a shortcut for c.translations('en'))
116
119
  c.unofficial_names # => ["United States of America", "Vereinigte Staaten von Amerika", "États-Unis", "Estados Unidos"]
117
120
 
118
121
  # Get the names for a country translated to its local languages
@@ -128,6 +131,9 @@ ISO3166::Country.translations # {"DE"=>"Germany",...}
128
131
  ISO3166::Country.translations('DE') # {"DE"=>"Deutschland",...}
129
132
  ISO3166::Country.all_translated # ['Germany', ...]
130
133
  ISO3166::Country.all_translated('DE') # ['Deutschland', ...]
134
+
135
+ # Nationality
136
+ c.nationality # => "American"
131
137
  ```
132
138
 
133
139
  ### Subdivisions & States
@@ -140,15 +146,16 @@ c.states # => {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
140
146
  ### Location
141
147
 
142
148
  ```ruby
143
- c.latitude # => "38 00 N"
144
- c.longitude # => "97 00 W"
145
- c.latitude_dec # => 39.44325637817383
146
- c.longitude_dec # => -98.95733642578125
149
+ c.latitude # => "37.09024"
150
+ c.longitude # => "-95.712891"
147
151
 
152
+ c.world_region # => "AMER"
148
153
  c.region # => "Americas"
149
154
  c.subregion # => "Northern America"
150
155
  ```
151
156
 
157
+ Please note that `latitude_dec` and `longitude_dec` will be deprecated on release 4.2 and deleted in 5.0. These attribues have been redundant for several years, since the `latitude` and `longitude` fields have been switched decimal coordinates.
158
+
152
159
  ### Timezones **(optional)**
153
160
 
154
161
  Add `tzinfo` to your Gemfile and ensure it's required, Countries will not do this for you.
@@ -180,6 +187,8 @@ c.min_longitude # => '45'
180
187
  c.min_latitude # => '22.166667'
181
188
  c.max_longitude # => '58'
182
189
  c.max_latitude # => '26.133333'
190
+
191
+ c.bounds #> {"northeast"=>{"lat"=>22.166667, "lng"=>58}, "southwest"=>{"lat"=>26.133333, "lng"=>45}}
183
192
  ```
184
193
 
185
194
  ### European Union Membership
@@ -204,7 +213,7 @@ c.in_esm? # => false
204
213
  ### Plucking multiple attributes
205
214
 
206
215
  ```ruby
207
- ISO3166::Country.pluck(:alpha2, :name) # => [["AD", "Andorra"], ["AE", "United Arab Emirates"], ...
216
+ ISO3166::Country.pluck(:alpha2, :iso_short_name) # => [["AD", "Andorra"], ["AE", "United Arab Emirates"], ...
208
217
  ```
209
218
 
210
219
  ## Currencies
@@ -221,9 +230,7 @@ Please note that it requires you to add "money" dependency to your gemfile.
221
230
  gem "money", "~> 6.9"
222
231
  ```
223
232
 
224
- **WARNING** if you have a top level class named `Money` you will conflict with this gem. If this is a large issue we will add a feature to turn currency features off.
225
-
226
- Countries now uses the [Money](https://github.com/RubyMoney/money) gem. What this means is you now get back a Money::Currency object that gives you access to all the currency information.
233
+ Countries now uses the [Money](https://github.com/RubyMoney/money) gem. What this means is you now get back a `Money::Currency` object that gives you access to all the currency information.
227
234
 
228
235
  ```ruby
229
236
  c = ISO3166::Country['us']
@@ -249,14 +256,14 @@ Any country registered this way will have its data available for searching etc..
249
256
  ```ruby
250
257
  ISO3166::Data.register(
251
258
  alpha2: 'LOL',
252
- name: 'Happy Country',
259
+ iso_short_name: 'Happy Country',
253
260
  translations: {
254
261
  'en' => 'Happy Country',
255
262
  'de' => 'glückliches Land'
256
263
  }
257
264
  )
258
265
 
259
- ISO3166::Country.new('LOL').name == 'Happy Country'
266
+ ISO3166::Country.new('LOL').iso_short_name == 'Happy Country'
260
267
  ```
261
268
 
262
269
  ## Mongoid
@@ -275,33 +282,33 @@ Searching:
275
282
 
276
283
  ```ruby
277
284
  # By alpha2
278
- british_things = Things.where(country: 'GB')
279
- british_things.first.country.name # => "United Kingdom"
285
+ spanish_things = Things.where(country: 'ES')
286
+ spanish_things.first.country.iso_short_name # => "Spain"
280
287
 
281
288
  # By object
282
- british_things = Things.where(country: Country.find_by_name('United Kingdom')[1])
283
- british_things.first.country.name # => "United Kingdom"
289
+ spanish_things = Things.where(country: Country.find_by_iso_short_name('Spain')[1])
290
+ spanish_things.first.country.iso_short_name # => "Spain"
284
291
  ```
285
292
 
286
293
  Saving:
287
294
 
288
295
  ```ruby
289
296
  # By alpha2
290
- british_thing = Thing.new(country: 'GB')
291
- british_thing.save!
292
- british_thing.country.name # => "United Kingdom"
297
+ spanish_things = Thing.new(country: 'ES')
298
+ spanish_things.save!
299
+ spanish_things.country.iso_short_name # => "Spain"
293
300
 
294
301
  # By object
295
- british_thing = Thing.new(country: Country.find_by_name('United Kingdom')[1])
296
- british_thing.save!
297
- british_thing.country.name # => "United Kingdom"
302
+ spanish_things = Thing.new(country: Country.find_by_iso_short_name('Spain')[1])
303
+ spanish_things.save!
304
+ spanish_things.country.iso_short_name # => "Spain"
298
305
  ```
299
306
 
300
307
  Note that the database stores only the alpha2 code and rebuilds the object when queried. To return the country name by default you can override the reader method in your model:
301
308
 
302
309
  ```ruby
303
310
  def country
304
- super.name
311
+ super.iso_short_name
305
312
  end
306
313
  ```
307
314
 
@@ -318,7 +325,7 @@ c.emoji_flag # => "🇲🇾"
318
325
 
319
326
  Any additions should be directed upstream to [pkg-isocodes](https://salsa.debian.org/iso-codes-team/iso-codes)
320
327
 
321
- New Bugs can be filed upstream here https://salsa.debian.org/iso-codes-team/iso-codes/issues
328
+ Localized country name data is sourced from https://github.com/grosser/i18n_data (which is based on https://salsa.debian.org/iso-codes-team/iso-codes/). Issues regarding localized country names can be reported to https://github.com/grosser/i18n_data/issues or https://salsa.debian.org/iso-codes-team/iso-codes/issues
322
329
  If you need to correct an upstream translation please add it to the lib/countries/data/translations_corrections.yaml
323
330
 
324
331
  ```
data/Rakefile CHANGED
@@ -19,36 +19,6 @@ end
19
19
 
20
20
  task default: [:spec]
21
21
 
22
- task :update_yaml_structure do
23
-
24
- d = Dir['lib/countries/data/subdivisions/*.yaml']
25
- d.each do |file|
26
- puts "checking : #{file}"
27
- data = YAML.load_file(file)
28
-
29
- data = data.each_with_object({}) do |(k, subd), a|
30
- a[k] ||= {}
31
- a[k]['unofficial_names'] = subd.delete('names')
32
- a[k]['translations'] = { 'en' => subd['name'] }
33
- a[k]['geo'] = {
34
- 'latitude' => subd.delete('latitude'),
35
- 'longitude' => subd.delete('longitude'),
36
- 'min_latitude' => subd.delete('min_latitude'),
37
- 'min_longitude' => subd.delete('min_longitude'),
38
- 'max_latitude' => subd.delete('max_latitude'),
39
- 'max_longitude' => subd.delete('max_longitude')
40
- }
41
-
42
- a[k] = a[k].merge(subd)
43
- end
44
- File.open(file, 'w') { |f| f.write data.to_yaml }
45
- begin
46
- rescue
47
- puts "failed to read #{file}: #{$ERROR_INFO}"
48
- end
49
- end
50
- end
51
-
52
22
  desc 'Update CLDR subdivison data set'
53
23
  task :update_cldr_subdivison_data do
54
24
  require_relative './lib/countries/sources'
@@ -61,7 +31,7 @@ task :update_cache do
61
31
  require 'yaml'
62
32
  require 'i18n_data'
63
33
 
64
- codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq
34
+ codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq.sort
65
35
  data = {}
66
36
 
67
37
  corrections = YAML.load_file(File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'translation_corrections.yaml')) || {}
@@ -91,3 +61,25 @@ task :update_cache do
91
61
 
92
62
  File.open(File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'countries.json'), 'wb') { |f| f.write(data.to_json) }
93
63
  end
64
+
65
+ # Temporary task to update YAML file structure with iso_long_name and iso_short_name attributes
66
+ task :update_iso_names do
67
+ require 'csv'
68
+ isodata = CSV.read 'isonames.csv', headers: true
69
+
70
+ d = Dir['lib/countries/data/countries/*.yaml']
71
+ d.each do |file|
72
+ puts "checking : #{file}"
73
+ data = YAML.load_file(file)
74
+
75
+ country_code = data.keys.first
76
+ iso_country = isodata.find {|c| c['cc'] == country_code}
77
+
78
+ data.values.first['iso_long_name'] = iso_country['iso_full_name']
79
+ data.values.first['iso_short_name'] = data.values.first.delete('name')
80
+
81
+ data[country_code.upcase] = data[country_code.upcase].sort.to_h
82
+
83
+ File.open(file, 'w') { |f| f.write data.to_yaml }
84
+ end
85
+ end