factbook 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3375e7a8abcb8c6a1fea38aa05f5246cd7bdf22f
4
- data.tar.gz: c2a3c6145dfc19bc71721e9114a33a22207287ec
3
+ metadata.gz: 9715102d9e477fecc63d0b77e0760c134c349edf
4
+ data.tar.gz: 26f7ec5f6f517013e96f477682d92b61bfcd3103
5
5
  SHA512:
6
- metadata.gz: c8a3ad384249824f9e7a13b0c2e45839cc868b0f1bd2a9473257a3420b7a57430893c09573b54de74d4458bff1bded7b244f3c9f1d522df96d2fd5452c48a5e7
7
- data.tar.gz: 357ccd90b6ecefc969309fd92a3b4e223beebd743bb27dcd13d1607496054c97d7b70995d737a4941288ce248289e02d15189b9e925cbd808801862b77dfcbbf
6
+ metadata.gz: 843926700c08da16bb1a7555ed321d187e08cc8403c2855e2c240668462b24d2127622f5cf8d980ca23804cca9a8ef982e910554fab90559d6c776ff97b42217
7
+ data.tar.gz: 31cf12c0d3e063b84f5be8794b1dcc9ad33ef6bc075bd478a10781c5408feef1766fc83ec6391603eee9eade7ea7d1e1d098ca27c63c90a7364866165d171118
data/Manifest.txt CHANGED
@@ -2,7 +2,9 @@ HISTORY.md
2
2
  Manifest.txt
3
3
  README.md
4
4
  Rakefile
5
+ data/categories.csv
5
6
  data/codes.csv
7
+ data/codesxref.csv
6
8
  data/comparisons.csv
7
9
  lib/factbook.rb
8
10
  lib/factbook/builder.rb
@@ -17,6 +19,8 @@ lib/factbook/table.rb
17
19
  lib/factbook/utils.rb
18
20
  lib/factbook/utils_info.rb
19
21
  lib/factbook/version.rb
22
+ script/testbr.rb
23
+ script/testcodes.rb
20
24
  test/data/au.html
21
25
  test/data/au.yml
22
26
  test/data/be.html
data/README.md CHANGED
@@ -22,80 +22,127 @@ offers free country profiles in the public domain (that is, no copyright(s), no
22
22
  ### Get country profile page as a hash (that is, structured data e.g. nested key/values)
23
23
 
24
24
  ```ruby
25
-
26
25
  page = Factbook::Page.new( 'br' ) # br is the country code for Brazil
27
26
  pp page.data # pretty print hash
28
-
29
27
  ```
30
28
 
31
- ### Save to disk as JSON
29
+ resulting in:
32
30
 
33
31
  ```ruby
34
-
35
- page = Factbook::Page.new( 'br' )
36
- File.open( 'br.json', 'w') do |f|
37
- f.write page.to_json( pretty: true )
38
- end
39
-
32
+ {"Introduction"=>
33
+ {"Background"=>
34
+ {"text"=>
35
+ "Following more than three centuries under Portuguese rule,
36
+ Brazil gained its independence in 1822, ..."}},
37
+ "Geography"=>
38
+ {"Location"=>{"text"=>"Eastern South America, bordering the Atlantic Ocean"},
39
+ "Geographic coordinates"=>{"text"=>"10 00 S, 55 00 W"},
40
+ "Map references"=>{"text"=>"South America"},
41
+ "Area"=>
42
+ {"total"=>{"text"=>"8,515,770 sq km"},
43
+ "land"=>{"text"=>"8,358,140 sq km"},
44
+ "water"=>{"text"=>"157,630 sq km"},
45
+ "note"=>
46
+ {"text"=>
47
+ "includes Arquipelago de Fernando de Noronha, Atol das Rocas, ..."}},
48
+ "Area - comparative"=>
49
+ {"text"=>"slightly smaller than the US"},
50
+ "Land boundaries"=>
51
+ {"total"=>{"text"=>"16,145 km"},
52
+ "border countries (10)"=>
53
+ {"text"=>
54
+ "Argentina 1,263 km, Bolivia 3,403 km, Colombia 1,790 km,
55
+ French Guiana 649 km, Guyana 1,308 km, Paraguay 1,371 km, Peru 2,659 km,
56
+ Suriname 515 km, Uruguay 1,050 km, Venezuela 2,137 km"}},
57
+ "Climate"=>{"text"=>"mostly tropical, but temperate in south"},
58
+ "Elevation extremes"=>
59
+ {"lowest point"=>{"text"=>"Atlantic Ocean 0 m"},
60
+ "highest point"=>{"text"=>"Pico da Neblina 2,994 m"}},
61
+ "Natural resources"=>
62
+ {"text"=>
63
+ "bauxite, gold, iron ore, manganese, nickel, phosphates, ..."},
64
+ ...
40
65
  ```
41
66
 
42
- ### Options - Header, "Long" Category / Field Names
43
67
 
44
- #### Include Header Option - `header: true`
68
+ ### Save to disk as JSON
45
69
 
46
70
  ```ruby
47
- page = Factbook::Page.new( 'br', header: true )
71
+ page = Factbook::Page.new( 'br' )
72
+ File.open( 'br.json', 'w') do |f|
73
+ f.write page.to_json
74
+ end
48
75
  ```
49
76
 
50
- will include a leading header section. Example:
51
-
52
- ```json
53
- {
54
- "Header": {
55
- "code": "au",
56
- "generator": "factbook/0.1.2",
57
- "last_built": "2014-08-24 12:55:39 +0200"
58
- }
59
- ...
60
- }
61
- ```
62
77
 
63
- #### "Long" Category / Field Names Option - `fields: 'long'`
78
+ ### Print all codes
64
79
 
65
80
  ```ruby
66
- page = Factbook::Page.new( 'br', fields: 'long')
81
+ Factbook.codes.each do |code|
82
+ pp code
83
+ end
67
84
  ```
68
85
 
69
- will change the category / field names to the long form (that is, passing through unchanged from the source).
70
- e.g.
86
+ resulting in:
71
87
 
72
88
  ```ruby
73
- page['econ']['budget_surplus_or_deficit']['text']
74
- page['econ']['labor_force_by_occupation']['agriculture']
75
- page['trans']['ports_and_terminals']['river_ports']
89
+ #<struct Factbook::Codes::Code
90
+ code="af",
91
+ name="Afghanistan",
92
+ category="Countries",
93
+ region="South Asia">
94
+ #<struct Factbook::Codes::Code
95
+ code="al",
96
+ name="Albania",
97
+ category="Countries",
98
+ region="Europe">
99
+ #<struct Factbook::Codes::Code
100
+ code="ag",
101
+ name="Algeria",
102
+ category="Countries",
103
+ region="Africa">
104
+ #<struct Factbook::Codes::Code
105
+ code="an",
106
+ name="Andorra",
107
+ category="Countries",
108
+ region="Europe">
109
+ ...
76
110
  ```
77
- becomes
78
111
 
79
- ```ruby
80
- page['Economy']['Budget surplus (+) or deficit (-)']['text']
81
- page['Economy']['Labor force - by occupation']['agriculture']
82
- page['Transportation']['Ports and terminals']['river port(s)']
83
- ```
112
+ Note: You can filter codes by category e.g. Countries, Dependencies, Miscellaneous, Oceans, etc.
113
+ and/or by region e.g. Africa, Europe, South Asia, Central America and Caribbean, etc.
84
114
 
85
- Note: You can - of course - use the options together e.g.
86
115
 
87
116
  ```ruby
88
- page = Factbook::Page.new( 'br', header: true, fields: 'long' )
89
- ```
90
117
 
91
- or
92
-
93
- ```ruby
94
- opts = {
95
- header: true,
96
- fields: 'long'
97
- }
98
- page = Factbook::Page.new( 'br', opts )
118
+ assert_equal 261, Factbook.codes.size
119
+
120
+ ## categories
121
+ assert_equal 195, Factbook.codes.countries.size
122
+ assert_equal 52, Factbook.codes.dependencies.size
123
+ assert_equal 5, Factbook.codes.oceans.size
124
+ assert_equal 1, Factbook.codes.world.size
125
+ assert_equal 2, Factbook.codes.others.size
126
+ assert_equal 6, Factbook.codes.misc.size
127
+
128
+ ## regions
129
+ assert_equal 55, Factbook.codes.europe.size
130
+ assert_equal 9, Factbook.codes.south_asia.size
131
+ assert_equal 6, Factbook.codes.central_asia.size
132
+ assert_equal 22, Factbook.codes.east_n_souteast_asia.size
133
+ assert_equal 19, Factbook.codes.middle_east.size
134
+ assert_equal 56, Factbook.codes.africa.size
135
+ assert_equal 7, Factbook.codes.north_america.size
136
+ assert_equal 33, Factbook.codes.central_america_n_caribbean.size
137
+ assert_equal 14, Factbook.codes.south_america.size
138
+ assert_equal 30, Factbook.codes.australia_oceania.size
139
+ assert_equal 4, Factbook.codes.antartica.size
140
+ assert_equal 5, Factbook.codes.region('Oceans').size
141
+ assert_equal 1, Factbook.codes.region('World').size
142
+
143
+ ## categories + regions
144
+ assert_equal 45, Factbook.codes.countries.europe.size
145
+ ...
99
146
  ```
100
147
 
101
148
 
@@ -0,0 +1,164 @@
1
+ Num,Category,Name,Key
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,
@@ -0,0 +1,280 @@
1
+ Name,GEC,A3,A2,NUM,STANAG,INTERNET
2
+ Afghanistan,AF,AF,AFG,004,AFG,.af
3
+ Akrotiri,AX,-,-,-,-,-
4
+ Albania,AL,AL,ALB,008,ALB,.al
5
+ Algeria,AG,DZ,DZA,012,DZA,.dz
6
+ American Samoa,AQ,AS,ASM,016,ASM,.as
7
+ Andorra,AN,AD,AND,020,AND,.ad
8
+ Angola,AO,AO,AGO,024,AGO,.ao
9
+ Anguilla,AV,AI,AIA,660,AIA,.ai
10
+ Antarctica,AY,AQ,ATA,010,ATA,.aq
11
+ Antigua and Barbuda,AC,AG,ATG,028,ATG,.ag
12
+ Argentina,AR,AR,ARG,032,ARG,.ar
13
+ Armenia,AM,AM,ARM,051,ARM,.am
14
+ Aruba,AA,AW,ABW,533,ABW,.aw
15
+ Ashmore and Cartier Islands,AT,-,-,-,AUS,-
16
+ Australia,AS,AU,AUS,036,AUS,.au
17
+ Austria,AU,AT,AUT,040,AUT,.at
18
+ Azerbaijan,AJ,AZ,AZE,031,AZE,.az
19
+ "Bahamas, The",BF,BS,BHS,044,BHS,.bs
20
+ Bahrain,BA,BH,BHR,048,BHR,.bh
21
+ Baker Island,FQ,-,-,-,UMI,-
22
+ Bangladesh,BG,BD,BGD,050,BGD,.bd
23
+ Barbados,BB,BB,BRB,052,BRB,.bb
24
+ Bassas da India,BS,-,-,-,-,-
25
+ Belarus,BO,BY,BLR,112,BLR,.by
26
+ Belgium,BE,BE,BEL,056,BEL,.be
27
+ Belize,BH,BZ,BLZ,084,BLZ,.bz
28
+ Benin,BN,BJ,BEN,204,BEN,.bj
29
+ Bermuda,BD,BM,BMU,060,BMU,.bm
30
+ Bhutan,BT,BT,BTN,064,BTN,.bt
31
+ Bolivia,BL,BO,BOL,068,BOL,.bo
32
+ Bosnia and Herzegovina,BK,BA,BIH,070,BIH,.ba
33
+ Botswana,BC,BW,BWA,072,BWA,.bw
34
+ Bouvet Island,BV,BV,BVT,074,BVT,.bv
35
+ Brazil,BR,BR,BRA,076,BRA,.br
36
+ British Indian Ocean Territory,IO,IO,IOT,086,IOT,.io
37
+ British Virgin Islands,VI,VG,VGB,092,VGB,.vg
38
+ Brunei,BX,BN,BRN,096,BRN,.bn
39
+ Bulgaria,BU,BG,BGR,100,BGR,.bg
40
+ Burkina Faso,UV,BF,BFA,854,BFA,.bf
41
+ Burma,BM,MM,MMR,104,MMR,.mm
42
+ Burundi,BY,BI,BDI,108,BDI,.bi
43
+ Cabo Verde,CV,CV,CPV,132,CPV,.cv
44
+ Cambodia,CB,KH,KHM,116,KHM,.kh
45
+ Cameroon,CM,CM,CMR,120,CMR,.cm
46
+ Canada,CA,CA,CAN,124,CAN,.ca
47
+ Cayman Islands,CJ,KY,CYM,136,CYM,.ky
48
+ Central African Republic,CT,CF,CAF,140,CAF,.cf
49
+ Chad,CD,TD,TCD,148,TCD,.td
50
+ Chile,CI,CL,CHL,152,CHL,.cl
51
+ China,CH,CN,CHN,156,CHN,.cn
52
+ Christmas Island,KT,CX,CXR,162,CXR,.cx
53
+ Clipperton Island,IP,-,-,-,FYP,-
54
+ Cocos (Keeling) Islands,CK,CC,CCK,166,AUS,.cc
55
+ Colombia,CO,CO,COL,170,COL,.co
56
+ Comoros,CN,KM,COM,174,COM,.km
57
+ "Congo, Democratic Republic of the",CG,CD,COD,180,COD,.cd
58
+ "Congo, Republic of the",CF,CG,COG,178,COG,.cg
59
+ Cook Islands,CW,CK,COK,184,COK,.ck
60
+ Coral Sea Islands,CR,-,-,-,AUS,-
61
+ Costa Rica,CS,CR,CRI,188,CRI,.cr
62
+ Cote d'Ivoire,IV,CI,CIV,384,CIV,.ci
63
+ Croatia,HR,HR,HRV,191,HRV,.hr
64
+ Cuba,CU,CU,CUB,192,CUB,.cu
65
+ Curacao,UC,CW,CUW,531,-,.cw
66
+ Cyprus,CY,CY,CYP,196,CYP,.cy
67
+ Czech Republic,EZ,CZ,CZE,203,CZE,.cz
68
+ Denmark,DA,DK,DNK,208,DNK,.dk
69
+ Dhekelia,DX,-,-,-,-,-
70
+ Djibouti,DJ,DJ,DJI,262,DJI,.dj
71
+ Dominica,DO,DM,DMA,212,DMA,.dm
72
+ Dominican Republic,DR,DO,DOM,214,DOM,.do
73
+ Ecuador,EC,EC,ECU,218,ECU,.ec
74
+ Egypt,EG,EG,EGY,818,EGY,.eg
75
+ El Salvador,ES,SV,SLV,222,SLV,.sv
76
+ Equatorial Guinea,EK,GQ,GNQ,226,GNQ,.gq
77
+ Eritrea,ER,ER,ERI,232,ERI,.er
78
+ Estonia,EN,EE,EST,233,EST,.ee
79
+ Ethiopia,ET,ET,ETH,231,ETH,.et
80
+ Europa Island,EU,-,-,-,-,-
81
+ Falkland Islands (Islas Malvinas),FK,FK,FLK,238,FLK,.fk
82
+ Faroe Islands,FO,FO,FRO,234,FRO,.fo
83
+ Fiji,FJ,FJ,FJI,242,FJI,.fj
84
+ Finland,FI,FI,FIN,246,FIN,.fi
85
+ France,FR,FR,FRA,250,FRA,.fr
86
+ "France, Metropolitan",-,FX,FXX,249,-,.fx
87
+ French Guiana,FG,GF,GUF,254,GUF,.gf
88
+ French Polynesia,FP,PF,PYF,258,PYF,.pf
89
+ French Southern and Antarctic Lands,FS,TF,ATF,260,ATF,.tf
90
+ Gabon,GB,GA,GAB,266,GAB,.ga
91
+ "Gambia, The",GA,GM,GMB,270,GMB,.gm
92
+ Gaza Strip,GZ,PS,PSE,275,PSE,.ps
93
+ Georgia,GG,GE,GEO,268,GEO,.ge
94
+ Germany,GM,DE,DEU,276,DEU,.de
95
+ Ghana,GH,GH,GHA,288,GHA,.gh
96
+ Gibraltar,GI,GI,GIB,292,GIB,.gi
97
+ Glorioso Islands,GO,-,-,-,-,-
98
+ Greece,GR,GR,GRC,300,GRC,.gr
99
+ Greenland,GL,GL,GRL,304,GRL,.gl
100
+ Grenada,GJ,GD,GRD,308,GRD,.gd
101
+ Guadeloupe,GP,GP,GLP,312,GLP,.gp
102
+ Guam,GQ,GU,GUM,316,GUM,.gu
103
+ Guatemala,GT,GT,GTM,320,GTM,.gt
104
+ Guernsey,GK,GG,GGY,831,UK,.gg
105
+ Guinea,GV,GN,GIN,324,GIN,.gn
106
+ Guinea-Bissau,PU,GW,GNB,624,GNB,.gw
107
+ Guyana,GY,GY,GUY,328,GUY,.gy
108
+ Haiti,HA,HT,HTI,332,HTI,.ht
109
+ Heard Island and McDonald Islands,HM,HM,HMD,334,HMD,.hm
110
+ Holy See (Vatican City),VT,VA,VAT,336,VAT,.va
111
+ Honduras,HO,HN,HND,340,HND,.hn
112
+ Hong Kong,HK,HK,HKG,344,HKG,.hk
113
+ Howland Island,HQ,-,-,-,UMI,-
114
+ Hungary,HU,HU,HUN,348,HUN,.hu
115
+ Iceland,IC,IS,ISL,352,ISL,.is
116
+ India,IN,IN,IND,356,IND,.in
117
+ Indonesia,ID,ID,IDN,360,IDN,.id
118
+ Iran,IR,IR,IRN,364,IRN,.ir
119
+ Iraq,IZ,IQ,IRQ,368,IRQ,.iq
120
+ Ireland,EI,IE,IRL,372,IRL,.ie
121
+ Isle of Man,IM,IM,IMN,833,UK,.im
122
+ Israel,IS,IL,ISR,376,ISR,.il
123
+ Italy,IT,IT,ITA,380,ITA,.it
124
+ Jamaica,JM,JM,JAM,388,JAM,.jm
125
+ Jan Mayen,JN,-,-,-,SJM,-
126
+ Japan,JA,JP,JPN,392,JPN,.jp
127
+ Jarvis Island,DQ,-,-,-,UMI,-
128
+ Jersey,JE,JE,JEY,832,UK,.je
129
+ Johnston Atoll,JQ,-,-,-,UMI,-
130
+ Jordan,JO,JO,JOR,400,JOR,.jo
131
+ Juan de Nova Island,JU,-,-,-,-,-
132
+ Kazakhstan,KZ,KZ,KAZ,398,KAZ,.kz
133
+ Kenya,KE,KE,KEN,404,KEN,.ke
134
+ Kingman Reef,KQ,-,-,-,UMI,-
135
+ Kiribati,KR,KI,KIR,296,KIR,.ki
136
+ "Korea, North",KN,KP,PRK,408,PRK,.kp
137
+ "Korea, South",KS,KR,KOR,410,KOR,.kr
138
+ Kosovo,KV,XK,XKS,-,-,-
139
+ Kuwait,KU,KW,KWT,414,KWT,.kw
140
+ Kyrgyzstan,KG,KG,KGZ,417,KGZ,.kg
141
+ Laos,LA,LA,LAO,418,LAO,.la
142
+ Latvia,LG,LV,LVA,428,LVA,.lv
143
+ Lebanon,LE,LB,LBN,422,LBN,.lb
144
+ Lesotho,LT,LS,LSO,426,LSO,.ls
145
+ Liberia,LI,LR,LBR,430,LBR,.lr
146
+ Libya,LY,LY,LBY,434,LBY,.ly
147
+ Liechtenstein,LS,LI,LIE,438,LIE,.li
148
+ Lithuania,LH,LT,LTU,440,LTU,.lt
149
+ Luxembourg,LU,LU,LUX,442,LUX,.lu
150
+ Macau,MC,MO,MAC,446,MAC,.mo
151
+ Macedonia,MK,MK,MKD,807,FYR,.mk
152
+ Madagascar,MA,MG,MDG,450,MDG,.mg
153
+ Malawi,MI,MW,MWI,454,MWI,.mw
154
+ Malaysia,MY,MY,MYS,458,MYS,.my
155
+ Maldives,MV,MV,MDV,462,MDV,.mv
156
+ Mali,ML,ML,MLI,466,MLI,.ml
157
+ Malta,MT,MT,MLT,470,MLT,.mt
158
+ Marshall Islands,RM,MH,MHL,584,MHL,.mh
159
+ Martinique,MB,MQ,MTQ,474,MTQ,.mq
160
+ Mauritania,MR,MR,MRT,478,MRT,.mr
161
+ Mauritius,MP,MU,MUS,480,MUS,.mu
162
+ Mayotte,MF,YT,MYT,175,FRA,.yt
163
+ Mexico,MX,MX,MEX,484,MEX,.mx
164
+ "Micronesia, Federated States of",FM,FM,FSM,583,FSM,.fm
165
+ Midway Islands,MQ,-,-,-,UMI,-
166
+ Moldova,MD,MD,MDA,498,MDA,.md
167
+ Monaco,MN,MC,MCO,492,MCO,.mc
168
+ Mongolia,MG,MN,MNG,496,MNG,.mn
169
+ Montenegro,MJ,ME,MNE,499,MNE,.me
170
+ Montserrat,MH,MS,MSR,500,MSR,.ms
171
+ Morocco,MO,MA,MAR,504,MAR,.ma
172
+ Mozambique,MZ,MZ,MOZ,508,MOZ,.mz
173
+ Myanmar,-,-,-,-,-,-
174
+ Namibia,WA,NA,NAM,516,NAM,.na
175
+ Nauru,NR,NR,NRU,520,NRU,.nr
176
+ Navassa Island,BQ,-,-,-,UMI,-
177
+ Nepal,NP,NP,NPL,524,NPL,.np
178
+ Netherlands,NL,NL,NLD,528,NLD,.nl
179
+ Netherlands Antilles,NT, , , ,ANT,.an
180
+ New Caledonia,NC,NC,NCL,540,NCL,.nc
181
+ New Zealand,NZ,NZ,NZL,554,NZL,.nz
182
+ Nicaragua,NU,NI,NIC,558,NIC,.ni
183
+ Niger,NG,NE,NER,562,NER,.ne
184
+ Nigeria,NI,NG,NGA,566,NGA,.ng
185
+ Niue,NE,NU,NIU,570,NIU,.nu
186
+ Norfolk Island,NF,NF,NFK,574,NFK,.nf
187
+ Northern Mariana Islands,CQ,MP,MNP,580,MNP,.mp
188
+ Norway,NO,NO,NOR,578,NOR,.no
189
+ Oman,MU,OM,OMN,512,OMN,.om
190
+ Pakistan,PK,PK,PAK,586,PAK,.pk
191
+ Palau,PS,PW,PLW,585,PLW,.pw
192
+ Palmyra Atoll,LQ,-,-,-,UMI,-
193
+ Panama,PM,PA,PAN,591,PAN,.pa
194
+ Papua New Guinea,PP,PG,PNG,598,PNG,.pg
195
+ Paracel Islands,PF,-,-,-,-,-
196
+ Paraguay,PA,PY,PRY,600,PRY,.py
197
+ Peru,PE,PE,PER,604,PER,.pe
198
+ Philippines,RP,PH,PHL,608,PHL,.ph
199
+ Pitcairn Islands,PC,PN,PCN,612,PCN,.pn
200
+ Poland,PL,PL,POL,616,POL,.pl
201
+ Portugal,PO,PT,PRT,620,PRT,.pt
202
+ Puerto Rico,RQ,PR,PRI,630,PRI,.pr
203
+ Qatar,QA,QA,QAT,634,QAT,.qa
204
+ Reunion,RE,RE,REU,638,REU,.re
205
+ Romania,RO,RO,ROU,642,ROU,.ro
206
+ Russia,RS,RU,RUS,643,RUS,.ru
207
+ Rwanda,RW,RW,RWA,646,RWA,.rw
208
+ Saint Barthelemy,TB,BL,BLM,652,-,.bl
209
+ "Saint Helena, Ascension, and Tristan da Cunha",SH,SH,SHN,654,SHN,.sh
210
+ Saint Kitts and Nevis,SC,KN,KNA,659,KNA,.kn
211
+ Saint Lucia,ST,LC,LCA,662,LCA,.lc
212
+ Saint Martin,RN,MF,MAF,663,-,.mf
213
+ Saint Pierre and Miquelon,SB,PM,SPM,666,SPM,.pm
214
+ Saint Vincent and the Grenadines,VC,VC,VCT,670,VCT,.vc
215
+ Samoa,WS,WS,WSM,882,WSM,.ws
216
+ San Marino,SM,SM,SMR,674,SMR,.sm
217
+ Sao Tome and Principe,TP,ST,STP,678,STP,.st
218
+ Saudi Arabia,SA,SA,SAU,682,SAU,.sa
219
+ Senegal,SG,SN,SEN,686,SEN,.sn
220
+ Serbia,RI,RS,SRB,688,-,.rs
221
+ Seychelles,SE,SC,SYC,690,SYC,.sc
222
+ Sierra Leone,SL,SL,SLE,694,SLE,.sl
223
+ Singapore,SN,SG,SGP,702,SGP,.sg
224
+ Sint Maarten,NN,SX,SXM,534,-,.sx
225
+ Slovakia,LO,SK,SVK,703,SVK,.sk
226
+ Slovenia,SI,SI,SVN,705,SVN,.si
227
+ Solomon Islands,BP,SB,SLB,090,SLB,.sb
228
+ Somalia,SO,SO,SOM,706,SOM,.so
229
+ South Africa,SF,ZA,ZAF,710,ZAF,.za
230
+ South Georgia and the Islands,SX,GS,SGS,239,SGS,.gs
231
+ South Sudan,OD,SS,SSD,728,-,-
232
+ Spain,SP,ES,ESP,724,ESP,.es
233
+ Spratly Islands,PG,-,-,-,-,-
234
+ Sri Lanka,CE,LK,LKA,144,LKA,.lk
235
+ Sudan,SU,SD,SDN,729,SDN,.sd
236
+ Suriname,NS,SR,SUR,740,SUR,.sr
237
+ Svalbard,SV,SJ,SJM,744,SJM,.sj
238
+ Swaziland,WZ,SZ,SWZ,748,SWZ,.sz
239
+ Sweden,SW,SE,SWE,752,SWE,.se
240
+ Switzerland,SZ,CH,CHE,756,CHE,.ch
241
+ Syria,SY,SY,SYR,760,SYR,.sy
242
+ Taiwan,TW,TW,TWN,158,TWN,.tw
243
+ Tajikistan,TI,TJ,TJK,762,TJK,.tj
244
+ Tanzania,TZ,TZ,TZA,834,TZA,.tz
245
+ Thailand,TH,TH,THA,764,THA,.th
246
+ Timor-Leste,TT,TL,TLS,626,TLS,.tl
247
+ Togo,TO,TG,TGO,768,TGO,.tg
248
+ Tokelau,TL,TK,TKL,772,TKL,.tk
249
+ Tonga,TN,TO,TON,776,TON,.to
250
+ Trinidad and Tobago,TD,TT,TTO,780,TTO,.tt
251
+ Tromelin Island,TE,-,-,-,-,-
252
+ Tunisia,TS,TN,TUN,788,TUN,.tn
253
+ Turkey,TU,TR,TUR,792,TUR,.tr
254
+ Turkmenistan,TX,TM,TKM,795,TKM,.tm
255
+ Turks and Caicos Islands,TK,TC,TCA,796,TCA,.tc
256
+ Tuvalu,TV,TV,TUV,798,TUV,.tv
257
+ Uganda,UG,UG,UGA,800,UGA,.ug
258
+ Ukraine,UP,UA,UKR,804,UKR,.ua
259
+ United Arab Emirates,AE,AE,ARE,784,ARE,.ae
260
+ United Kingdom,UK,GB,GBR,826,GBR,.uk
261
+ United States,US,US,USA,840,USA,.us
262
+ United States Minor Outlying Islands,-,UM,UMI,581,-,.um
263
+ Uruguay,UY,UY,URY,858,URY,.uy
264
+ Uzbekistan,UZ,UZ,UZB,860,UZB,.uz
265
+ Vanuatu,NH,VU,VUT,548,VUT,.vu
266
+ Venezuela,VE,VE,VEN,862,VEN,.ve
267
+ Vietnam,VM,VN,VNM,704,VNM,.vn
268
+ Virgin Islands,VQ,VI,VIR,850,VIR,.vi
269
+ Virgin Islands (UK),-,-,-,-,-,.vg
270
+ Virgin Islands (US),-,-,-,-,-,.vi
271
+ Wake Island,WQ,-,-,-,UMI,-
272
+ Wallis and Futuna,WF,WF,WLF,876,WLF,.wf
273
+ West Bank,WE,PS,PSE,275,PSE,.ps
274
+ Western Sahara,WI,EH,ESH,732,ESH,.eh
275
+ Western Samoa,-,-,-,-,-,.ws
276
+ World,-,-,-,-,-,-
277
+ Yemen,YM,YE,YEM,887,YEM,.ye
278
+ Zaire,-,-,-,-,-,-
279
+ Zambia,ZA,ZM,ZMB,894,ZMB,.zm
280
+ Zimbabwe,ZI,ZW,ZWE,716,ZWE,.zw
@@ -18,6 +18,10 @@ end
18
18
 
19
19
  def self.from_file( path )
20
20
  html_ascii = File.read( path ) ## fix/todo: use ASCII8BIT/binary reader !!!!!
21
+ self.from_string( html_ascii )
22
+ end
23
+
24
+ def self.from_string( html_ascii ) ## note: expects ASCII-7BIT/BINARY encoding
21
25
  self.new( html_ascii )
22
26
  end
23
27
 
@@ -27,7 +31,8 @@ attr_reader :html_ascii, ## full "original" 1:1 page in "original/ascii8/bin
27
31
  :html_debug, ## html w/ mapping markers - rename to html_markers - why? why not?
28
32
  :page_info, ## incl. country_name, region_name, last_updated etc.
29
33
  :errors, ## encoding erros etc.
30
- :page
34
+ :sects
35
+
31
36
 
32
37
  def initialize( html_ascii )
33
38
  @html_ascii = html_ascii
@@ -42,8 +47,7 @@ def initialize( html_ascii )
42
47
  pp html_sects
43
48
 
44
49
 
45
- page = Page.new
46
- sects = []
50
+ @sects = []
47
51
  html_sects.each do |html_sect|
48
52
  html_sect_head = html_sect[0]
49
53
  html_subsects = html_sect[1]
@@ -81,15 +85,11 @@ def initialize( html_ascii )
81
85
  end
82
86
  end
83
87
  sect.subsects = subsects
84
- sects << sect
88
+ @sects << sect
85
89
  else
86
90
  ## warn/fix: no section title found
87
91
  end
88
92
  end
89
- page.sects = sects
90
- @page = page
91
-
92
- pp page
93
93
 
94
94
  self ## return self -- needed?? default (standard) anyway?? check and remove
95
95
  end
data/lib/factbook/page.rb CHANGED
@@ -28,12 +28,47 @@ module Factbook
28
28
  class Page
29
29
  include LogUtils::Logging
30
30
 
31
- attr_accessor :sects
32
-
33
- def initialize
34
- @sects = []
31
+ attr_reader :sects ## "structured" access e.g. sects/subsects/etc.
32
+ attr_reader :data ## "plain" access with vanilla hash
33
+
34
+
35
+ ## standard version (note: requires https)
36
+ SITE_BASE = 'https://www.cia.gov/library/publications/the-world-factbook/geos/{code}.html'
37
+
38
+ def initialize( code, opts={} )
39
+ ### keep code - why? why not?? (use page_info/info e.g. info.country_code??)
40
+
41
+ if opts[:html] ## note: expects ASCII-7BIT/BINARY encoding
42
+ ## for debugging and testing allow "custom" passed-in html page
43
+ html = opts[:html]
44
+ else
45
+ url_string = SITE_BASE.gsub( '{code}', code )
46
+ ## note: expects ASCII-7BIT/BINARY encoding
47
+ html = fetch_page( url_string ) ## use PageFetcher class - why?? why not??
48
+ end
49
+
50
+ b = Builder.from_string( html )
51
+ @sects = b.sects
52
+
53
+ @data = {}
54
+ @sects.each do |sect|
55
+ @data[ sect.title ] = sect.data
56
+ end
57
+
58
+ self ## return self (check - not needed??)
35
59
  end
36
60
 
61
+
62
+ def to_json( opts={} ) ## convenience helper for data.to_json; note: pretty print by default!
63
+ if opts[:minify]
64
+ data.to_json
65
+ else
66
+ ## was: -- opts[:pretty] || opts[:pp]
67
+ JSON.pretty_generate( data ) ## note: pretty print by default!
68
+ end
69
+ end
70
+
71
+
37
72
  def [](key) ### convenience shortcut
38
73
  # lets you use
39
74
  # page['geo']
@@ -45,20 +80,30 @@ class Page
45
80
  data[key]
46
81
  end
47
82
 
48
-
49
- def data
50
- ## note: cache data hash on first build for now
51
- if @data.nil?
52
- ## convert sects to hash
53
- @data = {}
54
-
55
- sects.each_with_index do |sect,i|
56
- @data[ sect.title ] = sect.data
57
- end
83
+ private
84
+ def fetch_page( url_string )
85
+
86
+ worker = Fetcher::Worker.new
87
+ response = worker.get_response( url_string )
88
+
89
+ if response.code == '200'
90
+ t = response.body
91
+ ###
92
+ # NB: Net::HTTP will NOT set encoding UTF-8 etc.
93
+ # will mostly be ASCII
94
+ # - try to change encoding to UTF-8 ourselves
95
+ logger.debug "t.encoding.name (before): #{t.encoding.name}"
96
+ #####
97
+ # NB: ASCII-8BIT == BINARY == Encoding Unknown; Raw Bytes Here
98
+ t
99
+ else
100
+ logger.error "fetch HTTP - #{response.code} #{response.message}"
101
+ ## todo/fix: raise http exception (see fetcher) -- why? why not??
102
+ fail "fetch HTTP - #{response.code} #{response.message}"
103
+ nil
58
104
  end
59
- @data
60
105
  end
61
-
106
+
62
107
 
63
108
  =begin
64
109
  def self.from_url( cc, cn )
@@ -4,7 +4,7 @@ module Factbook
4
4
 
5
5
  MAJOR = 1
6
6
  MINOR = 0
7
- PATCH = 0
7
+ PATCH = 1
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
data/script/testbr.rb ADDED
@@ -0,0 +1,10 @@
1
+ # encoding: utf-8
2
+ #
3
+ # use to run/test:
4
+ # ruby -I ./lib script/testbr.rb
5
+
6
+ require 'factbook'
7
+
8
+ page = Factbook::Page.new( 'br' ) # br is the country code for Brazil
9
+ pp page.data # pretty print hash
10
+
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+ #
3
+ # use to run/test:
4
+ # ruby -I ./lib script/testcodes.rb
5
+
6
+ require 'factbook'
7
+
8
+ Factbook.codes.each do |code|
9
+ pp code
10
+ end
11
+
data/test/test_builder.rb CHANGED
@@ -16,15 +16,13 @@ class TestBuilder < MiniTest::Test
16
16
 
17
17
  def test_build
18
18
 
19
- ['au','be'].each do |cc|
19
+ ['au','be'].each do |code|
20
20
  ## use/fix: ASCII-8BIT (e.g.keep as is) -???
21
21
  ## fix/todo: use ASCII8BIT/binary reader ??
22
- b = Factbook::Builder.from_file( "#{Factbook.root}/test/data/src/#{cc}.html" )
22
+ b = Factbook::Builder.from_file( "#{Factbook.root}/test/data/src/#{code}.html" )
23
+ pp b.sects
23
24
 
24
- pp b.page
25
- pp b.page.data
26
-
27
- File.open( "./tmp/#{cc}.debug.html", 'w' ) do |f|
25
+ File.open( "./tmp/#{code}.debug.html", 'w' ) do |f|
28
26
  f.write b.html_debug
29
27
  end
30
28
  end
data/test/test_fields.rb CHANGED
@@ -10,8 +10,9 @@ require 'helper'
10
10
  class TestFields < MiniTest::Test
11
11
 
12
12
  def read_test_page( code )
13
- b = Factbook::Builder.from_file( "#{Factbook.root}/test/data/src/#{code}.html" )
14
- b.page
13
+ html = File.read( "#{Factbook.root}/test/data/src/#{code}.html" )
14
+ page = Factbook::Page.new( code, html: html )
15
+ page
15
16
  end
16
17
 
17
18
  def test_fields_full
data/test/test_json.rb CHANGED
@@ -26,9 +26,8 @@ class TestJson < MiniTest::Test
26
26
 
27
27
  codes.each do |code|
28
28
 
29
- b = Factbook::Builder.from_file( "#{Factbook.root}/test/data/src/#{code}.html" )
30
-
31
- page = b.page
29
+ html = File.read( "#{Factbook.root}/test/data/src/#{code}.html" )
30
+ page = Factbook::Page.new( code, html: html )
32
31
 
33
32
  h = page.data
34
33
  pp h
@@ -36,9 +35,10 @@ class TestJson < MiniTest::Test
36
35
  ### save to json
37
36
  puts "saving a copy to #{code}.json for debugging"
38
37
  File.open( "tmp/#{code}.json", 'w' ) do |f|
39
- f.write JSON.pretty_generate( h )
38
+ f.write JSON.pretty_generate( h )
39
+ ## f.write page.to_json
40
40
  end
41
41
  end
42
42
  end
43
43
 
44
- end # class TestOldJson
44
+ end # class TestJson
data/test/test_page.rb CHANGED
@@ -27,15 +27,9 @@ class TestPage < MiniTest::Test
27
27
  code = rec[0]
28
28
  sects_size = rec[1]
29
29
 
30
- b = Factbook::Builder.from_file( "#{Factbook.root}/test/data/src/#{code}.html" )
31
- page = b.page
30
+ html = File.read( "#{Factbook.root}/test/data/src/#{code}.html" )
31
+ page = Factbook::Page.new( code, html: html )
32
32
 
33
- ## page = Factbook::OldPage.new( code )
34
- ## page.html = File.read( "#{Factbook.root}/test/data/old/countrytemplate_#{code}.html" )
35
-
36
- ## print first 600 chars
37
- ## pp page.html[0..600]
38
-
39
33
  assert_equal sects_size, page.sects.size
40
34
  end
41
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factbook
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.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: 2015-10-26 00:00:00.000000000 Z
11
+ date: 2015-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logutils
@@ -94,7 +94,9 @@ files:
94
94
  - Manifest.txt
95
95
  - README.md
96
96
  - Rakefile
97
+ - data/categories.csv
97
98
  - data/codes.csv
99
+ - data/codesxref.csv
98
100
  - data/comparisons.csv
99
101
  - lib/factbook.rb
100
102
  - lib/factbook/builder.rb
@@ -109,6 +111,8 @@ files:
109
111
  - lib/factbook/utils.rb
110
112
  - lib/factbook/utils_info.rb
111
113
  - lib/factbook/version.rb
114
+ - script/testbr.rb
115
+ - script/testcodes.rb
112
116
  - test/data/au.html
113
117
  - test/data/au.yml
114
118
  - test/data/be.html