worlddb 1.6.0 → 1.6.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.
- data/Manifest.txt +1 -0
- data/lib/worlddb/console.rb +10 -11
- data/lib/worlddb/deleter.rb +1 -0
- data/lib/worlddb/models/continent.rb +13 -0
- data/lib/worlddb/models/country.rb +2 -0
- data/lib/worlddb/reader.rb +54 -1
- data/lib/worlddb/schema.rb +14 -1
- data/lib/worlddb/stats.rb +1 -0
- data/lib/worlddb/version.rb +1 -1
- data/lib/worlddb.rb +1 -0
- metadata +13 -12
data/Manifest.txt
CHANGED
data/lib/worlddb/console.rb
CHANGED
@@ -14,12 +14,13 @@ require 'yaml'
|
|
14
14
|
|
15
15
|
## shortcuts for models
|
16
16
|
|
17
|
-
Tag
|
18
|
-
Tagging
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
Tag = WorldDb::Models::Tag
|
18
|
+
Tagging = WorldDb::Models::Tagging
|
19
|
+
Continent = WorldDb::Models::Continent
|
20
|
+
Country = WorldDb::Models::Country
|
21
|
+
Region = WorldDb::Models::Region
|
22
|
+
City = WorldDb::Models::City
|
23
|
+
Prop = WorldDb::Models::Prop
|
23
24
|
|
24
25
|
## connect to db
|
25
26
|
|
@@ -36,11 +37,9 @@ ActiveRecord::Base.establish_connection( DB_CONFIG )
|
|
36
37
|
## test drive
|
37
38
|
|
38
39
|
puts "Welcome to world.db, version #{WorldDb::VERSION}!"
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
puts " #{'%6d' % Tagging.count} taggings"
|
43
|
-
puts " #{'%6d' % Tag.count} tags"
|
40
|
+
|
41
|
+
WorldDb.stats
|
42
|
+
|
44
43
|
puts "Ready."
|
45
44
|
|
46
45
|
## some countries
|
data/lib/worlddb/deleter.rb
CHANGED
@@ -5,6 +5,8 @@ module WorldDb::Models
|
|
5
5
|
class Country < ActiveRecord::Base
|
6
6
|
self.table_name = 'countries'
|
7
7
|
|
8
|
+
belongs_to :continent, :class_name => 'Continent', :foreign_key => 'continent_id'
|
9
|
+
|
8
10
|
has_many :usages
|
9
11
|
has_many :langs, :through => :usages # lang(uage)s through usages (that is, countries_langs) join table
|
10
12
|
|
data/lib/worlddb/reader.rb
CHANGED
@@ -89,7 +89,11 @@ class Reader
|
|
89
89
|
|
90
90
|
def load( name )
|
91
91
|
|
92
|
-
if name =~ /^
|
92
|
+
if name =~ /^continents/
|
93
|
+
load_continent_defs( name )
|
94
|
+
elsif name =~ /\/continents/
|
95
|
+
load_continent_refs( name )
|
96
|
+
elsif name =~ /^lang/
|
93
97
|
load_langs( name )
|
94
98
|
elsif name =~ /\/lang/
|
95
99
|
load_usages( name )
|
@@ -158,6 +162,55 @@ class Reader
|
|
158
162
|
end
|
159
163
|
|
160
164
|
|
165
|
+
def load_continent_refs( name )
|
166
|
+
path = "#{include_path}/#{name}.yml"
|
167
|
+
|
168
|
+
logger.info "parsing data '#{name}' (#{path})..."
|
169
|
+
|
170
|
+
reader = HashReader.new( path )
|
171
|
+
|
172
|
+
reader.each do |key, value|
|
173
|
+
country = Country.find_by_key!( key )
|
174
|
+
continent = Continent.find_by_key!( value )
|
175
|
+
country.continent_id = continent.id
|
176
|
+
country.save!
|
177
|
+
end
|
178
|
+
|
179
|
+
Prop.create_from_fixture!( name, path )
|
180
|
+
end
|
181
|
+
|
182
|
+
def load_continent_defs( name, more_values={} )
|
183
|
+
path = "#{include_path}/#{name}.txt"
|
184
|
+
|
185
|
+
logger.info "parsing data '#{name}' (#{path})..."
|
186
|
+
|
187
|
+
reader = ValuesReader.new( path, more_values )
|
188
|
+
|
189
|
+
reader.each_line do |attribs, values|
|
190
|
+
|
191
|
+
## check optional values
|
192
|
+
values.each_with_index do |value, index|
|
193
|
+
logger.warn "unknown type for value >#{value}<"
|
194
|
+
end
|
195
|
+
|
196
|
+
rec = Continent.find_by_key( attribs[ :key ] )
|
197
|
+
if rec.present?
|
198
|
+
logger.debug "update Continent #{rec.id}-#{rec.key}:"
|
199
|
+
else
|
200
|
+
logger.debug "create Continent:"
|
201
|
+
rec = Continent.new
|
202
|
+
end
|
203
|
+
|
204
|
+
logger.debug attribs.to_json
|
205
|
+
|
206
|
+
rec.update_attributes!( attribs )
|
207
|
+
|
208
|
+
end # each lines
|
209
|
+
|
210
|
+
Prop.create_from_fixture!( name, path )
|
211
|
+
|
212
|
+
end # load_continent_defs
|
213
|
+
|
161
214
|
|
162
215
|
def load_langs( name )
|
163
216
|
|
data/lib/worlddb/schema.rb
CHANGED
@@ -5,6 +5,18 @@ class CreateDb < ActiveRecord::Migration
|
|
5
5
|
|
6
6
|
def up
|
7
7
|
|
8
|
+
create_table :continents do |t|
|
9
|
+
t.string :title, :null => false
|
10
|
+
t.string :key, :null => false
|
11
|
+
t.string :synonyms # comma separated list of synonyms
|
12
|
+
|
13
|
+
## timestamp at last
|
14
|
+
t.timestamps
|
15
|
+
end
|
16
|
+
|
17
|
+
add_index :continents, :key, :unique => true
|
18
|
+
|
19
|
+
|
8
20
|
create_table :countries do |t|
|
9
21
|
t.string :title, :null => false
|
10
22
|
t.string :key, :null => false
|
@@ -12,7 +24,8 @@ create_table :countries do |t|
|
|
12
24
|
t.string :synonyms # comma separated list of synonyms
|
13
25
|
t.integer :pop, :null => false # population count
|
14
26
|
t.integer :area, :null => false # area in square km (sq. km)
|
15
|
-
t.references :
|
27
|
+
t.references :continent
|
28
|
+
t.references :country # for supra(nationals) n depend(encies)
|
16
29
|
|
17
30
|
## flags (use single int named flags - why? why not?
|
18
31
|
t.boolean :s, :null => false, :default => false # supra(national) flag e.g. eu
|
data/lib/worlddb/stats.rb
CHANGED
@@ -7,6 +7,7 @@ module WorldDb
|
|
7
7
|
|
8
8
|
def tables
|
9
9
|
puts "Stats:"
|
10
|
+
puts " #{'%5d' % Continent.count} continents"
|
10
11
|
puts " #{'%5d' % Country.count} countries (#{Country.where(s: true).count} supras, #{Country.where(d:true).count} deps)"
|
11
12
|
puts " #{'%5d' % Region.count} regions"
|
12
13
|
puts " #{'%5d' % City.where(m: true).where(c: false).count} metros"
|
data/lib/worlddb/version.rb
CHANGED
data/lib/worlddb.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: worlddb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: textutils
|
16
|
-
requirement: &
|
16
|
+
requirement: &81213940 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.5.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *81213940
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: commander
|
27
|
-
requirement: &
|
27
|
+
requirement: &81213720 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 4.1.3
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *81213720
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activerecord
|
38
|
-
requirement: &
|
38
|
+
requirement: &81213510 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '3.2'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *81213510
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rdoc
|
49
|
-
requirement: &
|
49
|
+
requirement: &81213290 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '3.10'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *81213290
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: hoe
|
60
|
-
requirement: &
|
60
|
+
requirement: &81213070 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '3.3'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *81213070
|
69
69
|
description: worlddb - world.db command line tool
|
70
70
|
email: opensport@googlegroups.com
|
71
71
|
executables:
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/worlddb/data/fixtures.rb
|
87
87
|
- lib/worlddb/deleter.rb
|
88
88
|
- lib/worlddb/models/city.rb
|
89
|
+
- lib/worlddb/models/continent.rb
|
89
90
|
- lib/worlddb/models/country.rb
|
90
91
|
- lib/worlddb/models/lang.rb
|
91
92
|
- lib/worlddb/models/prop.rb
|