factbook-codes 0.1.0 → 0.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: 647f0b94f4e8dd97a64d74a7071041f2626832577fbac29d4095ec6ea10f063a
4
- data.tar.gz: 748f86b88eb922e964cb4b1bdae2797e8162a20f4a236a388312876aa84c5429
3
+ metadata.gz: f315e31562bd310f9499a67bbb535c582b8bc8813e95c01ab2a7583fd5ef5c78
4
+ data.tar.gz: 9119488f7305b7f702125b5a4d1a95bfbb63feb8f9bf474a3d7be286ac2fd308
5
5
  SHA512:
6
- metadata.gz: 6a616c078ef9ddeffc7bd411b1ab0660c6efcfb2ad7a18472a242862b67074ded0431ede70f9e0d1e02533493f1c2a2d912574c5f1ac6efa91582b0b0911c43b
7
- data.tar.gz: 3c3b7d498263fe6f0ed74dbe62c54a0117b559200881b1ef4060a276561f7f85a2822c7c6dbb9319a53cc1c83888898416a75dd83f5e43d44bd7422262a4e7e4
6
+ metadata.gz: bef206fa344cfdced6555ec4e099dd0a3dbd6d96c5b173f7ea2affa02877e149233e8d716209643c2e28fb931538dcee9c54861c9411d6cddba74fbbeb467678
7
+ data.tar.gz: b9934611ff2d0bd73863cf80484795d9f282c112c695a073f5f87856ec14a4d2875189c28f1529c9f8c13e48cc6e3dc7109301c77757b1486963755304f1de3d
data/README.md CHANGED
@@ -26,22 +26,22 @@ end
26
26
  resulting in:
27
27
 
28
28
  ```
29
- #<struct Factbook::Codes::Code
29
+ #<Factbook::Codes::Code
30
30
  code ="af",
31
31
  name ="Afghanistan",
32
32
  category="Countries",
33
33
  region ="South Asia">
34
- #<struct Factbook::Codes::Code
34
+ #<Factbook::Codes::Code
35
35
  code ="al",
36
36
  name ="Albania",
37
37
  category="Countries",
38
38
  region ="Europe">
39
- #<struct Factbook::Codes::Code
39
+ #<Factbook::Codes::Code
40
40
  code ="ag",
41
41
  name ="Algeria",
42
42
  category="Countries",
43
43
  region ="Africa">
44
- #<struct Factbook::Codes::Code
44
+ #<Factbook::Codes::Code
45
45
  code ="an",
46
46
  name ="Andorra",
47
47
  category="Countries",
@@ -55,7 +55,7 @@ and/or by region e.g. Africa, Europe, South Asia, Central America and Caribbean,
55
55
 
56
56
  ```ruby
57
57
 
58
- assert_equal 261, Factbook.codes.size
58
+ assert_equal 260, Factbook.codes.size
59
59
 
60
60
  ## categories
61
61
  assert_equal 195, Factbook.codes.countries.size
@@ -63,7 +63,7 @@ assert_equal 52, Factbook.codes.dependencies.size
63
63
  assert_equal 5, Factbook.codes.oceans.size
64
64
  assert_equal 1, Factbook.codes.world.size
65
65
  assert_equal 2, Factbook.codes.others.size
66
- assert_equal 6, Factbook.codes.misc.size
66
+ assert_equal 5, Factbook.codes.misc.size
67
67
 
68
68
  ## regions
69
69
  assert_equal 55, Factbook.codes.europe.size
@@ -71,7 +71,7 @@ assert_equal 9, Factbook.codes.south_asia.size
71
71
  assert_equal 6, Factbook.codes.central_asia.size
72
72
  assert_equal 22, Factbook.codes.east_n_souteast_asia.size
73
73
  assert_equal 19, Factbook.codes.middle_east.size
74
- assert_equal 56, Factbook.codes.africa.size
74
+ assert_equal 55, Factbook.codes.africa.size
75
75
  assert_equal 7, Factbook.codes.north_america.size
76
76
  assert_equal 33, Factbook.codes.central_america_n_caribbean.size
77
77
  assert_equal 14, Factbook.codes.south_america.size
@@ -90,6 +90,52 @@ See [`data/codes.csv`](data/codes.csv) for the built-in listing of all codes wit
90
90
 
91
91
 
92
92
 
93
+ ## Frequently Asked Questions (F.A.Q.s) & Answers
94
+
95
+ Q: The World Factbook front-page
96
+ says "for 266 world entities" - but
97
+ the `Factbook.codes.size` is only 260 (thus, 6 entities short)?
98
+ What's the story?
99
+
100
+ > The World Factbook provides basic intelligence on the history,
101
+ > people, government, economy, energy, geography, communications,
102
+ > transportation, military, terrorism, and transnational issues
103
+ > for 266 world entities.
104
+ >
105
+ > (Source: [`cia.gov/the-world-factbook`](https://www.cia.gov/the-world-factbook/))
106
+
107
+
108
+ A: Since March 2006
109
+ the United States Pacific Island Wildlife Refuges (`um`)
110
+ country profile consolidates
111
+ seven profiles into a single new one
112
+ (but keeps entities count as before):
113
+
114
+ - Baker Island (`fq`)
115
+ - Howland Island (`hq`)
116
+ - Jarvis Island (`dq`)
117
+ - Johnston Atoll (`jq`)
118
+ - Kingman Reef (`kq`)
119
+ - Midway Islands (`mq`)
120
+ - Palmyra Atoll (`lq`)
121
+
122
+
123
+
124
+ Q: What happened to the Western Sahara (`wi`) country profile?
125
+
126
+ In December 2020 the World Factbook dropped coverage of the Western Sahara (`wi`). Why?
127
+ In a deal with Morocco the United States recognizes the claim
128
+ of Marocco over the Western Sahara and in return
129
+ Morocco starts official diplomatic relations with Israel.
130
+
131
+ ```
132
+ Code, Name, Category, Region
133
+ wi, Western Sahara, Miscellaneous, Africa
134
+ ```
135
+
136
+
137
+
138
+
93
139
  ## Install
94
140
 
95
141
  Use
data/data/codes.csv CHANGED
@@ -253,7 +253,6 @@ gz,Gaza Strip,Miscellaneous,Middle East
253
253
  pf,Paracel Islands,Miscellaneous,East & Southeast Asia
254
254
  pg,Spratly Islands,Miscellaneous,East & Southeast Asia
255
255
  we,West Bank,Miscellaneous,Middle East
256
- wi,Western Sahara,Miscellaneous,Africa
257
256
  xq,Arctic Ocean,Oceans,Oceans
258
257
  zh,Atlantic Ocean,Oceans,Oceans
259
258
  xo,Indian Ocean,Oceans,Oceans
@@ -9,6 +9,12 @@ require 'csvreader'
9
9
  # our own code
10
10
  require 'factbook-codes/version' # let it always go first
11
11
 
12
+
13
+ module SportDb
14
+ Logging = LogUtils::Logging ## logging machinery shortcut; use LogUtils for now
15
+ end
16
+
17
+
12
18
  require 'factbook-codes/codes'
13
19
 
14
20
 
@@ -17,9 +23,21 @@ module Factbook
17
23
  ## note: load on demand only builtin codes, comparisons, etc.
18
24
  ## for now
19
25
  def self.codes
20
- @@codes ||= Codes.read_csv( "#{Factbook::Module::Codes.root}/data/codes.csv" );
26
+ @@codes ||= Codes.read_csv( "#{Factbook::Module::Codes.root}/data/codes.csv" );
27
+ end
28
+
29
+ ## let's put test configuration in its own namespace / module
30
+ class Test ## todo/check: works with module too? use a module - why? why not?
31
+ ####
32
+ # todo/fix: find a better way to configure shared test datasets - why? why not?
33
+ # note: use one-up (..) directory for now as default - why? why not?
34
+ def self.data_dir() @data_dir ||= '../testdata'; end
35
+ def self.data_dir=( path ) @data_dir = path; end
21
36
  end
22
37
  end # module Factbook
23
38
 
24
39
 
40
+
41
+
42
+
25
43
  puts Factbook::Module::Codes.banner
@@ -6,13 +6,33 @@
6
6
 
7
7
  module Factbook
8
8
 
9
+ ## check: move region_to_slug into a utility module / helper
10
+ ## for (re)use - how, why? why not??
11
+ def self.region_to_slug( text )
12
+ ## change and => n
13
+ ## change & => n
14
+ ## change all spaces to => -
15
+ ## e.g. East & Southeast Asia => east-n-southeast-asia
16
+ ## Central America and Caribbean => central-america-n-caribbean
17
+ text.downcase.gsub('and', 'n').gsub( '&', 'n' ).gsub( ' ', '-' )
18
+ end
19
+
9
20
  class Codes
21
+ class Code ## nested class
22
+ attr_accessor :code, ## todo: add notes (country affiliation) - why? why not??
23
+ :name,
24
+ :category, ## e.g. Countries, Other, Oceans, World, Dependencies, etc.
25
+ :region ## e.g. Europe, Oceans, etc.
26
+
27
+ ## todo/check: add aliases e.g. - why? why not?
28
+ ## country_code => code
29
+ ## country_name => name
30
+ ## region_name => region
31
+
32
+ def region_slug() Factbook.region_to_slug( @region ); end
33
+ end # (nested) class Code
34
+
10
35
 
11
- Code = Struct.new( :code, ## todo: add notes (country affiliation) - why? why not??
12
- :name,
13
- :category, ## e.g. Countries, Other, Oceans, World, Dependencies, etc.
14
- :region, ## e.g. Europe, Oceans, etc.
15
- )
16
36
 
17
37
  def self.read_csv( path )
18
38
  ###
@@ -27,20 +47,18 @@ class Codes
27
47
 
28
48
  rows = CsvHash.read( path )
29
49
 
30
- pp rows
50
+ ## pp rows
31
51
 
32
52
  recs = []
33
53
  rows.each do |row|
34
- pp row
54
+ ## pp row
35
55
  rec = Code.new
36
56
  rec.code = row['Code'].strip ## remove leading n trailing whitespaces
37
57
  rec.name = row['Name'].strip
58
+ rec.category = row['Category'].strip
59
+ rec.region = row['Region'].strip
38
60
 
39
- ## note: for now category and region are optional
40
- rec.category = row['Category'].strip if row['Category'] && row['Category'].size > 0
41
- rec.region = row['Region'].strip if row['Region'] && row['Region'].size > 0
42
-
43
- pp rec
61
+ ## pp rec
44
62
  recs << rec
45
63
  end
46
64
 
@@ -61,6 +79,8 @@ class Codes
61
79
  end
62
80
 
63
81
 
82
+ def [](key) @codes[ key ]; end
83
+
64
84
  def to_a
65
85
  @codes.collect {|code| code.code } ## return array of codes
66
86
  end
@@ -4,7 +4,7 @@ module Module
4
4
  module Codes
5
5
  MAJOR = 0
6
6
  MINOR = 1
7
- PATCH = 0
7
+ PATCH = 1
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
data/test/test_codes.rb CHANGED
@@ -10,8 +10,8 @@ class TestCodes < MiniTest::Test
10
10
 
11
11
 
12
12
  def test_codes
13
- assert_equal 261, Factbook.codes.size
14
- assert_equal 261, Factbook.codes.to_a.size
13
+ assert_equal 260, Factbook.codes.size
14
+ assert_equal 260, Factbook.codes.to_a.size
15
15
 
16
16
 
17
17
  assert_equal 195, Factbook.codes.countries.size
@@ -19,7 +19,7 @@ class TestCodes < MiniTest::Test
19
19
  assert_equal 5, Factbook.codes.oceans.size
20
20
  assert_equal 1, Factbook.codes.world.size
21
21
  assert_equal 2, Factbook.codes.others.size
22
- assert_equal 6, Factbook.codes.misc.size
22
+ assert_equal 5, Factbook.codes.misc.size
23
23
 
24
24
  assert_equal 8, Factbook.codes.dependencies_us.size
25
25
 
@@ -29,7 +29,7 @@ class TestCodes < MiniTest::Test
29
29
  assert_equal 6, Factbook.codes.central_asia.size
30
30
  assert_equal 22, Factbook.codes.east_n_souteast_asia.size
31
31
  assert_equal 19, Factbook.codes.middle_east.size
32
- assert_equal 56, Factbook.codes.africa.size
32
+ assert_equal 55, Factbook.codes.africa.size
33
33
  assert_equal 7, Factbook.codes.north_america.size
34
34
  assert_equal 33, Factbook.codes.central_america_n_caribbean.size
35
35
  assert_equal 14, Factbook.codes.south_america.size
@@ -44,14 +44,14 @@ class TestCodes < MiniTest::Test
44
44
  assert_equal Factbook.codes.category('World').size, Factbook.codes.region('World').size
45
45
 
46
46
 
47
- assert_equal 261, Factbook.codes.countries.size +
47
+ assert_equal 260, Factbook.codes.countries.size +
48
48
  Factbook.codes.others.size +
49
49
  Factbook.codes.dependencies.size +
50
50
  Factbook.codes.misc.size +
51
51
  Factbook.codes.oceans.size +
52
52
  Factbook.codes.world.size
53
53
 
54
- assert_equal 261, Factbook.codes.europe.size +
54
+ assert_equal 260, Factbook.codes.europe.size +
55
55
  Factbook.codes.south_asia.size +
56
56
  Factbook.codes.central_asia.size +
57
57
  Factbook.codes.east_n_souteast_asia.size +
@@ -64,9 +64,20 @@ class TestCodes < MiniTest::Test
64
64
  Factbook.codes.antartica.size +
65
65
  Factbook.codes.region('Oceans').size +
66
66
  Factbook.codes.region('World').size
67
-
68
67
  end
69
68
 
70
- end # class TestCodes
69
+ def test_region_slug
70
+ bx = Factbook.codes[24]
71
+ #=> bx,Brunei,Countries,East & Southeast Asia
72
+
73
+ assert_equal 'East & Southeast Asia', bx.region
74
+ assert_equal 'east-n-southeast-asia', bx.region_slug
71
75
 
76
+ ac = Factbook.codes[5]
77
+ #=> ac,Antigua and Barbuda,Countries,Central America and Caribbean
78
+
79
+ assert_equal 'Central America and Caribbean', ac.region
80
+ assert_equal 'central-america-n-caribbean', ac.region_slug
81
+ end
82
+ end # class TestCodes
72
83
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factbook-codes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-03 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
14
  name: logutils