ar-eurostat-nuts 0.1.0.alpha

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cd64747380b69197431e9dfe43a8fd2525e70f5bae94710db04843b0168268dd
4
+ data.tar.gz: 49943914177ab8a369de691efb2e0960fe4e65fcf3b926b2ee168456c7cc7cc6
5
+ SHA512:
6
+ metadata.gz: 4a4e471460fa3527ecc339b767e201f971fb4b28a7a30577f48d0fb4e77a93e7f8dacd78e006ac01471629401e9db7b621733f58b0cb6428c870522545764ea2
7
+ data.tar.gz: b1e296b26fca1cb0e5bf6e368a2c1b9335bc0d87178dfc532f48bd79a6efc5dd036e7e6957a36e620f9c102be392ecd587b725b737ef054524121a0793428e93
@@ -0,0 +1,11 @@
1
+ module Eurostat
2
+ module NUTS
3
+ module Configuration
4
+ class ConfigurationMissingError < RuntimeError
5
+ def message
6
+ "Configuration required. Use 'Eurostat::NUTS.configure'."
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,41 @@
1
+ module Eurostat
2
+ module NUTS
3
+ module Configuration
4
+ class ParseEntriesData
5
+ def self.call(data)
6
+ new.call(data)
7
+ end
8
+
9
+ def call(data)
10
+ nuts_data = flatten_countries_data(data)
11
+
12
+ normalized_nuts_data = nuts_data.flat_map(&method(:normalize_nuts_data))
13
+ entries = normalized_nuts_data.map(&method(:build_entry))
14
+ entries
15
+ end
16
+
17
+ private
18
+
19
+ def flatten_countries_data(data)
20
+ data.flat_map { |_country_code, country_nuts_data| country_nuts_data }
21
+ end
22
+
23
+ def normalize_nuts_data(country_nuts_data)
24
+ country_nuts_data.map do |nuts_code, details|
25
+ level, label = details.values_at('level', 'label')
26
+
27
+ {
28
+ code: nuts_code,
29
+ level: level,
30
+ labels: Array(label)
31
+ }
32
+ end
33
+ end
34
+
35
+ def build_entry(nuts_data)
36
+ NUTS::Entry.build(**nuts_data)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,30 @@
1
+ module Eurostat
2
+ module NUTS
3
+ module Controls
4
+ module Entry
5
+ module LevelOne
6
+ def self.example(**params)
7
+ attrs = attributes.merge(params)
8
+ NUTS::Entry::LevelOne.new(**attrs)
9
+ end
10
+
11
+ def self.attributes
12
+ { code:, labels: }
13
+ end
14
+
15
+ def self.code
16
+ "ES2"
17
+ end
18
+
19
+ def self.label
20
+ "Noreste"
21
+ end
22
+
23
+ def self.labels
24
+ [label]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ module Eurostat
2
+ module NUTS
3
+ module Controls
4
+ module Entry
5
+ module LevelThree
6
+ def self.example(**params)
7
+ attrs = attributes.merge(params)
8
+ NUTS::Entry::LevelThree.new(**attrs)
9
+ end
10
+
11
+ def self.attributes
12
+ { code:, labels: }
13
+ end
14
+
15
+ def self.code
16
+ "ES211"
17
+ end
18
+
19
+ def self.label
20
+ "Álava"
21
+ end
22
+
23
+ def self.labels
24
+ [label, "Araba"]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ module Eurostat
2
+ module NUTS
3
+ module Controls
4
+ module Entry
5
+ module LevelTwo
6
+ def self.example(**params)
7
+ attrs = attributes.merge(params)
8
+ NUTS::Entry::LevelTwo.new(**attrs)
9
+ end
10
+
11
+ def self.attributes
12
+ { code:, labels: }
13
+ end
14
+
15
+ def self.code
16
+ "ES21"
17
+ end
18
+
19
+ def self.label
20
+ "País Vasco"
21
+ end
22
+
23
+ def self.labels
24
+ [label]
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,97 @@
1
+ module Eurostat
2
+ module NUTS
3
+ module Controls
4
+ module NUTSEntries
5
+ def self.example
6
+ [
7
+ *Spain.nuts_entries,
8
+ *Poland.nuts_entries
9
+ ]
10
+ end
11
+
12
+ module RawData
13
+ def self.example
14
+ {
15
+ Spain.country_code => Spain.raw_nuts_entries_data,
16
+ Poland.country_code => Poland.raw_nuts_entries_data,
17
+ }
18
+ end
19
+ end
20
+
21
+ module Spain
22
+ def self.country_code
23
+ "ES"
24
+ end
25
+
26
+ def self.nuts_entries
27
+ [
28
+ NUTS::Entry::LevelOne .new(code: "ES1", labels: ["Noroeste"]),
29
+ NUTS::Entry::LevelTwo .new(code: "ES11", labels: ["Galicia"]),
30
+ NUTS::Entry::LevelThree.new(code: "ES111", labels: ["A Coruña"]),
31
+ NUTS::Entry::LevelThree.new(code: "ES112", labels: ["Lugo"]),
32
+ NUTS::Entry::LevelOne .new(code: "ES2", labels: ["Noreste"]),
33
+ NUTS::Entry::LevelTwo .new(code: "ES21", labels: ["País Vasco"]),
34
+ NUTS::Entry::LevelThree.new(code: "ES211", labels: ["Álava", "Araba"]),
35
+ NUTS::Entry::LevelThree.new(code: "ES212", labels: ["Gipuzkoa"]),
36
+ NUTS::Entry::LevelOne .new(code: "ES3" , labels: ["Comunidad de Madrid"]),
37
+ NUTS::Entry::LevelTwo .new(code: "ES30" , labels: ["Comunidad de Madrid"]),
38
+ NUTS::Entry::LevelThree.new(code: "ES300", labels: ["Madrid"])
39
+ ]
40
+ end
41
+
42
+ def self.raw_nuts_entries_data
43
+ {
44
+ "ES1" => { "level" => 1, "label" => "Noroeste" },
45
+ "ES11" => { "level" => 2, "label" => "Galicia" },
46
+ "ES111" => { "level" => 3, "label" => "A Coruña" },
47
+ "ES112" => { "level" => 3, "label" => "Lugo" },
48
+ "ES2" => { "level" => 1, "label" => "Noreste" },
49
+ "ES21" => { "level" => 2, "label" => "País Vasco" },
50
+ "ES211" => { "level" => 3, "label" => ["Álava", "Araba"] },
51
+ "ES212" => { "level" => 3, "label" => "Gipuzkoa" },
52
+ "ES3" => { "level" => 1, "label" => "Comunidad de Madrid" },
53
+ "ES30" => { "level" => 2, "label" => "Comunidad de Madrid" },
54
+ "ES300" => { "level" => 3, "label" => "Madrid" }
55
+ }
56
+ end
57
+ end
58
+
59
+ module Poland
60
+ def self.country_code
61
+ "PL"
62
+ end
63
+
64
+ def self.nuts_entries
65
+ [
66
+ NUTS::Entry::LevelOne .new(code: "PL5", labels: ["Makroregion południowo-zachodni"]),
67
+ NUTS::Entry::LevelTwo .new(code: "PL51", labels: ["Dolnośląskie"]),
68
+ NUTS::Entry::LevelThree.new(code: "PL514", labels: ["Miasto Wrocław"]),
69
+ NUTS::Entry::LevelThree.new(code: "PL515", labels: ["Jeleniogórski"]),
70
+ NUTS::Entry::LevelThree.new(code: "PL516", labels: ["Legnicko-głogowski"]),
71
+ NUTS::Entry::LevelOne .new(code: "PL9", labels: ["Makroregion województwo mazowieckie"]),
72
+ NUTS::Entry::LevelTwo .new(code: "PL91", labels: ["Warszawski stołeczny"]),
73
+ NUTS::Entry::LevelThree.new(code: "PL911", labels: ["Miasto Warszawa"]),
74
+ NUTS::Entry::LevelTwo .new(code: "PL92", labels: ["Mazowiecki regionalny"]),
75
+ NUTS::Entry::LevelThree.new(code: "PL926", labels: ["Żyrardowski"])
76
+ ]
77
+ end
78
+
79
+ def self.raw_nuts_entries_data
80
+ {
81
+ "PL5" => { "level" => 1, "label" => "Makroregion południowo-zachodni" },
82
+ "PL51" => { "level" => 2, "label" => "Dolnośląskie" },
83
+ "PL514" => { "level" => 3, "label" => "Miasto Wrocław" },
84
+ "PL515" => { "level" => 3, "label" => "Jeleniogórski" },
85
+ "PL516" => { "level" => 3, "label" => "Legnicko-głogowski" },
86
+ "PL9" => { "level" => 1, "label" => "Makroregion województwo mazowieckie" },
87
+ "PL91" => { "level" => 2, "label" => "Warszawski stołeczny" },
88
+ "PL911" => { "level" => 3, "label" => "Miasto Warszawa" },
89
+ "PL92" => { "level" => 2, "label" => "Mazowiecki regionalny" },
90
+ "PL926" => { "level" => 3, "label" => "Żyrardowski" }
91
+ }
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,5 @@
1
+ require "eurostat/nuts/controls/entry/level_one"
2
+ require "eurostat/nuts/controls/entry/level_two"
3
+ require "eurostat/nuts/controls/entry/level_three"
4
+
5
+ require "eurostat/nuts/controls/nuts_entries"
@@ -0,0 +1,15 @@
1
+ module Eurostat
2
+ module NUTS
3
+ module Dataset
4
+ FILE_NAME = "nuts2021_nuts2024.yml".freeze
5
+
6
+ def self.file_path
7
+ File.expand_path(FILE_NAME, __dir__)
8
+ end
9
+
10
+ def self.load_default_file
11
+ YAML.load_file(file_path)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,298 @@
1
+ ---
2
+ ES:
3
+ ES1:
4
+ level: 1
5
+ label: Noroeste
6
+ ES11:
7
+ level: 2
8
+ label: Galicia
9
+ ES111:
10
+ level: 3
11
+ label:
12
+ - A Coruña
13
+ - Coruña
14
+ - Corunna
15
+ ES112:
16
+ level: 3
17
+ label: Lugo
18
+ ES113:
19
+ level: 3
20
+ label:
21
+ - Ourense
22
+ - Orense
23
+ ES114:
24
+ level: 3
25
+ label: Pontevedra
26
+ ES12:
27
+ level: 2
28
+ label: Principado de Asturias
29
+ ES120:
30
+ level: 3
31
+ label: Asturias
32
+ ES13:
33
+ level: 2
34
+ label: Cantabria
35
+ ES130:
36
+ level: 3
37
+ label: Cantabria
38
+ ES2:
39
+ level: 1
40
+ label: Noreste
41
+ ES21:
42
+ level: 2
43
+ label: País Vasco
44
+ ES211:
45
+ level: 3
46
+ label:
47
+ - Araba
48
+ - Álava
49
+ ES212:
50
+ level: 3
51
+ label:
52
+ - Gipuzkoa
53
+ - Guipúzcoa
54
+ ES213:
55
+ level: 3
56
+ label:
57
+ - Bizkaia
58
+ - Vizcaya
59
+ - Biscay
60
+ ES22:
61
+ level: 2
62
+ label: Comunidad Foral de Navarra
63
+ ES220:
64
+ level: 3
65
+ label:
66
+ - Navarra
67
+ - Navarre
68
+ ES23:
69
+ level: 2
70
+ label: La Rioja
71
+ ES230:
72
+ level: 3
73
+ label: La Rioja
74
+ ES24:
75
+ level: 2
76
+ label: Aragón
77
+ ES241:
78
+ level: 3
79
+ label: Huesca
80
+ ES242:
81
+ level: 3
82
+ label: Teruel
83
+ ES243:
84
+ level: 3
85
+ label:
86
+ - Zaragoza
87
+ - Saragossa
88
+ ES3:
89
+ level: 1
90
+ label: Comunidad de Madrid
91
+ ES30:
92
+ level: 2
93
+ label: Comunidad de Madrid
94
+ ES300:
95
+ level: 3
96
+ label: Madrid
97
+ ES4:
98
+ level: 1
99
+ label: Centro (ES)
100
+ ES41:
101
+ level: 2
102
+ label: Castilla y León
103
+ ES411:
104
+ level: 3
105
+ label: Ávila
106
+ ES412:
107
+ level: 3
108
+ label: Burgos
109
+ ES413:
110
+ level: 3
111
+ label: León
112
+ ES414:
113
+ level: 3
114
+ label: Palencia
115
+ ES415:
116
+ level: 3
117
+ label: Salamanca
118
+ ES416:
119
+ level: 3
120
+ label: Segovia
121
+ ES417:
122
+ level: 3
123
+ label: Soria
124
+ ES418:
125
+ level: 3
126
+ label: Valladolid
127
+ ES419:
128
+ level: 3
129
+ label: Zamora
130
+ ES42:
131
+ level: 2
132
+ label:
133
+ - Castilla-La Mancha
134
+ - Castille-La Mancha
135
+ ES421:
136
+ level: 3
137
+ label: Albacete
138
+ ES422:
139
+ level: 3
140
+ label: Ciudad Real
141
+ ES423:
142
+ level: 3
143
+ label: Cuenca
144
+ ES424:
145
+ level: 3
146
+ label: Guadalajara
147
+ ES425:
148
+ level: 3
149
+ label: Toledo
150
+ ES43:
151
+ level: 2
152
+ label: Extremadura
153
+ ES431:
154
+ level: 3
155
+ label: Badajoz
156
+ ES432:
157
+ level: 3
158
+ label: Cáceres
159
+ ES5:
160
+ level: 1
161
+ label: Este
162
+ ES51:
163
+ level: 2
164
+ label:
165
+ - Cataluña
166
+ - Catalonia
167
+ ES511:
168
+ level: 3
169
+ label: Barcelona
170
+ ES512:
171
+ level: 3
172
+ label:
173
+ - Girona
174
+ - Gerona
175
+ ES513:
176
+ level: 3
177
+ label:
178
+ - Lleida
179
+ - Lérida
180
+ ES514:
181
+ level: 3
182
+ label: Tarragona
183
+ ES52:
184
+ level: 2
185
+ label: 'Comunitat Valenciana '
186
+ ES521:
187
+ level: 3
188
+ label:
189
+ - Alicante
190
+ - Alacant
191
+ ES522:
192
+ level: 3
193
+ label:
194
+ - Castellón
195
+ - Castelló
196
+ ES523:
197
+ level: 3
198
+ label:
199
+ - Valencia
200
+ - València
201
+ ES53:
202
+ level: 2
203
+ label: Illes Balears
204
+ ES531:
205
+ level: 3
206
+ label: Eivissa y Formentera
207
+ ES532:
208
+ level: 3
209
+ label: Mallorca
210
+ ES533:
211
+ level: 3
212
+ label: Menorca
213
+ ES6:
214
+ level: 1
215
+ label: Sur
216
+ ES61:
217
+ level: 2
218
+ label: Andalucía
219
+ ES611:
220
+ level: 3
221
+ label: Almería
222
+ ES612:
223
+ level: 3
224
+ label: Cádiz
225
+ ES613:
226
+ level: 3
227
+ label: Córdoba
228
+ ES614:
229
+ level: 3
230
+ label: Granada
231
+ ES615:
232
+ level: 3
233
+ label: Huelva
234
+ ES616:
235
+ level: 3
236
+ label: Jaén
237
+ ES617:
238
+ level: 3
239
+ label: Málaga
240
+ ES618:
241
+ level: 3
242
+ label:
243
+ - Sevilla
244
+ - Seville
245
+ ES62:
246
+ level: 2
247
+ label: Región de Murcia
248
+ ES620:
249
+ level: 3
250
+ label: Murcia
251
+ ES63:
252
+ level: 2
253
+ label: Ciudad de Ceuta
254
+ ES630:
255
+ level: 3
256
+ label: Ceuta
257
+ ES64:
258
+ level: 2
259
+ label: Ciudad de Melilla
260
+ ES640:
261
+ level: 3
262
+ label: Melilla
263
+ ES7:
264
+ level: 1
265
+ label: Canarias
266
+ ES70:
267
+ level: 2
268
+ label: Canarias
269
+ ES703:
270
+ level: 3
271
+ label: El Hierro
272
+ ES704:
273
+ level: 3
274
+ label: Fuerteventura
275
+ ES705:
276
+ level: 3
277
+ label: Gran Canaria
278
+ ES706:
279
+ level: 3
280
+ label: La Gomera
281
+ ES707:
282
+ level: 3
283
+ label: La Palma
284
+ ES708:
285
+ level: 3
286
+ label: Lanzarote
287
+ ES709:
288
+ level: 3
289
+ label: Tenerife
290
+ ESZ:
291
+ level: 1
292
+ label: Extra-Regio NUTS 1
293
+ ESZZ:
294
+ level: 2
295
+ label: Extra-Regio NUTS 2
296
+ ESZZZ:
297
+ level: 3
298
+ label: Extra-Regio NUTS 3
@@ -0,0 +1,16 @@
1
+ module Eurostat
2
+ module NUTS
3
+ module Entry
4
+ def self.build(code:, labels:, level:)
5
+ entry_cls =
6
+ case level
7
+ when 1 then LevelOne
8
+ when 2 then LevelTwo
9
+ when 3 then LevelThree
10
+ end
11
+
12
+ entry_cls.new(code, labels)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ module Eurostat
2
+ module NUTS
3
+ module Entry
4
+ class LevelOne < Data.define(:code, :labels)
5
+ def level = 1
6
+ def label = labels.first
7
+
8
+ def level_one_projection
9
+ self
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,24 @@
1
+ module Eurostat
2
+ module NUTS
3
+ module Entry
4
+ class LevelThree < Data.define(:code, :labels)
5
+ def level = 3
6
+ def label = labels.first
7
+
8
+ def level_one_projection
9
+ level_one_code = code[...-2]
10
+ NUTS.registry.get(level_one_code)
11
+ end
12
+
13
+ def level_two_projection
14
+ level_two_code = code[...-1]
15
+ NUTS.registry.get(level_two_code)
16
+ end
17
+
18
+ def level_three_projection
19
+ self
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ module Eurostat
2
+ module NUTS
3
+ module Entry
4
+ class LevelTwo < Data.define(:code, :labels)
5
+ def level = 2
6
+ def label = labels.first
7
+
8
+ def level_one_projection
9
+ level_one_code = code[...-1]
10
+ NUTS.registry.get(level_one_code)
11
+ end
12
+
13
+ def level_two_projection
14
+ self
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,2 @@
1
+ en:
2
+ eurostat_nuts:
@@ -0,0 +1,38 @@
1
+ module Eurostat
2
+ module NUTS
3
+ def self.configure(nuts_data)
4
+ nuts_entries = Configuration::ParseEntriesData.(nuts_data)
5
+ @registry = Registry.build(nuts_entries)
6
+ end
7
+
8
+ def self.registry
9
+ raise Configuration::ConfigurationMissingError unless instance_variable_defined?(:@registry)
10
+
11
+ @registry
12
+ end
13
+
14
+ def self.get_label(code)
15
+ registry.get(code)&.label
16
+ end
17
+
18
+ def self.find_code(label)
19
+ registry.find(label)&.code
20
+ end
21
+
22
+ def self.find_code_for_level(label, level)
23
+ entry = registry.find(label)
24
+
25
+ projection_method =
26
+ case level
27
+ when 1 then :level_one_projection
28
+ when 2 then :level_two_projection
29
+ when 3 then :level_three_projection
30
+ end
31
+
32
+ return nil unless projection_method && entry.respond_to?(projection_method)
33
+
34
+ projected_entry = entry.public_send(projection_method)
35
+ projected_entry&.code
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Eurostat
4
+ module NUTS
5
+ class Registry
6
+ module Build
7
+ SKIP_FOR_LABELS = [
8
+ "Extra-Regio NUTS 1",
9
+ "Extra-Regio NUTS 2",
10
+ "Extra-Regio NUTS 3"
11
+ ]
12
+
13
+ def build(nuts_entries)
14
+ code_registry = index_by_code(nuts_entries)
15
+ label_registry = index_by_labels(nuts_entries)
16
+
17
+ Registry.new(code_registry, label_registry)
18
+ end
19
+
20
+ private
21
+
22
+ def index_by_code(nuts_entries)
23
+ nuts_entries.to_h { |nuts_entry| [nuts_entry.code, nuts_entry] }
24
+ end
25
+
26
+ def index_by_labels(nuts_entries)
27
+ nuts_entries
28
+ .map { |entry| [entry.labels, entry] }
29
+ .flat_map { |labels, entry| labels.product([entry]) }
30
+ .to_h { |label, entry| [normalize(label), entry] }
31
+ .tap { |entry_by_label| remove_extra_regio_entries(entry_by_label) }
32
+ end
33
+
34
+ def normalize(label)
35
+ NormalizeLabel.(label)
36
+ end
37
+
38
+ # Entries with labels 'Extra-Regio NUTS 1', 'Extra-Regio NUTS 2', 'Extra-Regio NUTS 3'
39
+ # exist in each country. This ambiguity makes it not deterministic to fetch entry by
40
+ # one of this labels.
41
+ def remove_extra_regio_entries(entry_by_label)
42
+ SKIP_FOR_LABELS
43
+ .map { |avoid_label| normalize(avoid_label) }
44
+ .each { |normalized_avoid_label| entry_by_label.delete(normalized_avoid_label) }
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,28 @@
1
+ module Eurostat
2
+ module NUTS
3
+ class Registry
4
+ module NormalizeLabel
5
+ def self.call(label)
6
+ label
7
+ .then(&method(:to_ascii))
8
+ .then(&method(:alphanumeric_only))
9
+ .then(&method(:snake_case))
10
+ end
11
+
12
+ def self.to_ascii(str)
13
+ I18n.transliterate(str)
14
+ end
15
+
16
+ def self.alphanumeric_only(str)
17
+ alphanumeric = str.gsub(/[_\W]/, ' ')
18
+ alphanumeric.strip
19
+ end
20
+
21
+ def self.snake_case(str)
22
+ underlined = str.gsub(/\s+/, '_')
23
+ underlined.downcase
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,21 @@
1
+ module Eurostat
2
+ module NUTS
3
+ class Registry
4
+ extend Build
5
+
6
+ def initialize(code_registry, label_registry)
7
+ @code_registry = code_registry
8
+ @label_registry = label_registry
9
+ end
10
+
11
+ def get(code)
12
+ @code_registry[code]
13
+ end
14
+
15
+ def find(label)
16
+ normalized_label = NormalizeLabel.(label)
17
+ @label_registry[normalized_label]
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ require 'yaml'
2
+ require 'i18n' # I18n.transliterate
3
+ I18n.load_path << File.expand_path("nuts/locales/en.yml", __dir__)
4
+
5
+ require 'eurostat/nuts/nuts'
6
+ require 'eurostat/nuts/configuration/configuration_missing_error'
7
+ require 'eurostat/nuts/configuration/parse_entries_data'
8
+ require 'eurostat/nuts/dataset/dataset'
9
+
10
+ require 'eurostat/nuts/entry/entry'
11
+ require 'eurostat/nuts/entry/level_one'
12
+ require 'eurostat/nuts/entry/level_two'
13
+ require 'eurostat/nuts/entry/level_three'
14
+
15
+ require 'eurostat/nuts/registry/build'
16
+ require 'eurostat/nuts/registry/registry'
17
+ require 'eurostat/nuts/registry/normalize_label'
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ar-eurostat-nuts
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.alpha
5
+ platform: ruby
6
+ authors:
7
+ - Alexander Repnikov
8
+ - Eloy Rojas Bartolomé
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 1980-01-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: i18n
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.14'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.25'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.25'
41
+ description: Provides an interface to fetch NUTS numbers (Nomenclature of territorial
42
+ units for statistics)
43
+ email: aleksander.repnikov@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/eurostat/nuts.rb
49
+ - lib/eurostat/nuts/configuration/configuration_missing_error.rb
50
+ - lib/eurostat/nuts/configuration/parse_entries_data.rb
51
+ - lib/eurostat/nuts/controls.rb
52
+ - lib/eurostat/nuts/controls/entry/level_one.rb
53
+ - lib/eurostat/nuts/controls/entry/level_three.rb
54
+ - lib/eurostat/nuts/controls/entry/level_two.rb
55
+ - lib/eurostat/nuts/controls/nuts_entries.rb
56
+ - lib/eurostat/nuts/dataset/dataset.rb
57
+ - lib/eurostat/nuts/dataset/nuts2021_nuts2024.yml
58
+ - lib/eurostat/nuts/entry/entry.rb
59
+ - lib/eurostat/nuts/entry/level_one.rb
60
+ - lib/eurostat/nuts/entry/level_three.rb
61
+ - lib/eurostat/nuts/entry/level_two.rb
62
+ - lib/eurostat/nuts/locales/en.yml
63
+ - lib/eurostat/nuts/nuts.rb
64
+ - lib/eurostat/nuts/registry/build.rb
65
+ - lib/eurostat/nuts/registry/normalize_label.rb
66
+ - lib/eurostat/nuts/registry/registry.rb
67
+ homepage: https://github.com/arepnikov/eurostat-nuts
68
+ licenses:
69
+ - MIT
70
+ metadata: {}
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 2.7.0
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubygems_version: 3.6.7
86
+ specification_version: 4
87
+ summary: Provides an interface to fetch NUTS numbers (Nomenclature of territorial
88
+ units for statistics)
89
+ test_files: []