countries 2.0.8 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/CHANGELOG.md +167 -0
- data/README.markdown +95 -98
- data/Rakefile +9 -1
- data/countries.gemspec +4 -3
- data/lib/countries/cache/countries.json +1 -1
- data/lib/countries/cache/locales/he.json +1 -1
- data/lib/countries/country.rb +6 -2
- data/lib/countries/country/class_methods.rb +15 -6
- data/lib/countries/country/emoji.rb +3 -0
- data/lib/countries/data.rb +12 -3
- data/lib/countries/data/countries/BR.yaml +2 -2
- data/lib/countries/data/countries/BY.yaml +1 -1
- data/lib/countries/data/countries/CH.yaml +2 -2
- data/lib/countries/data/countries/FJ.yaml +1 -1
- data/lib/countries/data/countries/GB.yaml +1 -0
- data/lib/countries/data/countries/HK.yaml +1 -1
- data/lib/countries/data/countries/MX.yaml +5 -0
- data/lib/countries/data/countries/NO.yaml +5 -0
- data/lib/countries/data/countries/PH.yaml +5 -0
- data/lib/countries/data/countries/PN.yaml +1 -1
- data/lib/countries/data/countries/TW.yaml +1 -1
- data/lib/countries/data/countries/UM.yaml +1 -1
- data/lib/countries/data/subdivisions/AE.yaml +346 -7
- data/lib/countries/data/subdivisions/AF.yaml +1571 -11
- data/lib/countries/data/subdivisions/AG.yaml +282 -2
- data/lib/countries/data/subdivisions/AL.yaml +503 -1
- data/lib/countries/data/subdivisions/AM.yaml +539 -12
- data/lib/countries/data/subdivisions/AO.yaml +767 -2
- data/lib/countries/data/subdivisions/AR.yaml +1167 -2
- data/lib/countries/data/subdivisions/AT.yaml +500 -6
- data/lib/countries/data/subdivisions/AU.yaml +445 -0
- data/lib/countries/data/subdivisions/AZ.yaml +2836 -57
- data/lib/countries/data/subdivisions/BA.yaml +167 -1
- data/lib/countries/data/subdivisions/BB.yaml +377 -2
- data/lib/countries/data/subdivisions/BD.yaml +1344 -66
- data/lib/countries/data/subdivisions/BE.yaml +653 -10
- data/lib/countries/data/subdivisions/BF.yaml +1841 -1
- data/lib/countries/data/subdivisions/BG.yaml +1307 -6
- data/lib/countries/data/subdivisions/BH.yaml +102 -5
- data/lib/countries/data/subdivisions/BI.yaml +647 -0
- data/lib/countries/data/subdivisions/BJ.yaml +441 -0
- data/lib/countries/data/subdivisions/BN.yaml +154 -0
- data/lib/countries/data/subdivisions/BO.yaml +387 -1
- data/lib/countries/data/subdivisions/BQ.yaml +148 -0
- data/lib/countries/data/subdivisions/BR.yaml +1412 -1
- data/lib/countries/data/subdivisions/BS.yaml +1094 -0
- data/lib/countries/data/subdivisions/BT.yaml +707 -6
- data/lib/countries/data/subdivisions/BW.yaml +614 -3
- data/lib/countries/data/subdivisions/BY.yaml +375 -6
- data/lib/countries/data/subdivisions/BZ.yaml +200 -0
- data/lib/countries/data/subdivisions/CA.yaml +721 -0
- data/lib/countries/data/subdivisions/CD.yaml +697 -4
- data/lib/countries/data/subdivisions/CF.yaml +637 -1
- data/lib/countries/data/subdivisions/CG.yaml +401 -0
- data/lib/countries/data/subdivisions/CH.yaml +1327 -26
- data/lib/countries/data/subdivisions/CI.yaml +323 -21
- data/lib/countries/data/subdivisions/CL.yaml +656 -5
- data/lib/countries/data/subdivisions/CM.yaml +375 -3
- data/lib/countries/data/subdivisions/CN.yaml +1636 -5
- data/lib/countries/data/subdivisions/CO.yaml +1395 -2
- data/lib/countries/data/subdivisions/CR.yaml +260 -0
- data/lib/countries/data/subdivisions/CU.yaml +627 -3
- data/lib/countries/data/subdivisions/CV.yaml +741 -1
- data/lib/countries/data/subdivisions/CY.yaml +220 -6
- data/lib/countries/data/subdivisions/CZ.yaml +3049 -14
- data/lib/countries/data/subdivisions/DE.yaml +928 -8
- data/lib/countries/data/subdivisions/DJ.yaml +253 -0
- data/lib/countries/data/subdivisions/DK.yaml +230 -6
- data/lib/countries/data/subdivisions/DM.yaml +333 -2
- data/lib/countries/data/subdivisions/DO.yaml +1047 -8
- data/lib/countries/data/subdivisions/DZ.yaml +1968 -6
- data/lib/countries/data/subdivisions/EC.yaml +911 -0
- data/lib/countries/data/subdivisions/EE.yaml +713 -15
- data/lib/countries/data/subdivisions/EG.yaml +1126 -25
- data/lib/countries/data/subdivisions/ER.yaml +230 -3
- data/lib/countries/data/subdivisions/ES.yaml +3029 -13
- data/lib/countries/data/subdivisions/ET.yaml +514 -8
- data/lib/countries/data/subdivisions/FI.yaml +827 -0
- data/lib/countries/data/subdivisions/FJ.yaml +396 -0
- data/lib/countries/data/subdivisions/FM.yaml +131 -0
- data/lib/countries/data/subdivisions/FR.yaml +5687 -11
- data/lib/countries/data/subdivisions/GA.yaml +349 -0
- data/lib/countries/data/subdivisions/GB.yaml +7046 -33
- data/lib/countries/data/subdivisions/GD.yaml +227 -1
- data/lib/countries/data/subdivisions/GE.yaml +572 -2
- data/lib/countries/data/subdivisions/GH.yaml +371 -0
- data/lib/countries/data/subdivisions/GL.yaml +173 -0
- data/lib/countries/data/subdivisions/GM.yaml +250 -5
- data/lib/countries/data/subdivisions/GN.yaml +1143 -1
- data/lib/countries/data/subdivisions/GQ.yaml +301 -4
- data/lib/countries/data/subdivisions/GR.yaml +654 -28
- data/lib/countries/data/subdivisions/GT.yaml +875 -0
- data/lib/countries/data/subdivisions/GW.yaml +353 -0
- data/lib/countries/data/subdivisions/GY.yaml +315 -0
- data/lib/countries/data/subdivisions/HN.yaml +710 -1
- data/lib/countries/data/subdivisions/HR.yaml +967 -23
- data/lib/countries/data/subdivisions/HT.yaml +329 -1
- data/lib/countries/data/subdivisions/HU.yaml +2067 -1
- data/lib/countries/data/subdivisions/ID.yaml +1840 -21
- data/lib/countries/data/subdivisions/IE.yaml +1339 -1
- data/lib/countries/data/subdivisions/IL.yaml +256 -6
- data/lib/countries/data/subdivisions/IN.yaml +2044 -2
- data/lib/countries/data/subdivisions/IQ.yaml +760 -12
- data/lib/countries/data/subdivisions/IR.yaml +1434 -12
- data/lib/countries/data/subdivisions/IS.yaml +370 -8
- data/lib/countries/data/subdivisions/IT.yaml +6197 -16
- data/lib/countries/data/subdivisions/JM.yaml +461 -2
- data/lib/countries/data/subdivisions/JO.yaml +453 -8
- data/lib/countries/data/subdivisions/JP.yaml +2523 -54
- data/lib/countries/data/subdivisions/KE.yaml +698 -0
- data/lib/countries/data/subdivisions/KG.yaml +422 -3
- data/lib/countries/data/subdivisions/KH.yaml +871 -25
- data/lib/countries/data/subdivisions/KI.yaml +100 -0
- data/lib/countries/data/subdivisions/KM.yaml +134 -0
- data/lib/countries/data/subdivisions/KN.yaml +499 -2
- data/lib/countries/data/subdivisions/KP.yaml +474 -0
- data/lib/countries/data/subdivisions/KR.yaml +816 -16
- data/lib/countries/data/subdivisions/KW.yaml +184 -3
- data/lib/countries/data/subdivisions/{Ky.yaml → KY.yaml} +0 -0
- data/lib/countries/data/subdivisions/KZ.yaml +827 -14
- data/lib/countries/data/subdivisions/LA.yaml +630 -18
- data/lib/countries/data/subdivisions/LB.yaml +245 -5
- data/lib/countries/data/subdivisions/LC.yaml +304 -0
- data/lib/countries/data/subdivisions/LI.yaml +349 -2
- data/lib/countries/data/subdivisions/LK.yaml +955 -3
- data/lib/countries/data/subdivisions/LR.yaml +565 -0
- data/lib/countries/data/subdivisions/LS.yaml +362 -2
- data/lib/countries/data/subdivisions/LT.yaml +1563 -10
- data/lib/countries/data/subdivisions/LU.yaml +322 -3
- data/lib/countries/data/subdivisions/LV.yaml +4937 -3
- data/lib/countries/data/subdivisions/LY.yaml +836 -203
- data/lib/countries/data/subdivisions/MA.yaml +1803 -17
- data/lib/countries/data/subdivisions/MC.yaml +234 -0
- data/lib/countries/data/subdivisions/MD.yaml +1570 -5
- data/lib/countries/data/subdivisions/ME.yaml +669 -4
- data/lib/countries/data/subdivisions/MG.yaml +148 -0
- data/lib/countries/data/subdivisions/MH.yaml +543 -21
- data/lib/countries/data/subdivisions/MK.yaml +2548 -0
- data/lib/countries/data/subdivisions/ML.yaml +363 -0
- data/lib/countries/data/subdivisions/MM.yaml +534 -0
- data/lib/countries/data/subdivisions/MN.yaml +935 -17
- data/lib/countries/data/subdivisions/MR.yaml +428 -5
- data/lib/countries/data/subdivisions/MT.yaml +2534 -13
- data/lib/countries/data/subdivisions/MU.yaml +574 -7
- data/lib/countries/data/subdivisions/MV.yaml +719 -5
- data/lib/countries/data/subdivisions/MW.yaml +1056 -1
- data/lib/countries/data/subdivisions/MX.yaml +1655 -13
- data/lib/countries/data/subdivisions/MY.yaml +708 -7
- data/lib/countries/data/subdivisions/MZ.yaml +450 -3
- data/lib/countries/data/subdivisions/NA.yaml +483 -0
- data/lib/countries/data/subdivisions/NE.yaml +289 -0
- data/lib/countries/data/subdivisions/NG.yaml +1428 -2
- data/lib/countries/data/subdivisions/NI.yaml +660 -2
- data/lib/countries/data/subdivisions/NL.yaml +803 -3
- data/lib/countries/data/subdivisions/NO.yaml +1075 -0
- data/lib/countries/data/subdivisions/NP.yaml +572 -1
- data/lib/countries/data/subdivisions/NR.yaml +539 -2
- data/lib/countries/data/subdivisions/NZ.yaml +632 -2
- data/lib/countries/data/subdivisions/OM.yaml +396 -3
- data/lib/countries/data/subdivisions/PA.yaml +478 -0
- data/lib/countries/data/subdivisions/PE.yaml +1023 -2
- data/lib/countries/data/subdivisions/PG.yaml +788 -3
- data/lib/countries/data/subdivisions/PH.yaml +3055 -7
- data/lib/countries/data/subdivisions/PK.yaml +357 -2
- data/lib/countries/data/subdivisions/PL.yaml +807 -14
- data/lib/countries/data/subdivisions/PS.yaml +490 -0
- data/lib/countries/data/subdivisions/PT.yaml +741 -4
- data/lib/countries/data/subdivisions/PW.yaml +532 -1
- data/lib/countries/data/subdivisions/PY.yaml +687 -0
- data/lib/countries/data/subdivisions/QA.yaml +269 -3
- data/lib/countries/data/subdivisions/RO.yaml +1954 -21
- data/lib/countries/data/subdivisions/RS.yaml +1148 -14
- data/lib/countries/data/subdivisions/RU.yaml +4535 -20
- data/lib/countries/data/subdivisions/RW.yaml +220 -5
- data/lib/countries/data/subdivisions/SA.yaml +516 -19
- data/lib/countries/data/subdivisions/SB.yaml +363 -2
- data/lib/countries/data/subdivisions/SC.yaml +780 -6
- data/lib/countries/data/subdivisions/SD.yaml +809 -301
- data/lib/countries/data/subdivisions/SE.yaml +1027 -21
- data/lib/countries/data/subdivisions/SG.yaml +36 -0
- data/lib/countries/data/subdivisions/SH.yaml +115 -1
- data/lib/countries/data/subdivisions/SI.yaml +7067 -77
- data/lib/countries/data/subdivisions/SK.yaml +395 -8
- data/lib/countries/data/subdivisions/SL.yaml +143 -1
- data/lib/countries/data/subdivisions/SM.yaml +400 -2
- data/lib/countries/data/subdivisions/SN.yaml +506 -0
- data/lib/countries/data/subdivisions/SO.yaml +574 -7
- data/lib/countries/data/subdivisions/SR.yaml +334 -0
- data/lib/countries/data/subdivisions/SS.yaml +428 -0
- data/lib/countries/data/subdivisions/ST.yaml +14 -0
- data/lib/countries/data/subdivisions/SV.yaml +488 -0
- data/lib/countries/data/subdivisions/SY.yaml +569 -16
- data/lib/countries/data/subdivisions/SZ.yaml +144 -0
- data/lib/countries/data/subdivisions/TD.yaml +798 -6
- data/lib/countries/data/subdivisions/TG.yaml +182 -3
- data/lib/countries/data/subdivisions/TH.yaml +2935 -5
- data/lib/countries/data/subdivisions/TJ.yaml +280 -0
- data/lib/countries/data/subdivisions/TL.yaml +450 -3
- data/lib/countries/data/subdivisions/TM.yaml +265 -1
- data/lib/countries/data/subdivisions/TN.yaml +844 -3
- data/lib/countries/data/subdivisions/TO.yaml +177 -3
- data/lib/countries/data/subdivisions/TR.yaml +3829 -6
- data/lib/countries/data/subdivisions/TT.yaml +522 -0
- data/lib/countries/data/subdivisions/TV.yaml +228 -0
- data/lib/countries/data/subdivisions/TW.yaml +761 -13
- data/lib/countries/data/subdivisions/TZ.yaml +1160 -7
- data/lib/countries/data/subdivisions/UA.yaml +1454 -28
- data/lib/countries/data/subdivisions/UG.yaml +3741 -20
- data/lib/countries/data/subdivisions/UM.yaml +486 -1
- data/lib/countries/data/subdivisions/US.yaml +3028 -3
- data/lib/countries/data/subdivisions/UY.yaml +753 -1
- data/lib/countries/data/subdivisions/UZ.yaml +592 -7
- data/lib/countries/data/subdivisions/VC.yaml +176 -0
- data/lib/countries/data/subdivisions/VE.yaml +1055 -2
- data/lib/countries/data/subdivisions/VN.yaml +2444 -55
- data/lib/countries/data/subdivisions/VU.yaml +225 -3
- data/lib/countries/data/subdivisions/WF.yaml +138 -0
- data/lib/countries/data/subdivisions/WS.yaml +371 -6
- data/lib/countries/data/subdivisions/YE.yaml +857 -14
- data/lib/countries/data/subdivisions/ZA.yaml +459 -3
- data/lib/countries/data/subdivisions/ZM.yaml +393 -2
- data/lib/countries/data/subdivisions/ZW.yaml +341 -0
- data/lib/countries/data/translation_corrections.yaml +5 -0
- data/lib/countries/sources.rb +6 -0
- data/lib/countries/sources/cldr/downloader.rb +35 -0
- data/lib/countries/sources/cldr/subdivision.rb +34 -0
- data/lib/countries/sources/cldr/subdivision_updater.rb +34 -0
- data/lib/countries/sources/local/cached_loader.rb +27 -0
- data/lib/countries/sources/local/subdivision.rb +32 -0
- data/lib/countries/subdivision.rb +1 -0
- data/lib/countries/tasks/geocoding.rake +4 -3
- data/lib/countries/version.rb +1 -1
- data/spec/country_spec.rb +75 -0
- data/spec/data_spec.rb +14 -2
- metadata +35 -9
- data/lib/countries/data/subdivisions/Tj.yaml +0 -47
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Sources
|
|
2
|
+
module CLDR
|
|
3
|
+
class Subdivision
|
|
4
|
+
attr_reader :xml, :language_code
|
|
5
|
+
def initialize(language_code:, xml:)
|
|
6
|
+
@language_code = language_code
|
|
7
|
+
@xml = xml
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def text
|
|
11
|
+
xml.text
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def country_code
|
|
15
|
+
type[0..1].upcase
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def code
|
|
19
|
+
type[2..-1].upcase
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def type
|
|
23
|
+
xml.attributes['type'].value.delete('-')
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def to_h
|
|
27
|
+
data = {}
|
|
28
|
+
data['translations'] ||= {}
|
|
29
|
+
data['translations'][language_code] = text
|
|
30
|
+
data
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'active_support'
|
|
2
|
+
require 'active_support/core_ext/hash/deep_merge'
|
|
3
|
+
require 'nokogiri'
|
|
4
|
+
require 'pry'
|
|
5
|
+
|
|
6
|
+
module Sources
|
|
7
|
+
module CLDR
|
|
8
|
+
class SubdivisionUpdater
|
|
9
|
+
def call
|
|
10
|
+
d = Dir['./tmp/cldr/trunk/common/subdivisions/*.xml']
|
|
11
|
+
loader = Sources::Local::CachedLoader.new(Sources::Local::Subdivision)
|
|
12
|
+
d.each do |file_path|
|
|
13
|
+
language_data = Nokogiri::XML(File.read(file_path))
|
|
14
|
+
language_code = File.basename(file_path, '.*')
|
|
15
|
+
subdivisions = language_data.css('subdivision')
|
|
16
|
+
next if subdivisions.empty?
|
|
17
|
+
last_country_code_seen = nil
|
|
18
|
+
|
|
19
|
+
subdivisions.each_with_index do |subdivision, index|
|
|
20
|
+
subdivision = Sources::CLDR::Subdivision.new(language_code: language_code, xml: subdivision)
|
|
21
|
+
data = loader.load(subdivision.country_code)
|
|
22
|
+
data[subdivision.code] ||= {}
|
|
23
|
+
data[subdivision.code] = data[subdivision.code].deep_merge(subdivision.to_h)
|
|
24
|
+
if (last_country_code_seen && last_country_code_seen != subdivision.country_code) || index == subdivisions.size - 1
|
|
25
|
+
puts "Updated #{subdivision.country_code} with language_code #{language_code}"
|
|
26
|
+
loader.save(subdivision.country_code, data)
|
|
27
|
+
end
|
|
28
|
+
last_country_code_seen = subdivision.country_code
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Sources
|
|
2
|
+
module Local
|
|
3
|
+
class CachedLoader
|
|
4
|
+
attr_reader :klass
|
|
5
|
+
def initialize(klass)
|
|
6
|
+
@klass = klass
|
|
7
|
+
@loaded_countries = {}
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def from_cache(country_code)
|
|
11
|
+
@loaded_countries[country_code]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def load(country_code)
|
|
15
|
+
if (data = from_cache(country_code))
|
|
16
|
+
data
|
|
17
|
+
else
|
|
18
|
+
@loaded_countries[country_code] = klass.load(country_code)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def save(country_code, data)
|
|
23
|
+
klass.new(country_code).save(data)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Sources
|
|
2
|
+
module Local
|
|
3
|
+
class Subdivision
|
|
4
|
+
attr_reader :code
|
|
5
|
+
def initialize(code)
|
|
6
|
+
@code = code
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def load
|
|
10
|
+
if File.exist?(file_path)
|
|
11
|
+
YAML.load_file(file_path) || {}
|
|
12
|
+
else
|
|
13
|
+
{}
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def save(data)
|
|
18
|
+
File.open(file_path, 'w') { |f| f.write data.to_yaml }
|
|
19
|
+
rescue
|
|
20
|
+
puts "failed to read #{file}: #{$ERROR_INFO}"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def file_path
|
|
24
|
+
"lib/countries/data/subdivisions/#{code}.yaml"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.load(code)
|
|
28
|
+
new(code).load
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -32,7 +32,7 @@ def country_codes
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
namespace :geocode do
|
|
35
|
-
desc 'Retrieve and store
|
|
35
|
+
desc 'Retrieve and store countries coordinates'
|
|
36
36
|
task :fetch_countries do
|
|
37
37
|
require 'countries'
|
|
38
38
|
# Iterate over countries
|
|
@@ -70,12 +70,12 @@ namespace :geocode do
|
|
|
70
70
|
|
|
71
71
|
desc 'Retrieve and store subdivisions coordinates'
|
|
72
72
|
task :fetch_subdivisions do
|
|
73
|
-
|
|
73
|
+
require_relative '../../countries'
|
|
74
74
|
# Iterate all countries with subdivisions
|
|
75
75
|
ISO3166::Country.all.select(&:subdivisions?).each do |c|
|
|
76
76
|
# Iterate subdivisions
|
|
77
77
|
state_data = c.subdivisions.dup
|
|
78
|
-
state_data.reject { |_, data| data['
|
|
78
|
+
state_data.reject { |_, data| data['geo'] }.each do |code, data|
|
|
79
79
|
location = "#{data['name']}, #{c.name}"
|
|
80
80
|
|
|
81
81
|
# Handle special geocoding cases where Google defaults to well known
|
|
@@ -87,6 +87,7 @@ namespace :geocode do
|
|
|
87
87
|
next unless (result = geocode(location))
|
|
88
88
|
geometry = result.geometry
|
|
89
89
|
if geometry['location']
|
|
90
|
+
state_data[code]['geo'] ||= {}
|
|
90
91
|
state_data[code]['geo']['latitude'] = geometry['location']['lat']
|
|
91
92
|
state_data[code]['geo']['longitude'] = geometry['location']['lng']
|
|
92
93
|
end
|
data/lib/countries/version.rb
CHANGED
data/spec/country_spec.rb
CHANGED
|
@@ -242,6 +242,26 @@ describe ISO3166::Country do
|
|
|
242
242
|
end
|
|
243
243
|
end
|
|
244
244
|
|
|
245
|
+
describe 'subdivision_names_with_codes' do
|
|
246
|
+
it 'should return an alphabetized list of all subdivisions names with codes' do
|
|
247
|
+
subdivisions = ISO3166::Country.search('EG').subdivision_names_with_codes
|
|
248
|
+
expect(subdivisions).to be_an(Array)
|
|
249
|
+
expect(subdivisions.first[0]).to be_a(String)
|
|
250
|
+
expect(subdivisions.size).to eq(27)
|
|
251
|
+
expect(subdivisions.first[0]).to eq('Alexandria')
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
it 'should return an alphabetized list of subdivision names translated to current locale with codes' do
|
|
255
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
|
256
|
+
|
|
257
|
+
subdivisions = ISO3166::Country.search('EG').subdivision_names_with_codes(:es)
|
|
258
|
+
expect(subdivisions).to be_an(Array)
|
|
259
|
+
expect(subdivisions.first[0]).to be_a(String)
|
|
260
|
+
expect(subdivisions.size).to eq(27)
|
|
261
|
+
expect(subdivisions.first[0]).to eq('Al Iskandariyah')
|
|
262
|
+
end
|
|
263
|
+
end
|
|
264
|
+
|
|
245
265
|
describe 'valid?' do
|
|
246
266
|
it 'should return true if country is valid' do
|
|
247
267
|
expect(ISO3166::Country.new('US')).to be_valid
|
|
@@ -318,6 +338,27 @@ describe ISO3166::Country do
|
|
|
318
338
|
|
|
319
339
|
describe 'all_names_with_codes' do
|
|
320
340
|
require 'active_support/core_ext/string/output_safety'
|
|
341
|
+
it 'should return an alphabetized list of all country names with ISOCODE alpha2' do
|
|
342
|
+
countries = ISO3166::Country.all_names_with_codes
|
|
343
|
+
expect(countries).to be_an(Array)
|
|
344
|
+
expect(countries.first[0]).to be_a(String)
|
|
345
|
+
expect(countries.first[0]).to eq('Afghanistan')
|
|
346
|
+
expect(countries.size).to eq(NUM_OF_COUNTRIES)
|
|
347
|
+
expect(countries.any?{|pair| !pair[0].html_safe?}).to eq(false)
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
it 'should return an alphabetized list of all country names translated to current locale with ISOCODE alpha2' do
|
|
351
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
|
352
|
+
|
|
353
|
+
countries = ISO3166::Country.all_names_with_codes(:es)
|
|
354
|
+
expect(countries).to be_an(Array)
|
|
355
|
+
expect(countries.first[0]).to be_a(String)
|
|
356
|
+
expect(countries.first[0]).to eq('Afganistán')
|
|
357
|
+
expect(countries.size).to eq(NUM_OF_COUNTRIES)
|
|
358
|
+
end
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
describe 'all_names_with_codes_without_active_support' do
|
|
321
362
|
it 'should return an alphabetized list of all country names with ISOCODE alpha2' do
|
|
322
363
|
countries = ISO3166::Country.all_names_with_codes
|
|
323
364
|
expect(countries).to be_an(Array)
|
|
@@ -477,6 +518,31 @@ describe ISO3166::Country do
|
|
|
477
518
|
end
|
|
478
519
|
end
|
|
479
520
|
|
|
521
|
+
context "when search name with comma in 'name'" do
|
|
522
|
+
subject { ISO3166::Country.find_by_name(country_name) }
|
|
523
|
+
|
|
524
|
+
context 'with Republic of Korea' do
|
|
525
|
+
let(:country_name) { 'Korea, Republic of' }
|
|
526
|
+
it 'should return' do
|
|
527
|
+
expect(subject.first).to eq('KR')
|
|
528
|
+
end
|
|
529
|
+
end
|
|
530
|
+
|
|
531
|
+
context 'with Bolivia' do
|
|
532
|
+
let(:country_name) { 'Bolivia, Plurinational State of' }
|
|
533
|
+
it 'should return' do
|
|
534
|
+
expect(subject.first).to eq('BO')
|
|
535
|
+
end
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
context 'with Bonaire' do
|
|
539
|
+
let(:country_name) { 'Bonaire, Sint Eustatius and Saba' }
|
|
540
|
+
it 'should return' do
|
|
541
|
+
expect(subject.first).to eq('BQ')
|
|
542
|
+
end
|
|
543
|
+
end
|
|
544
|
+
end
|
|
545
|
+
|
|
480
546
|
context 'when search lowercase multibyte name found' do
|
|
481
547
|
subject { ISO3166::Country.find_country_by_name('россия') }
|
|
482
548
|
|
|
@@ -555,6 +621,15 @@ describe ISO3166::Country do
|
|
|
555
621
|
end
|
|
556
622
|
end
|
|
557
623
|
|
|
624
|
+
context 'when the search term contains comma' do
|
|
625
|
+
let(:korea) { ISO3166::Country.find_country_by_name('Korea, Republic of') }
|
|
626
|
+
|
|
627
|
+
it 'should be a country instance' do
|
|
628
|
+
expect(korea).to be_a(ISO3166::Country)
|
|
629
|
+
expect(korea.alpha2).to eq('KR')
|
|
630
|
+
end
|
|
631
|
+
end
|
|
632
|
+
|
|
558
633
|
context 'when search translation found' do
|
|
559
634
|
before do
|
|
560
635
|
ISO3166.configure do |config|
|
data/spec/data_spec.rb
CHANGED
|
@@ -81,12 +81,12 @@ describe ISO3166::Data do
|
|
|
81
81
|
|
|
82
82
|
describe '#load_cache' do
|
|
83
83
|
it 'will return an empty hash for an unsupported locale' do
|
|
84
|
-
file_array = %w(
|
|
84
|
+
file_array = %w(locales unsupported.json)
|
|
85
85
|
expect(ISO3166::Data.send(:load_cache, file_array)).to eql({})
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
it 'will return json for a supported locale' do
|
|
89
|
-
file_array = %w(
|
|
89
|
+
file_array = %w(locales en.json)
|
|
90
90
|
expect(ISO3166::Data.send(:load_cache, file_array)).not_to be_empty
|
|
91
91
|
end
|
|
92
92
|
end
|
|
@@ -96,6 +96,10 @@ describe ISO3166::Data do
|
|
|
96
96
|
ISO3166::Data.register(
|
|
97
97
|
alpha2: 'TW',
|
|
98
98
|
name: 'NEW Taiwan',
|
|
99
|
+
subdivisions: {
|
|
100
|
+
CHA: {name: 'New Changhua'},
|
|
101
|
+
CYI: {name: 'New Municipality'}
|
|
102
|
+
},
|
|
99
103
|
translations: {
|
|
100
104
|
'en' => 'NEW Taiwan',
|
|
101
105
|
'de' => 'NEW Taiwan'
|
|
@@ -112,6 +116,8 @@ describe ISO3166::Data do
|
|
|
112
116
|
expect(subject.name).to eq 'NEW Taiwan'
|
|
113
117
|
expect(subject.translations).to eq('en' => 'NEW Taiwan',
|
|
114
118
|
'de' => 'NEW Taiwan')
|
|
119
|
+
expect(subject.subdivisions).to eq(CHA: ISO3166::Subdivision.new({name: 'New Changhua'}),
|
|
120
|
+
CYI: ISO3166::Subdivision.new({name: 'New Municipality'}))
|
|
115
121
|
end
|
|
116
122
|
end
|
|
117
123
|
|
|
@@ -120,6 +126,10 @@ describe ISO3166::Data do
|
|
|
120
126
|
ISO3166::Data.register(
|
|
121
127
|
alpha2: 'LOL',
|
|
122
128
|
name: 'Happy Country',
|
|
129
|
+
subdivisions: {
|
|
130
|
+
LOL1: {name: 'Happy sub1'},
|
|
131
|
+
LOL2: {name: 'Happy sub2'}
|
|
132
|
+
},
|
|
123
133
|
translations: {
|
|
124
134
|
'en' => 'Happy Country',
|
|
125
135
|
'de' => 'glückliches Land'
|
|
@@ -133,6 +143,8 @@ describe ISO3166::Data do
|
|
|
133
143
|
data = ISO3166::Data.new('LOL').call
|
|
134
144
|
expect(data['name']).to eq 'Happy Country'
|
|
135
145
|
expect(subject.name).to eq 'Happy Country'
|
|
146
|
+
expect(subject.subdivisions).to eq(LOL1: ISO3166::Subdivision.new({name: 'Happy sub1'}),
|
|
147
|
+
LOL2: ISO3166::Subdivision.new({name: 'Happy sub2'}))
|
|
136
148
|
end
|
|
137
149
|
|
|
138
150
|
it 'detect a stale cache' do
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: countries
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Josh Robinson
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date:
|
|
13
|
+
date: 2018-02-09 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: i18n_data
|
|
@@ -18,28 +18,28 @@ dependencies:
|
|
|
18
18
|
requirements:
|
|
19
19
|
- - "~>"
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: 0.
|
|
21
|
+
version: 0.8.0
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
25
|
requirements:
|
|
26
26
|
- - "~>"
|
|
27
27
|
- !ruby/object:Gem::Version
|
|
28
|
-
version: 0.
|
|
28
|
+
version: 0.8.0
|
|
29
29
|
- !ruby/object:Gem::Dependency
|
|
30
30
|
name: money
|
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
|
32
32
|
requirements:
|
|
33
33
|
- - "~>"
|
|
34
34
|
- !ruby/object:Gem::Version
|
|
35
|
-
version: '6.
|
|
35
|
+
version: '6.9'
|
|
36
36
|
type: :runtime
|
|
37
37
|
prerelease: false
|
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
|
39
39
|
requirements:
|
|
40
40
|
- - "~>"
|
|
41
41
|
- !ruby/object:Gem::Version
|
|
42
|
-
version: '6.
|
|
42
|
+
version: '6.9'
|
|
43
43
|
- !ruby/object:Gem::Dependency
|
|
44
44
|
name: unicode_utils
|
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -96,6 +96,20 @@ dependencies:
|
|
|
96
96
|
- - ">="
|
|
97
97
|
- !ruby/object:Gem::Version
|
|
98
98
|
version: '3'
|
|
99
|
+
- !ruby/object:Gem::Dependency
|
|
100
|
+
name: nokogiri
|
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
|
102
|
+
requirements:
|
|
103
|
+
- - ">="
|
|
104
|
+
- !ruby/object:Gem::Version
|
|
105
|
+
version: '1.8'
|
|
106
|
+
type: :development
|
|
107
|
+
prerelease: false
|
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
109
|
+
requirements:
|
|
110
|
+
- - ">="
|
|
111
|
+
- !ruby/object:Gem::Version
|
|
112
|
+
version: '1.8'
|
|
99
113
|
description: All sorts of useful information about every country packaged as pretty
|
|
100
114
|
little country objects. It includes data from ISO 3166
|
|
101
115
|
email:
|
|
@@ -532,6 +546,7 @@ files:
|
|
|
532
546
|
- lib/countries/data/subdivisions/GD.yaml
|
|
533
547
|
- lib/countries/data/subdivisions/GE.yaml
|
|
534
548
|
- lib/countries/data/subdivisions/GH.yaml
|
|
549
|
+
- lib/countries/data/subdivisions/GL.yaml
|
|
535
550
|
- lib/countries/data/subdivisions/GM.yaml
|
|
536
551
|
- lib/countries/data/subdivisions/GN.yaml
|
|
537
552
|
- lib/countries/data/subdivisions/GQ.yaml
|
|
@@ -563,10 +578,11 @@ files:
|
|
|
563
578
|
- lib/countries/data/subdivisions/KP.yaml
|
|
564
579
|
- lib/countries/data/subdivisions/KR.yaml
|
|
565
580
|
- lib/countries/data/subdivisions/KW.yaml
|
|
581
|
+
- lib/countries/data/subdivisions/KY.yaml
|
|
566
582
|
- lib/countries/data/subdivisions/KZ.yaml
|
|
567
|
-
- lib/countries/data/subdivisions/Ky.yaml
|
|
568
583
|
- lib/countries/data/subdivisions/LA.yaml
|
|
569
584
|
- lib/countries/data/subdivisions/LB.yaml
|
|
585
|
+
- lib/countries/data/subdivisions/LC.yaml
|
|
570
586
|
- lib/countries/data/subdivisions/LI.yaml
|
|
571
587
|
- lib/countries/data/subdivisions/LK.yaml
|
|
572
588
|
- lib/countries/data/subdivisions/LR.yaml
|
|
@@ -576,6 +592,7 @@ files:
|
|
|
576
592
|
- lib/countries/data/subdivisions/LV.yaml
|
|
577
593
|
- lib/countries/data/subdivisions/LY.yaml
|
|
578
594
|
- lib/countries/data/subdivisions/MA.yaml
|
|
595
|
+
- lib/countries/data/subdivisions/MC.yaml
|
|
579
596
|
- lib/countries/data/subdivisions/MD.yaml
|
|
580
597
|
- lib/countries/data/subdivisions/ME.yaml
|
|
581
598
|
- lib/countries/data/subdivisions/MG.yaml
|
|
@@ -608,6 +625,7 @@ files:
|
|
|
608
625
|
- lib/countries/data/subdivisions/PH.yaml
|
|
609
626
|
- lib/countries/data/subdivisions/PK.yaml
|
|
610
627
|
- lib/countries/data/subdivisions/PL.yaml
|
|
628
|
+
- lib/countries/data/subdivisions/PS.yaml
|
|
611
629
|
- lib/countries/data/subdivisions/PT.yaml
|
|
612
630
|
- lib/countries/data/subdivisions/PW.yaml
|
|
613
631
|
- lib/countries/data/subdivisions/PY.yaml
|
|
@@ -630,6 +648,7 @@ files:
|
|
|
630
648
|
- lib/countries/data/subdivisions/SN.yaml
|
|
631
649
|
- lib/countries/data/subdivisions/SO.yaml
|
|
632
650
|
- lib/countries/data/subdivisions/SR.yaml
|
|
651
|
+
- lib/countries/data/subdivisions/SS.yaml
|
|
633
652
|
- lib/countries/data/subdivisions/ST.yaml
|
|
634
653
|
- lib/countries/data/subdivisions/SV.yaml
|
|
635
654
|
- lib/countries/data/subdivisions/SY.yaml
|
|
@@ -638,6 +657,7 @@ files:
|
|
|
638
657
|
- lib/countries/data/subdivisions/TF.yaml
|
|
639
658
|
- lib/countries/data/subdivisions/TG.yaml
|
|
640
659
|
- lib/countries/data/subdivisions/TH.yaml
|
|
660
|
+
- lib/countries/data/subdivisions/TJ.yaml
|
|
641
661
|
- lib/countries/data/subdivisions/TL.yaml
|
|
642
662
|
- lib/countries/data/subdivisions/TM.yaml
|
|
643
663
|
- lib/countries/data/subdivisions/TN.yaml
|
|
@@ -647,7 +667,6 @@ files:
|
|
|
647
667
|
- lib/countries/data/subdivisions/TV.yaml
|
|
648
668
|
- lib/countries/data/subdivisions/TW.yaml
|
|
649
669
|
- lib/countries/data/subdivisions/TZ.yaml
|
|
650
|
-
- lib/countries/data/subdivisions/Tj.yaml
|
|
651
670
|
- lib/countries/data/subdivisions/UA.yaml
|
|
652
671
|
- lib/countries/data/subdivisions/UG.yaml
|
|
653
672
|
- lib/countries/data/subdivisions/UM.yaml
|
|
@@ -658,6 +677,7 @@ files:
|
|
|
658
677
|
- lib/countries/data/subdivisions/VE.yaml
|
|
659
678
|
- lib/countries/data/subdivisions/VN.yaml
|
|
660
679
|
- lib/countries/data/subdivisions/VU.yaml
|
|
680
|
+
- lib/countries/data/subdivisions/WF.yaml
|
|
661
681
|
- lib/countries/data/subdivisions/WS.yaml
|
|
662
682
|
- lib/countries/data/subdivisions/YE.yaml
|
|
663
683
|
- lib/countries/data/subdivisions/ZA.yaml
|
|
@@ -669,6 +689,12 @@ files:
|
|
|
669
689
|
- lib/countries/kwarg_struct.rb
|
|
670
690
|
- lib/countries/mongoid.rb
|
|
671
691
|
- lib/countries/setup.rb
|
|
692
|
+
- lib/countries/sources.rb
|
|
693
|
+
- lib/countries/sources/cldr/downloader.rb
|
|
694
|
+
- lib/countries/sources/cldr/subdivision.rb
|
|
695
|
+
- lib/countries/sources/cldr/subdivision_updater.rb
|
|
696
|
+
- lib/countries/sources/local/cached_loader.rb
|
|
697
|
+
- lib/countries/sources/local/subdivision.rb
|
|
672
698
|
- lib/countries/structure.rb
|
|
673
699
|
- lib/countries/subdivision.rb
|
|
674
700
|
- lib/countries/tasks/geocoding.rake
|
|
@@ -704,7 +730,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
704
730
|
version: '0'
|
|
705
731
|
requirements: []
|
|
706
732
|
rubyforge_project:
|
|
707
|
-
rubygems_version: 2.
|
|
733
|
+
rubygems_version: 2.6.13
|
|
708
734
|
signing_key:
|
|
709
735
|
specification_version: 4
|
|
710
736
|
summary: Gives you a country object full of all sorts of useful information.
|