factbook-readers 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +5 -5
  2. data/Manifest.txt +3 -25
  3. data/README.md +11 -69
  4. data/Rakefile +3 -3
  5. data/lib/factbook-readers.rb +5 -40
  6. data/lib/factbook-readers/convert.rb +37 -0
  7. data/lib/factbook-readers/counter.rb +7 -9
  8. data/lib/factbook-readers/page.rb +41 -61
  9. data/lib/factbook-readers/page_info.rb +15 -3
  10. data/lib/factbook-readers/version.rb +2 -2
  11. data/test/helper.rb +3 -0
  12. data/test/test_counter.rb +9 -6
  13. data/test/test_download.rb +27 -0
  14. data/test/test_fields.rb +44 -27
  15. data/test/test_json.rb +4 -4
  16. data/test/test_page.rb +8 -8
  17. data/test/test_version.rb +15 -0
  18. metadata +11 -48
  19. data/data/categories.csv +0 -164
  20. data/data/codes.csv +0 -262
  21. data/data/codesxref.csv +0 -280
  22. data/data/comparisons.csv +0 -75
  23. data/lib/factbook-readers/builder.rb +0 -187
  24. data/lib/factbook-readers/builder_item.rb +0 -201
  25. data/lib/factbook-readers/builder_json.rb +0 -68
  26. data/lib/factbook-readers/codes.rb +0 -121
  27. data/lib/factbook-readers/comparisons.rb +0 -49
  28. data/lib/factbook-readers/normalize.rb +0 -42
  29. data/lib/factbook-readers/reader_json.rb +0 -50
  30. data/lib/factbook-readers/sanitizer.rb +0 -351
  31. data/lib/factbook-readers/sect.rb +0 -28
  32. data/lib/factbook-readers/subsect.rb +0 -17
  33. data/lib/factbook-readers/table.rb +0 -51
  34. data/lib/factbook-readers/utils.rb +0 -47
  35. data/lib/factbook-readers/utils_info.rb +0 -128
  36. data/test/test_builder.rb +0 -30
  37. data/test/test_codes.rb +0 -72
  38. data/test/test_comparisons.rb +0 -16
  39. data/test/test_item_builder.rb +0 -97
  40. data/test/test_json_builder.rb +0 -23
  41. data/test/test_normalize.rb +0 -21
  42. data/test/test_sanitizer.rb +0 -36
  43. data/test/test_sanitizer_regex.rb +0 -87
@@ -1,11 +1,23 @@
1
1
 
2
2
  module Factbook
3
3
 
4
+ ## todo/check: change to PageMeta/ProfileMeta
5
+ ## or Page/ProfileMetaInfo or MetaInfo or Meta or such - why? why not?
6
+
7
+
8
+ ### was before 2021 (when using html page scrapping)
9
+ # PageInfo = Struct.new( :country_code,
10
+ # :country_name,
11
+ # :country_affiliation,
12
+ # :region_code,
13
+ # :region_name,
14
+ # :last_updated )
15
+
4
16
  PageInfo = Struct.new( :country_code,
5
17
  :country_name,
6
- :country_affiliation,
7
- :region_code,
8
18
  :region_name,
9
- :last_updated )
19
+ :published, ## note: published is NOT before updated (like an alias for created) BUT is often older/later than updated - why!?
20
+ :updated )
21
+
10
22
 
11
23
  end # module Factbook
@@ -3,8 +3,8 @@ module Factbook
3
3
  module Module
4
4
  module Readers
5
5
  MAJOR = 1
6
- MINOR = 0
7
- PATCH = 1
6
+ MINOR = 1
7
+ PATCH = 0
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
data/test/helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ $LOAD_PATH.unshift( "../factbook-codes/lib" )
2
+ $LOAD_PATH.unshift( "../factbook-fields/lib" )
3
+
1
4
  ## minitest setup
2
5
  require 'minitest/autorun'
3
6
 
data/test/test_counter.rb CHANGED
@@ -8,19 +8,22 @@ require 'helper'
8
8
  class TestCounter < MiniTest::Test
9
9
 
10
10
  def read_test_page( code )
11
- html = File.read( "#{Factbook.root}/test/data/src/#{code}.html" )
12
- page = Factbook::Page.new( code, html: html )
11
+ path = "#{Factbook::Module::Readers.root}/../testdata/json/#{code}.json"
12
+ page = Factbook::Page.read_json( path )
13
+ page
13
14
  end
14
15
 
16
+
15
17
  def test_counter
16
- c = Factbook::Counter.new
18
+ counter = Factbook::Counter.new
17
19
 
18
- codes = %w(au be)
20
+ codes = ['au', 'be']
19
21
  codes.each do |code|
20
- c.count( read_test_page( code )) # use builtin test page (do NOT fetch via internet)
22
+ page = read_test_page( code )
23
+ counter.count( code, page ) # use builtin test page (do NOT fetch via internet)
21
24
  end
22
25
 
23
- h = c.data
26
+ h = counter.data
24
27
  pp h
25
28
 
26
29
  assert true ## assume everything ok if we get here
@@ -0,0 +1,27 @@
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_download.rb
4
+
5
+
6
+ require 'helper'
7
+
8
+
9
+ class TestDownload < MiniTest::Test
10
+
11
+ def test_pages
12
+
13
+ ['au','be'].each do |code|
14
+
15
+ page = Factbook::Page.download( code, cache: true )
16
+
17
+ File.open( "./tmp/#{code}.debug.json", 'w:utf-8' ) do |f|
18
+ f.write JSON.pretty_generate( page.to_h )
19
+ end
20
+ end
21
+
22
+ assert true ## assume everthing ok
23
+ end
24
+
25
+
26
+ end # class TestDownload
27
+
data/test/test_fields.rb CHANGED
@@ -8,43 +8,60 @@ require 'helper'
8
8
  class TestFields < MiniTest::Test
9
9
 
10
10
  def read_test_page( code )
11
- html = File.read( "#{Factbook.root}/test/data/src/#{code}.html" )
12
- page = Factbook::Page.new( code, html: html )
11
+ path = "#{Factbook::Module::Readers.root}/../testdata/json/#{code}.json"
12
+ page = Factbook::Page.read_json( path )
13
13
  page
14
14
  end
15
15
 
16
- def test_fields_full
17
- ## Factbook::Page.new( 'au', fields: 'full' )
18
- page = read_test_page( 'au' ) # use builtin test page (do NOT fetch via internet)
19
16
 
20
- assert_equal '-1.1% of GDP (2015 est.)', page['Economy']['Budget surplus (+) or deficit (-)']['text']
21
- assert_equal '0.7%', page['Economy']['Labor force - by occupation']['agriculture']['text']
17
+ def test_fields_au
18
+ page = read_test_page( 'au' ) # note: use builtin test page (do NOT fetch via internet)
22
19
 
23
- assert_equal 'Enns, Krems, Linz, Vienna (Danube)', page['Transportation']['Ports and terminals']['river port(s)']['text']
24
- end
25
-
26
- def fix_xxx_test_fields_full_w_header
27
- page = Factbook::OldPage.new( 'au', header: true, fields: 'full' )
28
- page.html = read_test_page( 'au' ) # use builtin test page (do NOT fetch via internet)
29
-
30
- assert_equal 'au', page['Header']['code']
31
- assert_equal "factbook/#{Factbook::VERSION}", page['Header']['generator']
20
+ assert_equal '-0.7% (of GDP) (2017 est.)',
21
+ page['Economy']['Budget surplus (+) or deficit (-)']['text']
22
+ assert_equal '0.7%',
23
+ page['Economy']['Labor force - by occupation']['agriculture']['text']
32
24
 
33
- assert_equal '-2.4% of GDP (2014 est.)', page['Economy']['Budget surplus (+) or deficit (-)']['text']
34
- assert_equal '5.5%', page['Economy']['Labor force - by occupation']['agriculture']
35
-
36
- assert_equal 'Enns, Krems, Linz, Vienna (Danube)', page['Transportation']['Ports and terminals']['river port(s)']
25
+ assert_equal 'Enns, Krems, Linz, Vienna (Danube)',
26
+ page['Transportation']['Ports and terminals']['river port(s)']['text']
37
27
  end
38
28
 
39
- def fix_xxx_test_fields_std
40
- page = Factbook::OldPage.new( 'au' )
41
- page.html = read_test_page( 'au' ) # use builtin test page (do NOT fetch via internet)
42
-
43
- assert_equal '-2.4% of GDP (2014 est.)', page['econ']['budget_surplus_or_deficit']['text']
44
- assert_equal '5.5%', page['econ']['labor_force_by_occupation']['agriculture']
45
29
 
46
- assert_equal 'Enns, Krems, Linz, Vienna (Danube)', page['trans']['ports_and_terminals']['river_ports']
30
+ def strip_tags( text )
31
+ ## simple quick and dirty helper
32
+ text = text.gsub( '<p>', '' )
33
+ text = text.gsub( '</p>', '' )
34
+ text = text.gsub( '<strong>', '' )
35
+ text = text.gsub( '</strong>', '' )
36
+ text
47
37
  end
48
38
 
39
+ def test_fields_br
40
+ ## check fields from readme
41
+ page = read_test_page( 'br' ) # note: use builtin test page (do NOT fetch via internet)
42
+
43
+ assert strip_tags( page['Introduction']['Background']['text'] ).start_with?(
44
+ 'Following more than three centuries' )
45
+ assert_equal '8,515,770 sq km',
46
+ page['Geography']['Area']['total']['text']
47
+ assert_equal '8,358,140 sq km',
48
+ page['Geography']['Area']['land']['text']
49
+ assert_equal '157,630 sq km',
50
+ page['Geography']['Area']['water']['text']
51
+ assert strip_tags( page['Geography']['Area']['note'] ).start_with?(
52
+ 'note: includes Arquipelago de Fernando de Noronha, Atol das Rocas,' )
53
+ assert_equal 'slightly smaller than the US',
54
+ page['Geography']['Area - comparative']['text']
55
+ assert_equal 'mostly tropical, but temperate in south',
56
+ page['Geography']['Climate']['text']
57
+ assert page['Geography']['Terrain']['text'].start_with?(
58
+ 'mostly flat to rolling lowlands in north;' )
59
+ assert_equal 'Atlantic Ocean 0 m',
60
+ page['Geography']['Elevation']['lowest point']['text']
61
+ assert_equal 'Pico da Neblina 2,994 m',
62
+ page['Geography']['Elevation']['highest point']['text']
63
+ assert page['Geography']['Natural resources']['text'].start_with?(
64
+ 'alumina, bauxite, beryllium, gold, iron ore, manganese, nickel,' )
65
+ end
49
66
 
50
67
  end # class TestFields
data/test/test_json.rb CHANGED
@@ -15,7 +15,7 @@ class TestJson < MiniTest::Test
15
15
  codes = [ 'au',
16
16
  'ag',
17
17
  'be',
18
- #'br',
18
+ 'br',
19
19
  #'mx',
20
20
  #'ls',
21
21
  #'vt',
@@ -25,10 +25,10 @@ class TestJson < MiniTest::Test
25
25
 
26
26
  codes.each do |code|
27
27
 
28
- html = File.read( "#{Factbook.root}/test/data/src/#{code}.html" )
29
- page = Factbook::Page.new( code, html: html )
28
+ path = "#{Factbook::Module::Readers.root}/../testdata/json/#{code}.json"
29
+ page = Factbook::Page.read_json( path )
30
30
 
31
- h = page.data
31
+ h = page.to_h
32
32
  pp h
33
33
 
34
34
  ### save to json
data/test/test_page.rb CHANGED
@@ -9,11 +9,11 @@ require 'helper'
9
9
  class TestPage < MiniTest::Test
10
10
 
11
11
 
12
- def test_sects
12
+ def test_pages
13
13
  pages = [
14
- [ 'au', 10 ],
15
- [ 'be', 10 ],
16
- # [ 'br', 10 ],
14
+ [ 'au', 11 ],
15
+ [ 'be', 11 ],
16
+ [ 'br', 10 ],
17
17
  # [ 'ee', 10 ],
18
18
  # [ 'mx', 10 ],
19
19
  # [ 'xx', 10 ],
@@ -23,12 +23,12 @@ class TestPage < MiniTest::Test
23
23
 
24
24
  pages.each do |rec|
25
25
  code = rec[0]
26
- sects_size = rec[1]
26
+ size = rec[1]
27
27
 
28
- html = File.read( "#{Factbook.root}/test/data/src/#{code}.html" )
29
- page = Factbook::Page.new( code, html: html )
28
+ path = "#{Factbook::Module::Readers.root}/../testdata/json/#{code}.json"
29
+ page = Factbook::Page.read_json( path )
30
30
 
31
- assert_equal sects_size, page.sects.size
31
+ assert_equal size, page.size
32
32
  end
33
33
  end
34
34
 
@@ -0,0 +1,15 @@
1
+ ###
2
+ # to run use
3
+ # ruby -I ./lib -I ./test test/test_version.rb
4
+
5
+ require 'helper'
6
+
7
+
8
+ class TestVersion < MiniTest::Test
9
+
10
+ def test_version
11
+ pp Factbook::Module::Readers.root
12
+ pp Factbook::Module::Readers.banner
13
+ end
14
+
15
+ end # class TestVersion
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factbook-readers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-27 00:00:00.000000000 Z
11
+ date: 2021-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: logutils
14
+ name: factbook-codes
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: csvreader
28
+ name: factbook-fields
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: nokogiri
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rdoc
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -114,47 +100,25 @@ files:
114
100
  - Manifest.txt
115
101
  - README.md
116
102
  - Rakefile
117
- - data/categories.csv
118
- - data/codes.csv
119
- - data/codesxref.csv
120
- - data/comparisons.csv
121
103
  - lib/factbook-readers.rb
122
- - lib/factbook-readers/builder.rb
123
- - lib/factbook-readers/builder_item.rb
124
- - lib/factbook-readers/builder_json.rb
125
- - lib/factbook-readers/codes.rb
126
- - lib/factbook-readers/comparisons.rb
104
+ - lib/factbook-readers/convert.rb
127
105
  - lib/factbook-readers/counter.rb
128
- - lib/factbook-readers/normalize.rb
129
106
  - lib/factbook-readers/page.rb
130
107
  - lib/factbook-readers/page_info.rb
131
- - lib/factbook-readers/reader_json.rb
132
- - lib/factbook-readers/sanitizer.rb
133
- - lib/factbook-readers/sect.rb
134
- - lib/factbook-readers/subsect.rb
135
- - lib/factbook-readers/table.rb
136
- - lib/factbook-readers/utils.rb
137
- - lib/factbook-readers/utils_info.rb
138
108
  - lib/factbook-readers/version.rb
139
109
  - lib/factbook/readers.rb
140
110
  - test/helper.rb
141
- - test/test_builder.rb
142
- - test/test_codes.rb
143
- - test/test_comparisons.rb
144
111
  - test/test_counter.rb
112
+ - test/test_download.rb
145
113
  - test/test_fields.rb
146
- - test/test_item_builder.rb
147
114
  - test/test_json.rb
148
- - test/test_json_builder.rb
149
- - test/test_normalize.rb
150
115
  - test/test_page.rb
151
- - test/test_sanitizer.rb
152
- - test/test_sanitizer_regex.rb
116
+ - test/test_version.rb
153
117
  homepage: https://github.com/factbook/factbook
154
118
  licenses:
155
119
  - Public Domain
156
120
  metadata: {}
157
- post_install_message:
121
+ post_install_message:
158
122
  rdoc_options:
159
123
  - "--main"
160
124
  - README.md
@@ -171,9 +135,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
135
  - !ruby/object:Gem::Version
172
136
  version: '0'
173
137
  requirements: []
174
- rubyforge_project:
175
- rubygems_version: 2.5.2
176
- signing_key:
138
+ rubygems_version: 3.1.4
139
+ signing_key:
177
140
  specification_version: 4
178
141
  summary: factbook-readers - turn thee world factbook country profile pages into open
179
142
  structured data e.g JSON
data/data/categories.csv DELETED
@@ -1,164 +0,0 @@
1
- Num,Category,Name,Notes
2
- ,Introduction,Background,
3
- ,Geography,Location,
4
- ,Geography,Geographic coordinates,
5
- ,Geography,Map references,
6
- ,Geography,Area,
7
- ,Geography,Area - comparative,
8
- ,Geography,Land boundaries,
9
- ,Geography,Coastline,
10
- ,Geography,Maritime claims,
11
- ,Geography,Climate,
12
- ,Geography,Terrain,
13
- ,Geography,Elevation extremes,
14
- ,Geography,Natural resources,
15
- ,Geography,Land use,
16
- ,Geography,Irrigated land,
17
- ,Geography,Total renewable water resources,
18
- ,Geography,Freshwater withdrawal (domestic/industrial/agricultural),
19
- ,Geography,Natural hazards,
20
- ,Geography,Environment - current issues,
21
- ,Geography,Environment - international agreements,
22
- ,Geography,Geography - note,
23
- ,People and Society,Nationality,
24
- ,People and Society,Ethnic groups,
25
- ,People and Society,Languages,
26
- ,People and Society,Religions,
27
- ,People and Society,Population,
28
- ,People and Society,Age structure,
29
- ,People and Society,Dependency ratios,
30
- ,People and Society,Median age,
31
- ,People and Society,Population growth rate,
32
- ,People and Society,Birth rate,
33
- ,People and Society,Death rate,
34
- ,People and Society,Net migration rate,
35
- ,People and Society,Urbanization,
36
- ,People and Society,Major urban areas - population,
37
- ,People and Society,Sex ratio,
38
- ,People and Society,Infant mortality rate,
39
- ,People and Society,Life expectancy at birth,
40
- ,People and Society,Total fertility rate,
41
- ,People and Society,Contraceptive prevalence rate,
42
- ,People and Society,Health expenditures,
43
- ,People and Society,Physicians density,
44
- ,People and Society,Hospital bed density,
45
- ,People and Society,Drinking water source,
46
- ,People and Society,Sanitation facility access,
47
- ,People and Society,HIV/AIDS - adult prevalence rate,
48
- ,People and Society,HIV/AIDS - people living with HIV/AIDS,
49
- ,People and Society,HIV/AIDS - deaths,
50
- ,People and Society,Obesity - adult prevalence rate,
51
- ,People and Society,Education expenditures,
52
- ,People and Society,School life expectancy (primary to tertiary education),
53
- ,People and Society,"Unemployment, youth ages 15-24",
54
- ,Government,Country name,
55
- ,Government,Government type,
56
- ,Government,Capital,
57
- ,Government,Administrative divisions,
58
- ,Government,Independence,
59
- ,Government,National holiday,
60
- ,Government,Constitution,
61
- ,Government,Legal system,
62
- ,Government,International law organization participation,
63
- ,Government,Suffrage,
64
- ,Government,Executive branch,
65
- ,Government,Legislative branch,
66
- ,Government,Judicial branch,
67
- ,Government,Political parties and leaders,
68
- ,Government,Political pressure groups and leaders,
69
- ,Government,International organization participation,
70
- ,Government,Diplomatic representation in the US,
71
- ,Government,Diplomatic representation from the US,
72
- ,Government,Flag description,
73
- ,Government,National symbol(s),
74
- ,Government,National anthem,
75
- ,Economy,Economy - overview,
76
- ,Economy,GDP (purchasing power parity),
77
- ,Economy,GDP (official exchange rate),
78
- ,Economy,GDP - real growth rate,
79
- ,Economy,GDP - per capita (PPP),
80
- ,Economy,Gross national saving,
81
- ,Economy,"GDP - composition, by end use",
82
- ,Economy,"GDP - composition, by sector of origin",
83
- ,Economy,Agriculture - products,
84
- ,Economy,Industries,
85
- ,Economy,Industrial production growth rate,
86
- ,Economy,Labor force,
87
- ,Economy,Labor force - by occupation,
88
- ,Economy,Unemployment rate,
89
- ,Economy,Population below poverty line,
90
- ,Economy,Household income or consumption by percentage share,
91
- ,Economy,Distribution of family income - Gini index,
92
- ,Economy,Budget,
93
- ,Economy,Taxes and other revenues,
94
- ,Economy,Budget surplus (+) or deficit (-),
95
- ,Economy,Public debt,
96
- ,Economy,Fiscal year,
97
- ,Economy,Inflation rate (consumer prices),
98
- ,Economy,Commercial bank prime lending rate,
99
- ,Economy,Stock of narrow money,
100
- ,Economy,Stock of broad money,
101
- ,Economy,Stock of domestic credit,
102
- ,Economy,Market value of publicly traded shares,
103
- ,Economy,Current account balance,
104
- ,Economy,Exports,
105
- ,Economy,Exports - commodities,
106
- ,Economy,Exports - partners,
107
- ,Economy,Imports,
108
- ,Economy,Imports - commodities,
109
- ,Economy,Imports - partners,
110
- ,Economy,Reserves of foreign exchange and gold,
111
- ,Economy,Debt - external,
112
- ,Economy,Stock of direct foreign investment - at home,
113
- ,Economy,Stock of direct foreign investment - abroad,
114
- ,Economy,Exchange rates,
115
- ,Energy,Electricity - production,
116
- ,Energy,Electricity - consumption,
117
- ,Energy,Electricity - exports,
118
- ,Energy,Electricity - imports,
119
- ,Energy,Electricity - installed generating capacity,
120
- ,Energy,Electricity - from fossil fuels,
121
- ,Energy,Electricity - from nuclear fuels,
122
- ,Energy,Electricity - from hydroelectric plants,
123
- ,Energy,Electricity - from other renewable sources,
124
- ,Energy,Crude oil - production,
125
- ,Energy,Crude oil - exports,
126
- ,Energy,Crude oil - imports,
127
- ,Energy,Crude oil - proved reserves,
128
- ,Energy,Refined petroleum products - production,
129
- ,Energy,Refined petroleum products - consumption,
130
- ,Energy,Refined petroleum products - exports,
131
- ,Energy,Refined petroleum products - imports,
132
- ,Energy,Natural gas - production,
133
- ,Energy,Natural gas - consumption,
134
- ,Energy,Natural gas - exports,
135
- ,Energy,Natural gas - imports,
136
- ,Energy,Natural gas - proved reserves,
137
- ,Energy,Carbon dioxide emissions from consumption of energy,
138
- ,Communications,Telephones - fixed lines,
139
- ,Communications,Telephones - mobile cellular,
140
- ,Communications,Telephone system,
141
- ,Communications,Broadcast media,
142
- ,Communications,Radio broadcast stations,
143
- ,Communications,Television broadcast stations,
144
- ,Communications,Internet country code,
145
- ,Communications,Internet users,
146
- ,Transportation,Airports,
147
- ,Transportation,Airports - with paved runways,
148
- ,Transportation,Airports - with unpaved runways,
149
- ,Transportation,Heliports,
150
- ,Transportation,Pipelines,
151
- ,Transportation,Railways,
152
- ,Transportation,Roadways,
153
- ,Transportation,Waterways,
154
- ,Transportation,Merchant marine,
155
- ,Transportation,Ports and terminals,
156
- ,Military,Military branches,
157
- ,Military,Military service age and obligation,
158
- ,Military,Manpower available for military service,
159
- ,Military,Manpower fit for military service,
160
- ,Military,Manpower reaching militarily significant age annually,
161
- ,Military,Military expenditures,
162
- ,Transnational Issues,Disputes - international,
163
- ,Transnational Issues,Refugees and internally displaced persons,
164
- ,Transnational Issues,Illicit drugs,