countries 5.1.0 → 5.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 73f88c0991bcb5bf2b2d08014ae66f04adb368b856d1cd084928549b282e7b33
4
- data.tar.gz: f2edba4b8014c85a4e5c263635bbb04d1f8b03d11a91814d08e009705f94e0d4
3
+ metadata.gz: 0ba15249a08854651cd8bba33f527c450145bce3c156c1dca3d0d1a60107d8f2
4
+ data.tar.gz: f4c0d30dd51686895801e21c7ff99b665b981f0fce46f9541f105091bbd942d3
5
5
  SHA512:
6
- metadata.gz: 9ebd72d36cd13b11979325ef5f69535c6a3665a2763ca8920570e13d93feae05fd4e319698207f44d89fecb29daf3db5f56c875705d0e65d9c7c4560a84b75ee
7
- data.tar.gz: 69d70fdc81b89ffcc128931ead30b874e1d24660e2a9db59d120f6ad46cdec7a6657823abc5abe8ee107564b7cb52d49f38fc05800cdd0704ea8eebe9f12fb7a
6
+ metadata.gz: d8af15c8ee5f6ef03c8a65eb3529c6ed4facab419ed8e8336ee3af58b474cab0bc3291cd7785e4105a05a741160104fce419f678f769dd075a4c6cfdc45fdf2e
7
+ data.tar.gz: 892d45e8c1f4d1c2ac95d4fde2d8294f9ea367a1123f5648bdc107056124d44b57d174bfba6d3caff66502db0b5f12dc8b13873611e4ac9611a9f25f1065a8fe
data/CHANGELOG.md CHANGED
@@ -3,9 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project adheres to [Semantic Versioning](https://semver.org/).
5
5
 
6
+ ## [5.1.1](https://github.com/countries/countries/releases/tag/v5.1.1') (2022/07/18 09:10 +00:00)
7
+
8
+ **Important changes**
9
+
10
+ - Subdivision loading now respects the configured locales and will only load subdivision translations for the configured locales instead of loading all translations. This fixes [\#580](https://github.com/countries/countries/issues/580)
11
+
12
+ **Merged pull requests:**
13
+
14
+ * Refactor subdivision loading to respect the configured locales. [\#762](https://github.com/countries/countries/pull/762) ([pmor](https://github.com/pmor))
15
+ * Add an alternative name for USVI lookup [\#763](https://github.com/countries/countries/pull/763) ([tadejm](https://github.com/tadejm))
16
+
17
+
6
18
  ## [5.1.0](https://github.com/countries/countries/releases/tag/v5.1.0') (2022/06/27 07:50 +00:00)
7
19
 
8
20
  **Important changes**
21
+
9
22
  - `Subdivision` now has a `type` attribute obtained from ISO3166-2 subdivision types. `type` is a _lowercase_ and _snake_cased_ string.
10
23
  - Adds `Country#subdivision_types` and `#humanized_subdivision_types` to list a country's subdivision types
11
24
  - Adds `Country#subdivisions_of_types(types)` to allow getting subdivisions of given type(s)
data/README.markdown CHANGED
@@ -256,6 +256,9 @@ ISO3166.configure do |config|
256
256
  end
257
257
  ```
258
258
 
259
+ If you change the value of `ISO3166.configuration.locales` after initialization, you should call `ISO3166::Data.reset` to reset the data cache, or you may end up with inconsistently loaded locales.
260
+ As of 5.1.1, subdivision translations also respect this and will only load the selected locales.
261
+
259
262
  ## Loading Custom Data
260
263
 
261
264
  As of 2.0 countries supports loading custom countries / overriding data in its data set, though if you choose to do this please contribute back to the upstream repo!
@@ -64,17 +64,6 @@ module ISO3166
64
64
  translations.merge(custom_countries)
65
65
  end
66
66
 
67
- def subdivisions(alpha2)
68
- @subdivisions ||= {}
69
- @subdivisions[alpha2] ||= create_subdivisions(subdivision_data(alpha2))
70
- end
71
-
72
- def create_subdivisions(subdivision_data)
73
- subdivision_data.each_with_object({}) do |(k, v), hash|
74
- hash[k] = Subdivision.new(v)
75
- end
76
- end
77
-
78
67
  protected
79
68
 
80
69
  def strip_accents(string)
@@ -85,15 +74,6 @@ module ISO3166
85
74
  end
86
75
  end
87
76
 
88
- def subdivision_data(alpha2)
89
- file = subdivision_file_path(alpha2)
90
- File.exist?(file) ? YAML.load_file(file) : {}
91
- end
92
-
93
- def subdivision_file_path(alpha2)
94
- File.join(File.dirname(__FILE__), '..', 'data', 'subdivisions', "#{alpha2}.yaml")
95
- end
96
-
97
77
  # Some methods like parse_value are expensive in that they
98
78
  # create a large number of objects internally. In order to reduce the
99
79
  # object creations and save the GC, we can cache them in an class instance
@@ -58,9 +58,9 @@ module ISO3166
58
58
  # @return [Array<ISO3166::Subdivision>] the list of subdivisions for this Country.
59
59
  def subdivisions
60
60
  @subdivisions ||= if data['subdivisions']
61
- self.class.create_subdivisions(data['subdivisions'])
61
+ ISO3166::Data.create_subdivisions(data['subdivisions'])
62
62
  else
63
- self.class.subdivisions(alpha2)
63
+ ISO3166::Data.subdivisions(alpha2)
64
64
  end
65
65
  end
66
66
 
@@ -50,4 +50,5 @@ VI:
50
50
  - Amerikaanse Maagdeneilanden
51
51
  - Virgin Islands (U.S.)
52
52
  - United States Virgin Islands
53
+ - U.S. Virgin Islands
53
54
  world_region: AMER
@@ -8,6 +8,7 @@ module ISO3166
8
8
  @loaded_country_codes = []
9
9
  @registered_data = {}
10
10
  @mutex = Mutex.new
11
+ @subdivisions = {}
11
12
 
12
13
  def initialize(alpha2)
13
14
  @alpha2 = alpha2.to_s.upcase
@@ -44,6 +45,7 @@ module ISO3166
44
45
  # Resets the loaded data and cache
45
46
  def reset
46
47
  @cache = {}
48
+ @subdivisions = {}
47
49
  @registered_data = {}
48
50
  ISO3166.configuration.loaded_locales = []
49
51
  end
@@ -68,6 +70,26 @@ module ISO3166
68
70
  File.join([@cache_dir] + file_array)
69
71
  end
70
72
 
73
+ def subdivision_data(alpha2)
74
+ file = subdivision_file_path(alpha2)
75
+ data = File.exist?(file) ? YAML.load_file(file) : {}
76
+ locales = ISO3166.configuration.locales.map(&:to_s)
77
+ data.each_value{ |v| v['translations'] = v['translations'].slice(*locales)}
78
+
79
+ return data
80
+ end
81
+
82
+ def subdivisions(alpha2)
83
+ @subdivisions ||= {}
84
+ @subdivisions[alpha2] ||= create_subdivisions(ISO3166::Data.subdivision_data(alpha2))
85
+ end
86
+
87
+ def create_subdivisions(subdivision_data)
88
+ subdivision_data.each_with_object({}) do |(k, v), hash|
89
+ hash[k] = Subdivision.new(v)
90
+ end
91
+ end
92
+
71
93
  private
72
94
 
73
95
  def load_data!
@@ -176,6 +198,10 @@ module ISO3166
176
198
 
177
199
  data
178
200
  end
201
+
202
+ def subdivision_file_path(alpha2)
203
+ File.join(File.dirname(__FILE__), 'data', 'subdivisions', "#{alpha2}.yaml")
204
+ end
179
205
  end
180
206
  end
181
207
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Countries
4
- VERSION = '5.1.0'.freeze
4
+ VERSION = '5.1.1'.freeze
5
5
  end
data/spec/data_spec.rb CHANGED
@@ -26,6 +26,17 @@ describe ISO3166::Data do
26
26
  expect(data['translated_names'].size).to eq 1
27
27
  end
28
28
 
29
+ it 'only loads subdivision translations for the configured locales' do
30
+ ISO3166.configuration.locales = %i[en]
31
+ ISO3166::Data.reset
32
+ subdivisions = ISO3166::Data.subdivisions('US')
33
+ expect(subdivisions.values.first['translations'].keys).to eq(%w[en])
34
+ ISO3166.configuration.locales = %i[es de en]
35
+ ISO3166::Data.reset
36
+ subdivisions = ISO3166::Data.subdivisions('US')
37
+ expect(subdivisions.values.first['translations'].keys).to eq(%w[es de en])
38
+ end
39
+
29
40
  describe '#codes' do
30
41
  it 'returns an array' do
31
42
  data = ISO3166::Data.codes
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: 5.1.0
4
+ version: 5.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Robinson
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2022-06-27 00:00:00.000000000 Z
14
+ date: 2022-07-18 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: sixarm_ruby_unaccent