world_bank 0.0.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Changelog +6 -0
- data/lib/world_bank.rb +6 -4
- data/lib/world_bank/client.rb +27 -54
- data/lib/world_bank/country.rb +337 -11
- data/lib/world_bank/data.rb +73 -0
- data/lib/world_bank/data_query.rb +64 -0
- data/lib/world_bank/income_level.rb +5 -12
- data/lib/world_bank/indicator.rb +52 -11
- data/lib/world_bank/lending_type.rb +4 -11
- data/lib/world_bank/param_query.rb +51 -0
- data/lib/world_bank/query.rb +189 -85
- data/lib/world_bank/region.rb +4 -11
- data/lib/world_bank/source.rb +5 -11
- data/lib/world_bank/topic.rb +8 -15
- data/lib/world_bank/version.rb +1 -1
- data/spec/world_bank/client_spec.rb +6 -74
- data/spec/world_bank/country_spec.rb +24 -39
- data/spec/world_bank/data_query_spec.rb +38 -0
- data/spec/world_bank/income_level_spec.rb +2 -9
- data/spec/world_bank/indicator_spec.rb +2 -2
- data/spec/world_bank/lending_type_spec.rb +2 -8
- data/spec/world_bank/param_query_spec.rb +45 -0
- data/spec/world_bank/query_spec.rb +44 -84
- data/spec/world_bank/region_spec.rb +2 -2
- data/spec/world_bank/source_spec.rb +2 -8
- data/spec/world_bank/topic_spec.rb +11 -17
- data/spec/world_bank_spec.rb +1 -1
- data/world_bank.gemspec +2 -2
- metadata +111 -137
- data/country_aliases +0 -257
- data/notes +0 -33
- data/notes_part_2 +0 -108
- data/projects_notes +0 -11
data/Changelog
ADDED
data/lib/world_bank.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require File.expand_path(File.join(File.dirname(__FILE__), '/world_bank/client'))
|
2
2
|
|
3
3
|
module WorldBank
|
4
|
-
|
5
|
-
def self.client(
|
6
|
-
|
4
|
+
|
5
|
+
def self.client(query={}, raw=false)
|
6
|
+
defaults = {:params => {:format => :json}, :dirs => []}
|
7
|
+
defaults.merge!(query)
|
8
|
+
WorldBank::Client.new(defaults, raw)
|
7
9
|
end
|
8
10
|
|
9
11
|
# Delegate to WorldBank::Client.new
|
@@ -15,5 +17,5 @@ module WorldBank
|
|
15
17
|
def self.respond_to?(method, include_private=false)
|
16
18
|
client.respond_to?(method, include_private) || super(method, include_private)
|
17
19
|
end
|
18
|
-
|
20
|
+
|
19
21
|
end
|
data/lib/world_bank/client.rb
CHANGED
@@ -1,52 +1,26 @@
|
|
1
1
|
require 'faraday_middleware'
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '
|
3
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '
|
4
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '
|
5
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '
|
6
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '
|
7
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'source'))
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'income_level'))
|
4
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'lending_type'))
|
5
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'country'))
|
6
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'indicator'))
|
7
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'topic'))
|
8
8
|
require File.expand_path(File.join(File.dirname(__FILE__), 'region'))
|
9
9
|
require File.expand_path(File.join(File.dirname(__FILE__), 'query'))
|
10
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'data'))
|
11
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'param_query'))
|
12
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'data_query'))
|
10
13
|
|
11
14
|
module WorldBank
|
12
15
|
class Client
|
13
16
|
|
14
17
|
attr_accessor :query
|
15
18
|
|
16
|
-
def initialize(
|
17
|
-
@
|
18
|
-
@
|
19
|
-
@query[:params][:format] = @format
|
19
|
+
def initialize(query, raw)
|
20
|
+
@query = query
|
21
|
+
@raw = raw
|
20
22
|
end
|
21
23
|
|
22
|
-
def sources
|
23
|
-
WorldBank::Source.all(self)
|
24
|
-
end
|
25
|
-
|
26
|
-
def income_levels
|
27
|
-
WorldBank::IncomeLevel.all(self)
|
28
|
-
end
|
29
|
-
|
30
|
-
def lending_types
|
31
|
-
WorldBank::LendingType.all(self)
|
32
|
-
end
|
33
|
-
|
34
|
-
def countries
|
35
|
-
WorldBank::Country.all(self)
|
36
|
-
end
|
37
|
-
|
38
|
-
def indicators
|
39
|
-
WorldBank::Indicator.all(self)
|
40
|
-
end
|
41
|
-
|
42
|
-
def regions
|
43
|
-
WorldBank::Region.all(self)
|
44
|
-
end
|
45
|
-
|
46
|
-
def topics
|
47
|
-
WorldBank::Topic.all(self)
|
48
|
-
end
|
49
|
-
|
50
24
|
def get_query
|
51
25
|
@path = @query[:dirs].join('/')
|
52
26
|
@path += '?'
|
@@ -57,32 +31,31 @@ module WorldBank
|
|
57
31
|
@path += params.join('&')
|
58
32
|
get(@path)
|
59
33
|
end
|
60
|
-
|
34
|
+
|
61
35
|
def get(path, headers={})
|
62
|
-
|
63
|
-
|
64
|
-
|
36
|
+
response = connection.get do |request|
|
37
|
+
request.url(path, headers)
|
38
|
+
end
|
65
39
|
response.body
|
66
|
-
end
|
40
|
+
end
|
67
41
|
|
68
42
|
private
|
69
|
-
|
43
|
+
|
70
44
|
def connection
|
71
45
|
Faraday.new(:url => 'http://api.worldbank.org/') do |connection|
|
72
46
|
connection.use Faraday::Request::UrlEncoded
|
73
47
|
connection.use Faraday::Response::RaiseError
|
74
48
|
connection.use Faraday::Response::Mashify
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
end
|
49
|
+
unless @raw
|
50
|
+
case @query[:params][:format].to_s.downcase
|
51
|
+
when 'json'
|
52
|
+
connection.use Faraday::Response::ParseJson
|
53
|
+
when 'xml'
|
54
|
+
connection.use Faraday::Response::ParseXml
|
55
|
+
end
|
56
|
+
end
|
84
57
|
connection.adapter(Faraday.default_adapter)
|
85
58
|
end
|
86
|
-
end
|
59
|
+
end
|
87
60
|
end
|
88
61
|
end
|
data/lib/world_bank/country.rb
CHANGED
@@ -1,24 +1,321 @@
|
|
1
1
|
module WorldBank
|
2
2
|
|
3
3
|
class Country
|
4
|
-
|
4
|
+
|
5
|
+
COUNTRY_ALIASES = [
|
6
|
+
['AW', 'ABW', 'aruba'],
|
7
|
+
['AF', 'AFG', 'afganistan'],
|
8
|
+
['AO', 'AGO', 'angola'],
|
9
|
+
['AI', 'AIA', 'anguilla'],
|
10
|
+
['AX', 'ALA', 'aland_islands'],
|
11
|
+
['AL', 'ALB', 'albania'],
|
12
|
+
['AD', 'AND', 'andorra'],
|
13
|
+
['AE', 'ARE', 'united_arab_emirates'],
|
14
|
+
['AR', 'ARG', 'argentina'],
|
15
|
+
['AM', 'ARM', 'armenia'],
|
16
|
+
['AS', 'ASM', 'american_samoa'],
|
17
|
+
['AQ', 'ATA', 'antarctica'],
|
18
|
+
['TF', 'ATF', 'french_southern_territories'],
|
19
|
+
['AG', 'ATG', 'antigua_and_barbuda'],
|
20
|
+
['AU', 'AUS', 'australia'],
|
21
|
+
['AT', 'AUT', 'austria'],
|
22
|
+
['AZ', 'AZE', 'azerbaijan'],
|
23
|
+
['BI', 'BDI', 'burundi'],
|
24
|
+
['BE', 'BEL', 'belgium'],
|
25
|
+
['BJ', 'BEN', 'benin'],
|
26
|
+
['BQ', 'BES', 'bonaire_saint_eustatius_and_saba'],
|
27
|
+
['BF', 'BFA', 'burkina_faso'],
|
28
|
+
['BD', 'BGD', 'bangladesh'],
|
29
|
+
['BG', 'BGR', 'bulgaria'],
|
30
|
+
['BH', 'BHR', 'bahrain'],
|
31
|
+
['BS', 'BHS', 'bahamas'],
|
32
|
+
['BA', 'BIH', 'bosnia_and_herzegovina'],
|
33
|
+
['BL', 'BLM', 'saint_barthelemy'],
|
34
|
+
['BY', 'BLR', 'belarus'],
|
35
|
+
['BZ', 'BLZ', 'belize'],
|
36
|
+
['BM', 'BMU', 'bermuda'],
|
37
|
+
['BO', 'BOL', 'plurinational_state_of_bolivia'],
|
38
|
+
['BR', 'BRA', 'brazil'],
|
39
|
+
['BB', 'BRB', 'barbados'],
|
40
|
+
['BN', 'BRN', 'brunei_darussalam'],
|
41
|
+
['BT', 'BTN', 'bhutan'],
|
42
|
+
['BV', 'BVT', 'bouvet_island'],
|
43
|
+
['BW', 'BWA', 'botswana'],
|
44
|
+
['CF', 'CAF', 'central_african_republic'],
|
45
|
+
['CA', 'CAN', 'canada'],
|
46
|
+
['CC', 'CCK', 'cocos_keeling_islands'],
|
47
|
+
['CH', 'CHE', 'switzerland'],
|
48
|
+
['CL', 'CHL', 'chile'],
|
49
|
+
['CN', 'CHN', 'china'],
|
50
|
+
['CI', 'CIV', 'cote_divoire'],
|
51
|
+
['CM', 'CMR', 'cameroon'],
|
52
|
+
['CD', 'COD', 'democratic_republic_of_the_congo'],
|
53
|
+
['CG', 'COG', 'congo'],
|
54
|
+
['CK', 'COK', 'cook_islands'],
|
55
|
+
['CO', 'COL', 'colombia'],
|
56
|
+
['KM', 'COM', 'comoros'],
|
57
|
+
['CV', 'CPV', 'cape_verde'],
|
58
|
+
['CR', 'CRI', 'costa_rica'],
|
59
|
+
['CU', 'CUB', 'cuba'],
|
60
|
+
['CW', 'CUW', 'curacao'],
|
61
|
+
['CX', 'CXR', 'christmas_island'],
|
62
|
+
['KY', 'CYM', 'cayman_islands'],
|
63
|
+
['CY', 'CYP', 'cyprus'],
|
64
|
+
['CZ', 'CZE', 'czech_republic'],
|
65
|
+
['DE', 'DEU', 'germany'],
|
66
|
+
['DJ', 'DJI', 'djibouti'],
|
67
|
+
['DM', 'DMA', 'dominca'],
|
68
|
+
['DK', 'DNK', 'denmark'],
|
69
|
+
['DO', 'DOM', 'dominican_republic'],
|
70
|
+
['DZ', 'DZA', 'algeria'],
|
71
|
+
['EC', 'ECU', 'ecuador'],
|
72
|
+
['EG', 'EGY', 'egypt'],
|
73
|
+
['ER', 'ERI', 'eritrea'],
|
74
|
+
['EH', 'ESH', 'western_sahara'],
|
75
|
+
['ES', 'ESP', 'spain'],
|
76
|
+
['EE', 'EST', 'estonia'],
|
77
|
+
['ET', 'ETH', 'ethiopia'],
|
78
|
+
['FI', 'FIN', 'finland'],
|
79
|
+
['FJ', 'FJI', 'fiji'],
|
80
|
+
['FK', 'FLK', 'falkland_islands_malvinas'],
|
81
|
+
['FR', 'FRA', 'france'],
|
82
|
+
['FO', 'FRO', 'faroe_islands'],
|
83
|
+
['FM', 'FSM', 'federated_states_of_micronesia'],
|
84
|
+
['GA', 'GAB', 'gabon'],
|
85
|
+
['GB', 'GBR', 'united_kingdom'],
|
86
|
+
['GE', 'GEO', 'georgia'],
|
87
|
+
['GG', 'GGY', 'guernsey'],
|
88
|
+
['GH', 'GHA', 'ghana'],
|
89
|
+
['GI', 'GIB', 'gibraltar'],
|
90
|
+
['GN', 'GIN', 'guinea'],
|
91
|
+
['GP', 'GLP', 'guadeloupe'],
|
92
|
+
['GM', 'GMB', 'gambia'],
|
93
|
+
['GW', 'GNB', 'guinea_bissau'],
|
94
|
+
['GQ', 'GNQ', 'equatorial_guinea'],
|
95
|
+
['GR', 'GRC', 'greece'],
|
96
|
+
['GD', 'GRD', 'grenada'],
|
97
|
+
['GL', 'GRL', 'greenland'],
|
98
|
+
['GT', 'GTM', 'guatemala'],
|
99
|
+
['GF', 'GUF', 'french_guiana'],
|
100
|
+
['GU', 'GUM', 'guam'],
|
101
|
+
['GY', 'GUY', 'guyana'],
|
102
|
+
['HK', 'HKG', 'hong_kong'],
|
103
|
+
['HM', 'HMD', 'heard_island_mcdonald_islands'],
|
104
|
+
['HN', 'HND', 'honduras'],
|
105
|
+
['HR', 'HRV', 'croatia'],
|
106
|
+
['HT', 'HTI', 'haiti'],
|
107
|
+
['HU', 'HUN', 'hungary'],
|
108
|
+
['ID', 'IDN', 'indonesia'],
|
109
|
+
['IM', 'IMN', 'isle_of_man'],
|
110
|
+
['IN', 'IND', 'india'],
|
111
|
+
['IO', 'IOT', 'british_indian_ocean_territory'],
|
112
|
+
['IE', 'IRL', 'ireland'],
|
113
|
+
['IR', 'IRN', 'islamic_republic_of_iran'],
|
114
|
+
['IQ', 'IRQ', 'iraq'],
|
115
|
+
['IS', 'ISL', 'iceland'],
|
116
|
+
['IL', 'ISR', 'israel'],
|
117
|
+
['IT', 'ITA', 'italy'],
|
118
|
+
['JM', 'JAM', 'jamaica'],
|
119
|
+
['JE', 'JEY', 'jersey'],
|
120
|
+
['JO', 'JOR', 'jordan'],
|
121
|
+
['JP', 'JPN', 'japan'],
|
122
|
+
['KZ', 'KAZ', 'kazakhstan'],
|
123
|
+
['KE', 'KEN', 'kenya'],
|
124
|
+
['KG', 'KGZ', 'kyrgyzstan'],
|
125
|
+
['KH', 'KHM', 'cambodia'],
|
126
|
+
['KI', 'KIR', 'kiribati'],
|
127
|
+
['KN', 'KNA', 'saint_kitts_and_nevis'],
|
128
|
+
['KR', 'KOR', 'republic_of_korea'],
|
129
|
+
['KW', 'KWT', 'kuwait'],
|
130
|
+
['LA', 'LAO', 'lao_peoples_democratic_republic'],
|
131
|
+
['LB', 'LBN', 'lebanon'],
|
132
|
+
['LR', 'LBR', 'liberia'],
|
133
|
+
['LY', 'LBY', 'libyan_arab_jamahiriya'],
|
134
|
+
['LC', 'LCA', 'saint_lucia'],
|
135
|
+
['LI', 'LIE', 'liechtenstein'],
|
136
|
+
['LK', 'LKA', 'sri_lanka'],
|
137
|
+
['LS', 'LSO', 'lesotho'],
|
138
|
+
['LT', 'LTU', 'lithuania'],
|
139
|
+
['LU', 'LUX', 'luxembourg'],
|
140
|
+
['LV', 'LVA', 'latvia'],
|
141
|
+
['MO', 'MAC', 'macao'],
|
142
|
+
['MF', 'MAF', 'saint_martin'],
|
143
|
+
['MA', 'MAR', 'morocco'],
|
144
|
+
['MC', 'MCO', 'monaco'],
|
145
|
+
['MD', 'MDA', 'republic_of_moldova'],
|
146
|
+
['MG', 'MDG', 'madagascar'],
|
147
|
+
['MV', 'MDV', 'maldives'],
|
148
|
+
['MX', 'MEX', 'mexico'],
|
149
|
+
['MH', 'MHL', 'marshall_islands'],
|
150
|
+
['MK', 'MKD', 'the_former_yugoslav_republic_of_macedonia'],
|
151
|
+
['ML', 'MLI', 'mali'],
|
152
|
+
['MT', 'MLT', 'malta'],
|
153
|
+
['MM', 'MMR', 'myanmar'],
|
154
|
+
['ME', 'MNE', 'montenegro'],
|
155
|
+
['MN', 'MNG', 'mongolia'],
|
156
|
+
['MP', 'MNP', 'northern_mariana_islands'],
|
157
|
+
['MZ', 'MOZ', 'mozambique'],
|
158
|
+
['MR', 'MRT', 'mauritania'],
|
159
|
+
['MS', 'MSR', 'montserrat'],
|
160
|
+
['MQ', 'MTQ', 'martinique'],
|
161
|
+
['MU', 'MUS', 'mauritius'],
|
162
|
+
['MW', 'MWI', 'malawi'],
|
163
|
+
['MY', 'MYS', 'malaysia'],
|
164
|
+
['YT', 'MYT', 'mayotte'],
|
165
|
+
['NA', 'NAM', 'namibia'],
|
166
|
+
['NC', 'NCL', 'new_caledonia'],
|
167
|
+
['NE', 'NER', 'niger'],
|
168
|
+
['NF', 'NFK', 'norfolk_island'],
|
169
|
+
['NG', 'NGA', 'nigeria'],
|
170
|
+
['NI', 'NIC', 'nicaragua'],
|
171
|
+
['NU', 'NIU', 'niue'],
|
172
|
+
['NL', 'NLD', 'netherlands'],
|
173
|
+
['NO', 'NOR', 'norway'],
|
174
|
+
['NP', 'NPL', 'nepal'],
|
175
|
+
['NR', 'NRU', 'nauru'],
|
176
|
+
['NZ', 'NZL', 'new_zealand'],
|
177
|
+
['OM', 'OMN', 'oman'],
|
178
|
+
['PK', 'PAK', 'pakistan'],
|
179
|
+
['PA', 'PAN', 'panama'],
|
180
|
+
['PN', 'PCN', 'pitcairn'],
|
181
|
+
['PE', 'PER', 'peru'],
|
182
|
+
['PH', 'PHL', 'philippines'],
|
183
|
+
['PW', 'PLW', 'palau'],
|
184
|
+
['PG', 'PNG', 'papua_new_guinea'],
|
185
|
+
['PL', 'POL', 'poland'],
|
186
|
+
['PR', 'PRI', 'puerto_rico'],
|
187
|
+
['KP', 'PRK', 'democratic_peoples_republic_of_korea'],
|
188
|
+
['PT', 'PRT', 'portugal'],
|
189
|
+
['PY', 'PRY', 'paraguay'],
|
190
|
+
['PS', 'PSE', 'occupied_palestinian_territory'],
|
191
|
+
['PF', 'PYF', 'french_polynesia'],
|
192
|
+
['QA', 'QAT', 'qatar'],
|
193
|
+
['RE', 'REU', 'reunion'],
|
194
|
+
['RO', 'ROU', 'romania'],
|
195
|
+
['RU', 'RUS', 'russian_federation'],
|
196
|
+
['RW', 'RWA', 'rwanda'],
|
197
|
+
['SA', 'SAU', 'saudi_arabia'],
|
198
|
+
['SD', 'SDN', 'sudan'],
|
199
|
+
['SN', 'SEN', 'senegal'],
|
200
|
+
['SG', 'SGP', 'singapore'],
|
201
|
+
['GS', 'SGS', 'south_georgia_and_the_south_sandwich_islands'],
|
202
|
+
['SH', 'SHN', 'saint_helena_ascension_and_tristan_da_cunha'],
|
203
|
+
['SJ', 'SJM', 'svalbard_and_jan_mayen'],
|
204
|
+
['SB', 'SLB', 'soloman_islands'],
|
205
|
+
['SL', 'SLE', 'sierra_leone'],
|
206
|
+
['SV', 'SLV', 'el_salvador'],
|
207
|
+
['SM', 'SMR', 'san_marino'],
|
208
|
+
['SO', 'SOM', 'somalia'],
|
209
|
+
['PM', 'SPM', 'saint_pierre_and_miquelon'],
|
210
|
+
['RS', 'SRB', 'serbia'],
|
211
|
+
['ST', 'STP', 'sao_tome_and_principe'],
|
212
|
+
['SR', 'SUR', 'suriname'],
|
213
|
+
['SK', 'SVK', 'slovakia'],
|
214
|
+
['SI', 'SVN', 'slovenia'],
|
215
|
+
['SE', 'SWE', 'sweden'],
|
216
|
+
['SZ', 'SWZ', 'swaziland'],
|
217
|
+
['SX', 'SXM', 'sint_maarten'],
|
218
|
+
['SC', 'SYC', 'seychelles'],
|
219
|
+
['SY', 'SYR', 'syrian_arab_republic'],
|
220
|
+
['TC', 'TCA', 'turks_caicos_islands'],
|
221
|
+
['TD', 'TCD', 'chad'],
|
222
|
+
['TG', 'TGO', 'togo'],
|
223
|
+
['TH', 'THA', 'thailand'],
|
224
|
+
['TJ', 'TJK', 'tajikistan'],
|
225
|
+
['TK', 'TKL', 'tokelau'],
|
226
|
+
['TM', 'TKM', 'turkmenistan'],
|
227
|
+
['TL', 'TLS', 'timor_leste'],
|
228
|
+
['TO', 'TON', 'tonga'],
|
229
|
+
['TT', 'TTO', 'trinidad_and_tobago'],
|
230
|
+
['TN', 'TUN', 'tunisia'],
|
231
|
+
['TR', 'TUR', 'turkey'],
|
232
|
+
['TU', 'TUV', 'tuvalu'],
|
233
|
+
['TW', 'TWN', 'taiwan_provice_of_china'],
|
234
|
+
['TZ', 'TZA', 'united_republic_of_tanzania'],
|
235
|
+
['UG', 'UGA', 'uganda'],
|
236
|
+
['UA', 'UKR', 'ukraine'],
|
237
|
+
['UM', 'UMI', 'united_states_minor_outlying_islands'],
|
238
|
+
['UY', 'URY', 'uruguay'],
|
239
|
+
['US', 'USA', 'united_states_of_america'],
|
240
|
+
['UZ', 'UZB', 'uzbekistan'],
|
241
|
+
['VC', 'VCT', 'saint_vincent_and_the_grenadines'],
|
242
|
+
['VE', 'VEN', 'bolivarian_republic_of_venezuela'],
|
243
|
+
['VG', 'VGB', 'british_virgin_islands'],
|
244
|
+
['VI', 'VIR', 'us_virgin_islands'],
|
245
|
+
['VN', 'VNM', 'viet_nam'],
|
246
|
+
['VU', 'VUT', 'vanuatu'],
|
247
|
+
['WF', 'WLF', 'wallis_and_futuna'],
|
248
|
+
['WS', 'WSM', 'samoa'],
|
249
|
+
['YE', 'YEM', 'yemen'],
|
250
|
+
['ZA', 'ZAF', 'south_africa'],
|
251
|
+
['ZM', 'ZMB', 'zambia'],
|
252
|
+
['ZW', 'ZWE', 'zimbabwe']
|
253
|
+
]
|
254
|
+
|
5
255
|
attr_reader :raw, :name, :iso2_code, :iso3_code, :region, :income_level, :lending_type, :capital, :type
|
6
256
|
|
7
|
-
def self.
|
8
|
-
|
257
|
+
def self.country_aliases
|
258
|
+
COUNTRY_ALIASES
|
9
259
|
end
|
10
260
|
|
11
|
-
def self.
|
12
|
-
|
13
|
-
|
261
|
+
def self.format(arg)
|
262
|
+
find('all').format(arg)
|
263
|
+
end
|
264
|
+
|
265
|
+
def self.id(arg)
|
266
|
+
find('all').id(arg)
|
267
|
+
end
|
268
|
+
|
269
|
+
def self.most_recent_values(arg)
|
270
|
+
find('all').most_recent_values(arg)
|
271
|
+
end
|
272
|
+
|
273
|
+
def self.page(arg)
|
274
|
+
find('all').page(arg)
|
275
|
+
end
|
276
|
+
|
277
|
+
def self.per_page
|
278
|
+
find('all').per_page(arg)
|
279
|
+
end
|
280
|
+
|
281
|
+
def self.language(arg)
|
282
|
+
find('all').language(arg)
|
283
|
+
end
|
284
|
+
|
285
|
+
def self.income_level(arg)
|
286
|
+
find('all').income_level(arg)
|
287
|
+
end
|
288
|
+
|
289
|
+
def self.lending_type(arg)
|
290
|
+
find('all').lending_type(arg)
|
291
|
+
end
|
292
|
+
|
293
|
+
def self.region(arg)
|
294
|
+
find('all').region(arg)
|
295
|
+
end
|
296
|
+
|
297
|
+
def self.country
|
298
|
+
find('all').country(arg)
|
299
|
+
end
|
300
|
+
|
301
|
+
def self.indicators(arg)
|
302
|
+
find('all').indicator(arg)
|
303
|
+
end
|
304
|
+
|
305
|
+
def self.fetch(arg)
|
306
|
+
find(arg).fetch
|
307
|
+
end
|
308
|
+
|
309
|
+
def self.all
|
310
|
+
find('all')
|
14
311
|
end
|
15
312
|
|
16
313
|
def self.find(id)
|
17
|
-
|
18
|
-
|
19
|
-
new(
|
314
|
+
id = normalize_id id
|
315
|
+
id = ensure_id id unless id =~ /all/
|
316
|
+
WorldBank::ParamQuery.new('countries', id, self)
|
20
317
|
end
|
21
|
-
|
318
|
+
|
22
319
|
def initialize(values={})
|
23
320
|
@raw = values
|
24
321
|
@name = values['name']
|
@@ -30,6 +327,35 @@ module WorldBank
|
|
30
327
|
@capital = values['capitalCity']
|
31
328
|
@type = 'countries'
|
32
329
|
end
|
33
|
-
end
|
34
330
|
|
331
|
+
private
|
332
|
+
|
333
|
+
def self.ensure_id(id)
|
334
|
+
@id = id
|
335
|
+
if @id.length > 3
|
336
|
+
@matching = COUNTRIES.select do |country|
|
337
|
+
country[2] =~ Regexp.new(@id)
|
338
|
+
end
|
339
|
+
if @matching.length > 1
|
340
|
+
raise ArgumentError,
|
341
|
+
"More than one country code matched '#{@id}'. Perhaps you meant one of #{@matching.join(', ')}?",
|
342
|
+
caller
|
343
|
+
elsif @matching.length == 0
|
344
|
+
raise ArgumentError,
|
345
|
+
"No countries matched '#{@id}', please try again.",
|
346
|
+
caller
|
347
|
+
else
|
348
|
+
@id = @matching[0][0]
|
349
|
+
end
|
350
|
+
end
|
351
|
+
@id
|
352
|
+
end
|
353
|
+
|
354
|
+
def self.normalize_id(id)
|
355
|
+
id.gsub!(/[ -]/, '_')
|
356
|
+
id.downcase!
|
357
|
+
id
|
358
|
+
end
|
359
|
+
end
|
35
360
|
end
|
361
|
+
|