worlddb 0.8.0 → 1.0.0
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.
- data/Manifest.txt +4 -98
- data/Rakefile +1 -6
- data/lib/worlddb/cli/main.rb +170 -0
- data/lib/worlddb/cli/opts.rb +24 -50
- data/lib/worlddb/data/fixtures.rb +168 -0
- data/lib/worlddb/deleter.rb +26 -0
- data/lib/worlddb/reader.rb +8 -61
- data/lib/worlddb/stats.rb +30 -0
- data/lib/worlddb/utils.rb +0 -60
- data/lib/worlddb/version.rb +1 -2
- data/lib/worlddb.rb +24 -184
- metadata +30 -108
- data/data/africa/1_codes/fifa.yml +0 -59
- data/data/africa/1_codes/internet.yml +0 -64
- data/data/africa/1_codes/iso3.yml +0 -57
- data/data/africa/2_names/de.yml +0 -10
- data/data/africa/3_more/en.wikipedia.yml +0 -30
- data/data/africa/3_more/lang.yml +0 -63
- data/data/africa/countries.txt +0 -92
- data/data/america/1_codes/fifa.yml +0 -41
- data/data/america/1_codes/internet.yml +0 -39
- data/data/america/1_codes/iso3.yml +0 -39
- data/data/america/1_codes/motor.yml +0 -26
- data/data/america/2_names/de.yml +0 -31
- data/data/america/2_names/es.yml +0 -30
- data/data/america/3_more/en.wikipedia.yml +0 -9
- data/data/america/3_more/lang.yml +0 -60
- data/data/america/br/regions.txt +0 -27
- data/data/america/ca/cities.txt +0 -48
- data/data/america/ca/regions.txt +0 -28
- data/data/america/countries.txt +0 -70
- data/data/america/mx/cities.txt +0 -32
- data/data/america/mx/regions.txt +0 -54
- data/data/america/us/cities.txt +0 -46
- data/data/america/us/regions.txt +0 -64
- data/data/america/ve/cities.txt +0 -358
- data/data/america/ve/regions.txt +0 -46
- data/data/asia/1_codes/fifa.yml +0 -53
- data/data/asia/1_codes/internet.yml +0 -51
- data/data/asia/1_codes/iso3.yml +0 -51
- data/data/asia/2_names/de.yml +0 -9
- data/data/asia/3_more/en.wikipedia.yml +0 -26
- data/data/asia/3_more/lang.yml +0 -55
- data/data/asia/countries.txt +0 -126
- data/data/asia/jp/cities.txt +0 -3
- data/data/europe/1_codes/fifa.yml +0 -60
- data/data/europe/1_codes/internet.yml +0 -59
- data/data/europe/1_codes/iso3.yml +0 -59
- data/data/europe/1_codes/motor.yml +0 -60
- data/data/europe/2_names/de.yml +0 -42
- data/data/europe/2_names/es.yml +0 -43
- data/data/europe/3_more/en.wikipedia.yml +0 -12
- data/data/europe/3_more/lang.yml +0 -47
- data/data/europe/at/cities.txt +0 -45
- data/data/europe/at/regions.txt +0 -26
- data/data/europe/be/cities.txt +0 -19
- data/data/europe/be/regions.txt +0 -23
- data/data/europe/bg/cities.txt +0 -4
- data/data/europe/by/cities.txt +0 -4
- data/data/europe/ch/cities.txt +0 -4
- data/data/europe/countries.txt +0 -123
- data/data/europe/cy/cities.txt +0 -1
- data/data/europe/cz/cities.txt +0 -26
- data/data/europe/cz/regions.txt +0 -32
- data/data/europe/de/cities.txt +0 -44
- data/data/europe/de/regions.txt +0 -16
- data/data/europe/dk/cities.txt +0 -6
- data/data/europe/ee/cities.txt +0 -2
- data/data/europe/en/cities.txt +0 -32
- data/data/europe/en/regions.txt +0 -21
- data/data/europe/es/cities.txt +0 -17
- data/data/europe/es/regions.txt +0 -26
- data/data/europe/fi/cities.txt +0 -2
- data/data/europe/fr/cities.txt +0 -15
- data/data/europe/fr/regions.txt +0 -32
- data/data/europe/gr/cities.txt +0 -6
- data/data/europe/hr/cities.txt +0 -1
- data/data/europe/hu/cities.txt +0 -2
- data/data/europe/ie/cities.txt +0 -3
- data/data/europe/it/cities.txt +0 -17
- data/data/europe/lt/cities.txt +0 -3
- data/data/europe/lv/cities.txt +0 -4
- data/data/europe/nl/cities.txt +0 -11
- data/data/europe/no/cities.txt +0 -3
- data/data/europe/pl/cities.txt +0 -12
- data/data/europe/pt/cities.txt +0 -6
- data/data/europe/ro/cities.txt +0 -4
- data/data/europe/rs/cities.txt +0 -3
- data/data/europe/ru/cities.txt +0 -14
- data/data/europe/sc/cities.txt +0 -3
- data/data/europe/se/cities.txt +0 -3
- data/data/europe/tr/cities.txt +0 -3
- data/data/europe/ua/cities.txt +0 -9
- data/data/europe/wa/cities.txt +0 -3
- data/data/langs.yml +0 -210
- data/data/oceania/1_codes/fifa.yml +0 -21
- data/data/oceania/1_codes/internet.yml +0 -17
- data/data/oceania/1_codes/iso3.yml +0 -17
- data/data/oceania/2_names/de.yml +0 -7
- data/data/oceania/3_more/en.wikipedia.yml +0 -11
- data/data/oceania/3_more/lang.yml +0 -17
- data/data/oceania/au/cities.txt +0 -2
- data/data/oceania/countries.txt +0 -40
- data/data/tags.1.yml +0 -40
- data/data/tags.3.yml +0 -23
- data/lib/worlddb/cli/runner.rb +0 -113
- data/lib/worlddb/readers/code_reader.rb +0 -34
- data/lib/worlddb/readers/hash_reader.rb +0 -81
- data/lib/worlddb/readers/line_reader.rb +0 -45
- data/lib/worlddb/readers/values_reader.rb +0 -171
data/data/langs.yml
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
## list of languages
|
|
2
|
-
## use key / title e.g. en: English, de: Deutsch etc.
|
|
3
|
-
|
|
4
|
-
## for a list see http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
### languages in europe
|
|
8
|
-
|
|
9
|
-
sq: Albanian
|
|
10
|
-
eu: Basque
|
|
11
|
-
be: Belarusian
|
|
12
|
-
bs: Bosnian
|
|
13
|
-
br: Breton
|
|
14
|
-
bg: Bulgarian
|
|
15
|
-
ca: Catalan
|
|
16
|
-
kw: Cornish
|
|
17
|
-
co: Corsican
|
|
18
|
-
hr: Croatian
|
|
19
|
-
cs: Czech
|
|
20
|
-
da: Danish
|
|
21
|
-
nl: Dutch
|
|
22
|
-
en: English
|
|
23
|
-
et: Estonian
|
|
24
|
-
fo: Faroese
|
|
25
|
-
fi: Finnish
|
|
26
|
-
fr: French
|
|
27
|
-
gl: Galician
|
|
28
|
-
de: German
|
|
29
|
-
el: Greek
|
|
30
|
-
hu: Hungarian
|
|
31
|
-
ga: Irish
|
|
32
|
-
is: Icelandic
|
|
33
|
-
it: Italian
|
|
34
|
-
lb: Luxembourgish
|
|
35
|
-
lt: Lithuanian
|
|
36
|
-
lv: Latvian
|
|
37
|
-
mk: Macedonian
|
|
38
|
-
mt: Maltese
|
|
39
|
-
nb: Norwegian Bokmål
|
|
40
|
-
nn: Norwegian Nynorsk
|
|
41
|
-
no: Norwegian
|
|
42
|
-
pl: Polish
|
|
43
|
-
pt: Portuguese
|
|
44
|
-
rm: Romansh
|
|
45
|
-
ro: Romanian|Moldavian
|
|
46
|
-
ru: Russian
|
|
47
|
-
sc: Sardinian
|
|
48
|
-
sr: Serbian
|
|
49
|
-
gd: Scottish Gaelic|Gaelic
|
|
50
|
-
es: Spanish|Castilian
|
|
51
|
-
sv: Swedish
|
|
52
|
-
sk: Slovak
|
|
53
|
-
sl: Slovene
|
|
54
|
-
tr: Turkish
|
|
55
|
-
uk: Ukrainian
|
|
56
|
-
wa: Walloon
|
|
57
|
-
cy: Welsh
|
|
58
|
-
fy: Western Frisian
|
|
59
|
-
yi: Yiddish
|
|
60
|
-
kl: Kalaallisut|Greenlandic
|
|
61
|
-
|
|
62
|
-
### america
|
|
63
|
-
|
|
64
|
-
ay: Aymara
|
|
65
|
-
cr: Cree
|
|
66
|
-
gn: Guaraní
|
|
67
|
-
ht: Haitian
|
|
68
|
-
ik: Inupiaq
|
|
69
|
-
iu: Inuktitut
|
|
70
|
-
nv: Navajo
|
|
71
|
-
oj: Ojibwe
|
|
72
|
-
qu: Quechua
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
### todo: group/sort by continent
|
|
76
|
-
### africa / asia / oceania
|
|
77
|
-
|
|
78
|
-
ab: Abkhaz
|
|
79
|
-
aa: Afar
|
|
80
|
-
af: Afrikaans
|
|
81
|
-
ak: Akan
|
|
82
|
-
am: Amharic
|
|
83
|
-
ar: Arabic
|
|
84
|
-
an: Aragonese
|
|
85
|
-
hy: Armenian
|
|
86
|
-
as: Assamese
|
|
87
|
-
av: Avaric
|
|
88
|
-
ae: Avestan
|
|
89
|
-
az: Azerbaijani
|
|
90
|
-
bm: Bambara
|
|
91
|
-
ba: Bashkir
|
|
92
|
-
bn: Bengali
|
|
93
|
-
bh: Bihari
|
|
94
|
-
bi: Bislama
|
|
95
|
-
my: Burmese
|
|
96
|
-
ch: Chamorro
|
|
97
|
-
ce: Chechen
|
|
98
|
-
ny: Chichewa
|
|
99
|
-
zh: Chinese
|
|
100
|
-
cv: Chuvash
|
|
101
|
-
dv: Divehi
|
|
102
|
-
dz: Dzongkha
|
|
103
|
-
ee: Ewe
|
|
104
|
-
fj: Fijian
|
|
105
|
-
ff: Fula
|
|
106
|
-
ka: Georgian
|
|
107
|
-
gu: Gujarati
|
|
108
|
-
ha: Hausa
|
|
109
|
-
he: Hebrew
|
|
110
|
-
hz: Herero
|
|
111
|
-
hi: Hindi
|
|
112
|
-
ho: Hiri Motu
|
|
113
|
-
id: Indonesian
|
|
114
|
-
ig: Igbo
|
|
115
|
-
ja: Japanese
|
|
116
|
-
jv: Javanese
|
|
117
|
-
kn: Kannada
|
|
118
|
-
kr: Kanuri
|
|
119
|
-
ks: Kashmiri
|
|
120
|
-
kk: Kazakh
|
|
121
|
-
km: Khmer|Cambodian
|
|
122
|
-
ki: Kikuyu
|
|
123
|
-
rw: Kinyarwanda
|
|
124
|
-
ky: Kyrgyz
|
|
125
|
-
kv: Komi
|
|
126
|
-
kg: Kongo
|
|
127
|
-
ko: Korean
|
|
128
|
-
ku: Kurdish
|
|
129
|
-
kj: Kwanyama
|
|
130
|
-
lg: Ganda
|
|
131
|
-
li: Limburgish
|
|
132
|
-
ln: Lingala
|
|
133
|
-
lo: Lao
|
|
134
|
-
lu: Luba-Katanga
|
|
135
|
-
gv: Manx
|
|
136
|
-
mg: Malagasy
|
|
137
|
-
ms: Malay
|
|
138
|
-
ml: Malayalam
|
|
139
|
-
mi: Māori
|
|
140
|
-
mr: Marathi
|
|
141
|
-
mh: Marshallese
|
|
142
|
-
mn: Mongolian
|
|
143
|
-
na: Nauru
|
|
144
|
-
nd: North Ndebele
|
|
145
|
-
ne: Nepali
|
|
146
|
-
ng: Ndonga
|
|
147
|
-
ii: Nuosu
|
|
148
|
-
nr: South Ndebele
|
|
149
|
-
oc: Occitan
|
|
150
|
-
om: Oromo
|
|
151
|
-
or: Oriya
|
|
152
|
-
os: Ossetian|Ossetic
|
|
153
|
-
pa: Panjabi|Punjabi
|
|
154
|
-
pi: Pāli
|
|
155
|
-
fa: Persian
|
|
156
|
-
ps: Pashto
|
|
157
|
-
rn: Kirundi
|
|
158
|
-
sa: Sanskrit
|
|
159
|
-
sd: Sindhi
|
|
160
|
-
se: Northern Sami
|
|
161
|
-
sm: Samoan
|
|
162
|
-
sg: Sango
|
|
163
|
-
sn: Shona
|
|
164
|
-
si: Sinhala
|
|
165
|
-
so: Somali
|
|
166
|
-
st: Southern Sotho
|
|
167
|
-
su: Sundanese
|
|
168
|
-
sw: Swahili
|
|
169
|
-
ss: Swati
|
|
170
|
-
ta: Tamil
|
|
171
|
-
te: Telugu
|
|
172
|
-
tg: Tajik
|
|
173
|
-
th: Thai
|
|
174
|
-
ti: Tigrinya
|
|
175
|
-
bo: Tibetan
|
|
176
|
-
tk: Turkmen
|
|
177
|
-
tl: Tagalog
|
|
178
|
-
tn: Tswana
|
|
179
|
-
to: Tonga
|
|
180
|
-
ts: Tsonga
|
|
181
|
-
tt: Tatar
|
|
182
|
-
tw: Twi
|
|
183
|
-
ty: Tahitiani
|
|
184
|
-
ug: Uighur
|
|
185
|
-
ur: Urdu
|
|
186
|
-
uz: Uzbek
|
|
187
|
-
ve: Venda
|
|
188
|
-
vi: Vietnamese
|
|
189
|
-
wo: Wolof
|
|
190
|
-
xh: Xhosa
|
|
191
|
-
yo: Yoruba
|
|
192
|
-
za: Zhuang
|
|
193
|
-
zu: Zulu
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
#####################
|
|
197
|
-
## constructed languages
|
|
198
|
-
|
|
199
|
-
## eo: Esperanto
|
|
200
|
-
## ia: Interlingua
|
|
201
|
-
## ie: Interlingue
|
|
202
|
-
## io: Ido
|
|
203
|
-
## vo: Volapük
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
#########################
|
|
207
|
-
## acient
|
|
208
|
-
|
|
209
|
-
## la: Latin
|
|
210
|
-
## cu: Old Church Slavonic|Old Bulgarian
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
####################
|
|
2
|
-
## oceania
|
|
3
|
-
|
|
4
|
-
fj: FIJ # Fiji
|
|
5
|
-
ws: SAM # Samoa
|
|
6
|
-
sb: SOL # Solomon Islands
|
|
7
|
-
to: TGA # Tonga
|
|
8
|
-
vu: VAN # Vanuatu
|
|
9
|
-
au: AUS # Australia
|
|
10
|
-
nz: NZL # New Zealand
|
|
11
|
-
pg: PNG # Papua New Guinea
|
|
12
|
-
|
|
13
|
-
####
|
|
14
|
-
## not members - double check if mistaken
|
|
15
|
-
|
|
16
|
-
ki: !!null # Kiribati
|
|
17
|
-
mh: !!null # Marshall Islands
|
|
18
|
-
fm: !!null # Micronesia
|
|
19
|
-
nr: !!null # Nauru
|
|
20
|
-
pw: !!null # Palau
|
|
21
|
-
tv: !!null # Tuvalu
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
####################
|
|
2
|
-
## oceania
|
|
3
|
-
|
|
4
|
-
fj: fj # Fiji
|
|
5
|
-
ki: ki # Kiribati
|
|
6
|
-
mh: mh # Marshall Islands
|
|
7
|
-
fm: fm # Micronesia
|
|
8
|
-
nr: nr # Nauru
|
|
9
|
-
pw: pw # Palau
|
|
10
|
-
ws: ws # Samoa
|
|
11
|
-
sb: sb # Solomon Islands
|
|
12
|
-
to: to # Tonga
|
|
13
|
-
tv: tv # Tuvalu
|
|
14
|
-
vu: vu # Vanuatu
|
|
15
|
-
au: au # Australia
|
|
16
|
-
nz: nz # New Zealand
|
|
17
|
-
pg: pg # Papua New Guinea
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
####################
|
|
2
|
-
## oceania
|
|
3
|
-
|
|
4
|
-
fj: FJI # Fiji
|
|
5
|
-
ki: KIR # Kiribati
|
|
6
|
-
mh: MHL # Marshall Islands
|
|
7
|
-
fm: FSM # Micronesia
|
|
8
|
-
nr: NRU # Nauru
|
|
9
|
-
pw: PLW # Palau
|
|
10
|
-
ws: WSM # Samoa
|
|
11
|
-
sb: SLB # Solomon Islands
|
|
12
|
-
to: TON # Tonga
|
|
13
|
-
tv: TUV # Tuvalu
|
|
14
|
-
vu: VUT # Vanuatu
|
|
15
|
-
au: AUS # Australia
|
|
16
|
-
nz: NZL # New Zealand
|
|
17
|
-
pg: PNG # Papua New Guinea
|
data/data/oceania/2_names/de.yml
DELETED
data/data/oceania/au/cities.txt
DELETED
data/data/oceania/countries.txt
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
###############################
|
|
2
|
-
## australia & oceania
|
|
3
|
-
|
|
4
|
-
####
|
|
5
|
-
## regions
|
|
6
|
-
## - Melanesia
|
|
7
|
-
## - Micronesia
|
|
8
|
-
## - Polynesia
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
au, Australia, AUS, 7_686_850, 22_028_000, un|fifa|g20|commonwealth
|
|
12
|
-
|
|
13
|
-
##############
|
|
14
|
-
### Melanesia
|
|
15
|
-
## see http://en.wikipedia.org/wiki/Melanesia
|
|
16
|
-
|
|
17
|
-
pg, Papua New Guinea, PNG, 462_840, 5_172_033, un|fifa|melanesia|commonwealth
|
|
18
|
-
fj, Fiji, FIJ, 18_274, 849_000, Suva, un|fifa|melanesia|commonwealth
|
|
19
|
-
sb, Solomon Islands, SOL, 28_400, 523_000, Honiara, un|fifa|melanesia|commonwealth
|
|
20
|
-
vu, Vanuatu, VAN, 12_190, 224_564, Port Vila, un|fifa|melanesia|commonwealth
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
#############
|
|
24
|
-
## Micronesia
|
|
25
|
-
## see http://en.wikipedia.org/wiki/Micronesia
|
|
26
|
-
|
|
27
|
-
pw, Palau, PLW, 459, 20_956, Ngerulmud, un|micronesia|microstate # nb: use ISO code; NOT fifa member
|
|
28
|
-
fm, Micronesia, FSM, 702, 111_000, Palikir, un|micronesia|microstate # nb: use ISO code; NOT fifa member
|
|
29
|
-
mh, Marshall Islands, MHL, 181, 68_000, Majuro, un|micronesia|microstate # nb: use ISO code; NOT fifa member
|
|
30
|
-
nr, Nauru, NRU, 21, 9_378, Yaren, un|micronesia|microstate|commonwealth # nb: use ISO code; NOT fifa member
|
|
31
|
-
ki, Kiribati, KIR, 811, 103_500, Tarawa, un|micronesia|microstate|commonwealth # nb: use ISO code; NOT fifa member
|
|
32
|
-
|
|
33
|
-
##############
|
|
34
|
-
## Polynesia
|
|
35
|
-
## see http://en.wikipedia.org/wiki/Polynesia
|
|
36
|
-
|
|
37
|
-
nz, New Zealand, NZL, 268_680, 4_108_037, un|fifa|polynesia|commonwealth
|
|
38
|
-
ws, Samoa, SAM, 2_831, 194_320, Apia, un|fifa|polynesia|commonwealth
|
|
39
|
-
to, Tonga, TGA, 748, 103_036, Nuku'alofa, un|fifa|polynesia|microstate|commonwealth
|
|
40
|
-
tv, Tuvalu, TUV, 26, 10_544, Funafuti, un|polynesia|microstate|commonwealth # nb: use ISO code; NOT fifa member
|
data/data/tags.1.yml
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
### setup some grade 1 tags
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
###
|
|
5
|
-
# for 193 un members see www.un.org/en/members
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
## some tags
|
|
9
|
-
|
|
10
|
-
continents: africa, america, asia, europe, oceania
|
|
11
|
-
|
|
12
|
-
####################
|
|
13
|
-
# geo regions
|
|
14
|
-
africa: northern africa, western africa, central africa, eastern africa, southern africa
|
|
15
|
-
|
|
16
|
-
americas: north america, south america, central america, caribbean (islands)
|
|
17
|
-
|
|
18
|
-
## check if yaml can handle key w/ space??
|
|
19
|
-
south_america: andean states, southern cone
|
|
20
|
-
|
|
21
|
-
europe: northern europe, southern europe, western europe, central europe, eastern europe, southeastern europe
|
|
22
|
-
|
|
23
|
-
## more regions
|
|
24
|
-
europe2: baltic (states), scandinavia, nordic (countries), balkans
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
## get used for more than one continent
|
|
28
|
-
more: middle east, indian ocean, atlantic ocean
|
|
29
|
-
|
|
30
|
-
# orgs
|
|
31
|
-
|
|
32
|
-
orgs: un, g5, g8, g20, eu, commonwealth, mercosur, nafta
|
|
33
|
-
football: fifa, uefa, afc, ofc, caf, csf, concacaf
|
|
34
|
-
|
|
35
|
-
europe3: benelux, euro, schengen
|
|
36
|
-
|
|
37
|
-
misc: microstate
|
|
38
|
-
|
|
39
|
-
# national regions
|
|
40
|
-
brasil: s|South, se|Southeast, co|Centerwest, ne|Northeast, n|North
|
data/data/tags.3.yml
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
### setup some grade 3 tags
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
####
|
|
5
|
-
|
|
6
|
-
# categorize countries into brackets by area
|
|
7
|
-
area: area_1_000_000_n_up,
|
|
8
|
-
area_100_000_to_1_000_000,
|
|
9
|
-
area_1_000_to_100_000,
|
|
10
|
-
area_1_000_n_less # microstate
|
|
11
|
-
|
|
12
|
-
# include all
|
|
13
|
-
area2: area_100_000_n_up, area_1_000_n_up
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# categorize countries into brackets by pop(ulation)
|
|
17
|
-
pop: pop_100m_n_up,
|
|
18
|
-
pop_10m_to_100m,
|
|
19
|
-
pop_1m_to_10m,
|
|
20
|
-
pop_1m_n_less
|
|
21
|
-
|
|
22
|
-
# include all
|
|
23
|
-
pop2: pop_10m_n_up, pop_1m_n_up
|
data/lib/worlddb/cli/runner.rb
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
module WorldDB
|
|
3
|
-
|
|
4
|
-
class Runner
|
|
5
|
-
|
|
6
|
-
include WorldDB::Models
|
|
7
|
-
|
|
8
|
-
def initialize
|
|
9
|
-
@logger = Logger.new(STDOUT)
|
|
10
|
-
@logger.level = Logger::INFO
|
|
11
|
-
|
|
12
|
-
@opts = Opts.new
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
attr_reader :logger, :opts
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def run( args )
|
|
19
|
-
opt=OptionParser.new do |cmd|
|
|
20
|
-
|
|
21
|
-
cmd.banner = "Usage: worlddb [options]"
|
|
22
|
-
|
|
23
|
-
## NB: reserve -c for use with -c/--config
|
|
24
|
-
cmd.on( '--create', 'Create DB schema' ) { opts.create = true }
|
|
25
|
-
cmd.on( '--setup', "Create DB schema 'n' load builtin world data" ) { opts.setup = true }
|
|
26
|
-
|
|
27
|
-
### todo: in future allow multiple search path??
|
|
28
|
-
cmd.on( '-i', '--include PATH', "Data path (default is #{opts.data_path})" ) { |path| opts.data_path = path }
|
|
29
|
-
|
|
30
|
-
cmd.on( '--country KEY', "Default country for regions 'n' cities" ) { |key| opts.country = key; }
|
|
31
|
-
|
|
32
|
-
## todo: add (generic) alias -t/--type cities for --cities
|
|
33
|
-
## -t/--type regions for --regions
|
|
34
|
-
## -t/--type countries for --countries --why? why not?
|
|
35
|
-
|
|
36
|
-
cmd.on( '--countries', 'Use country plain text fixture reader' ) { opts.countries = true }
|
|
37
|
-
cmd.on( '--regions', 'Use regions plain text fixture reader' ) { opts.regions = true }
|
|
38
|
-
cmd.on( '--cities', 'Use cities plain text fixture reader' ) { opts.cities = true }
|
|
39
|
-
|
|
40
|
-
## todo: change to --builtin?? more clear why? why not?
|
|
41
|
-
cmd.on( '--load', 'Use loader for builtin world data' ) { opts.load = true }
|
|
42
|
-
|
|
43
|
-
cmd.on( '--delete', 'Delete all records' ) { opts.delete = true }
|
|
44
|
-
|
|
45
|
-
cmd.on( '-v', '--version', "Show version" ) do
|
|
46
|
-
puts WorldDB.banner
|
|
47
|
-
exit
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
cmd.on( "--verbose", "Show debug trace" ) do
|
|
51
|
-
logger.datetime_format = "%H:%H:%S"
|
|
52
|
-
logger.level = Logger::DEBUG
|
|
53
|
-
|
|
54
|
-
ActiveRecord::Base.logger = Logger.new(STDOUT)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
cmd.on_tail( "-h", "--help", "Show this message" ) do
|
|
58
|
-
puts <<EOS
|
|
59
|
-
|
|
60
|
-
worlddb - world.db command line tool, version #{VERSION}
|
|
61
|
-
|
|
62
|
-
#{cmd.help}
|
|
63
|
-
|
|
64
|
-
Examples:
|
|
65
|
-
worlddb at/cities # import austrian cities
|
|
66
|
-
worlddb --create # create database schema
|
|
67
|
-
|
|
68
|
-
More Examples:
|
|
69
|
-
worlddb # show stats (table counts, table props)
|
|
70
|
-
|
|
71
|
-
Further information:
|
|
72
|
-
http://geraldb.github.com/world.db
|
|
73
|
-
|
|
74
|
-
EOS
|
|
75
|
-
exit
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
opt.parse!( args )
|
|
80
|
-
|
|
81
|
-
puts WorldDB.banner
|
|
82
|
-
|
|
83
|
-
puts "working directory: #{Dir.pwd}"
|
|
84
|
-
|
|
85
|
-
db_config = {
|
|
86
|
-
adapter: 'sqlite3',
|
|
87
|
-
database: "#{opts.output_path}/world.db"
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
puts "Connecting to db using settings: "
|
|
91
|
-
pp db_config
|
|
92
|
-
|
|
93
|
-
ActiveRecord::Base.establish_connection( db_config )
|
|
94
|
-
|
|
95
|
-
if opts.setup?
|
|
96
|
-
WorldDB.create
|
|
97
|
-
WorldDB.read_all
|
|
98
|
-
else
|
|
99
|
-
WorldDB.create if opts.create?
|
|
100
|
-
WorldDB.delete! if opts.delete?
|
|
101
|
-
|
|
102
|
-
# read plain text country/region/city fixtures
|
|
103
|
-
Reader.new( logger ).run( opts, args )
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
WorldDB.stats
|
|
107
|
-
|
|
108
|
-
puts 'Done.'
|
|
109
|
-
|
|
110
|
-
end # method run
|
|
111
|
-
|
|
112
|
-
end # class Runner
|
|
113
|
-
end # module WorldDB
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
class CodeReader
|
|
4
|
-
|
|
5
|
-
def initialize( logger=nil, path )
|
|
6
|
-
if logger.nil?
|
|
7
|
-
@logger = Logger.new(STDOUT)
|
|
8
|
-
@logger.level = Logger::INFO
|
|
9
|
-
else
|
|
10
|
-
@logger = logger
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
@path = path
|
|
14
|
-
|
|
15
|
-
## nb: assume/enfore utf-8 encoding (with or without BOM - byte order mark)
|
|
16
|
-
## - see worlddb/utils.rb
|
|
17
|
-
|
|
18
|
-
@code = File.read_utf8( @path )
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def eval( klass )
|
|
22
|
-
klass.class_eval( @code )
|
|
23
|
-
|
|
24
|
-
# NB: same as
|
|
25
|
-
#
|
|
26
|
-
# module WorldDB
|
|
27
|
-
# include WorldDB::Models
|
|
28
|
-
# <code here>
|
|
29
|
-
# end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
attr_reader :logger
|
|
33
|
-
|
|
34
|
-
end # class CodeReader
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class HashReader
|
|
5
|
-
|
|
6
|
-
def initialize( logger=nil, path )
|
|
7
|
-
if logger.nil?
|
|
8
|
-
@logger = Logger.new(STDOUT)
|
|
9
|
-
@logger.level = Logger::INFO
|
|
10
|
-
else
|
|
11
|
-
@logger = logger
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
@path = path
|
|
15
|
-
|
|
16
|
-
## nb: assume/enfore utf-8 encoding (with or without BOM - byte order mark)
|
|
17
|
-
## - see worlddb/utils.rb
|
|
18
|
-
|
|
19
|
-
text = File.read_utf8( @path )
|
|
20
|
-
|
|
21
|
-
### hack for syck yaml parser (e.g.ruby 1.9.2) (cannot handle !!null)
|
|
22
|
-
## change it to !null to get plain nil
|
|
23
|
-
## w/ both syck and psych/libyml
|
|
24
|
-
|
|
25
|
-
text = text.gsub( '!!null', '!null' )
|
|
26
|
-
|
|
27
|
-
### hacks for yaml
|
|
28
|
-
|
|
29
|
-
### see yaml gotschas
|
|
30
|
-
## - http://www.perlmonks.org/?node_id=738671
|
|
31
|
-
## -
|
|
32
|
-
|
|
33
|
-
## replace all tabs w/ two spaces and issue a warning
|
|
34
|
-
## nb: yaml does NOT support tabs see why here -> yaml.org/faq.html
|
|
35
|
-
|
|
36
|
-
text = text.gsub( "\t" ) do |_|
|
|
37
|
-
puts "*** warn: hash reader - found tab (\t) replacing w/ two spaces; yaml forbids tabs; see yaml.org/faq.html"
|
|
38
|
-
' ' # replace w/ two spaces
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
## quote implicit boolean types on,no,n,y
|
|
42
|
-
|
|
43
|
-
## nb: escape only if key e.g. no: or "free standing" value on its own line e.g.
|
|
44
|
-
## no: no
|
|
45
|
-
|
|
46
|
-
text = text.gsub( /^([ ]*)(ON|On|on|NO|No|no|N|n|Y|y)[ ]*:/ ) do |value|
|
|
47
|
-
puts "*** warn: hash reader - found implicit bool (#{$1}#{$2}) for key; adding quotes to turn into string; see yaml.org/refcard.html"
|
|
48
|
-
# nb: preserve leading spaces for structure - might be significant
|
|
49
|
-
"#{$1}'#{$2}':" # add quotes to turn it into a string (not bool e.g. true|false)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
## nb: value must be freestanding (only allow optional eol comment)
|
|
53
|
-
## do not escape if part of string sequence e.g.
|
|
54
|
-
## key: nb,nn,no,se => nb,nn,'no',se -- avoid!!
|
|
55
|
-
|
|
56
|
-
text = text.gsub( /:[ ]+(ON|On|on|NO|No|no|N|n|Y|y)[ ]*($| #.*$)/ ) do |value|
|
|
57
|
-
puts "*** warn: hash reader - found implicit bool (#{$1}) for value; adding quotes to turn into string; see yaml.org/refcard.html"
|
|
58
|
-
": '#{$1}'" # add quotes to turn it into a string (not bool e.g. true|false)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
@hash = YAML.load( text )
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
attr_reader :logger
|
|
66
|
-
|
|
67
|
-
def each
|
|
68
|
-
@hash.each do |key_wild, value_wild|
|
|
69
|
-
# normalize
|
|
70
|
-
# - key n value as string (not symbols, bool? int? array?)
|
|
71
|
-
# - remove leading and trailing whitespace
|
|
72
|
-
key = key_wild.to_s.strip
|
|
73
|
-
value = value_wild.to_s.strip
|
|
74
|
-
|
|
75
|
-
puts "yaml key:#{key_wild.class.name} >>#{key}<<, value:#{value_wild.class.name} >>#{value}<<"
|
|
76
|
-
|
|
77
|
-
yield( key, value )
|
|
78
|
-
end
|
|
79
|
-
end # method each
|
|
80
|
-
|
|
81
|
-
end # class HashReader
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
class LineReader
|
|
4
|
-
|
|
5
|
-
def initialize( logger=nil, path )
|
|
6
|
-
if logger.nil?
|
|
7
|
-
@logger = Logger.new(STDOUT)
|
|
8
|
-
@logger.level = Logger::INFO
|
|
9
|
-
else
|
|
10
|
-
@logger = logger
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
@path = path
|
|
14
|
-
|
|
15
|
-
## nb: assume/enfore utf-8 encoding (with or without BOM - byte order mark)
|
|
16
|
-
## - see worlddb/utils.rb
|
|
17
|
-
@data = File.read_utf8( @path )
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
attr_reader :logger
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def each_line
|
|
24
|
-
@data.each_line do |line|
|
|
25
|
-
|
|
26
|
-
if line =~ /^\s*#/
|
|
27
|
-
# skip komments and do NOT copy to result (keep comments secret!)
|
|
28
|
-
logger.debug 'skipping comment line'
|
|
29
|
-
next
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
if line =~ /^\s*$/
|
|
33
|
-
# kommentar oder leerzeile überspringen
|
|
34
|
-
logger.debug 'skipping blank line'
|
|
35
|
-
next
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# remove leading and trailing whitespace
|
|
39
|
-
line = line.strip
|
|
40
|
-
|
|
41
|
-
yield( line )
|
|
42
|
-
end # each lines
|
|
43
|
-
end # method each_line
|
|
44
|
-
|
|
45
|
-
end # class LineReader
|