worlddb 1.8.2 → 2.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.
- checksums.yaml +7 -0
- data/{History.md → HISTORY.md} +0 -0
- data/Manifest.txt +22 -5
- data/README.md +62 -2
- data/Rakefile +14 -6
- data/lib/worlddb.rb +34 -12
- data/lib/worlddb/cli/main.rb +159 -111
- data/lib/worlddb/cli/opts.rb +15 -48
- data/lib/worlddb/console.rb +6 -5
- data/lib/worlddb/deleter.rb +5 -3
- data/lib/worlddb/matcher.rb +16 -5
- data/lib/worlddb/models/city.rb +66 -30
- data/lib/worlddb/models/city_comp.rb +27 -0
- data/lib/worlddb/models/continent.rb +30 -8
- data/lib/worlddb/models/continent_comp.rb +24 -0
- data/lib/worlddb/models/country.rb +60 -36
- data/lib/worlddb/models/country_comp.rb +29 -0
- data/lib/worlddb/models/forward.rb +53 -0
- data/lib/worlddb/models/lang.rb +9 -7
- data/lib/worlddb/models/lang_comp.rb +23 -0
- data/lib/worlddb/models/name.rb +13 -0
- data/lib/worlddb/models/place.rb +16 -0
- data/lib/worlddb/models/region.rb +34 -12
- data/lib/worlddb/models/region_comp.rb +26 -0
- data/lib/worlddb/models/tagdb/tag.rb +16 -0
- data/lib/worlddb/models/tagdb/tagging.rb +15 -0
- data/lib/worlddb/models/usage.rb +10 -6
- data/lib/worlddb/reader.rb +31 -158
- data/lib/worlddb/readers/base.rb +41 -0
- data/lib/worlddb/readers/city.rb +18 -0
- data/lib/worlddb/readers/country.rb +17 -0
- data/lib/worlddb/readers/lang.rb +43 -0
- data/lib/worlddb/readers/region.rb +17 -0
- data/lib/worlddb/readers/usage.rb +35 -0
- data/lib/worlddb/schema.rb +100 -65
- data/lib/worlddb/stats.rb +9 -3
- data/lib/worlddb/utils.rb +3 -0
- data/lib/worlddb/version.rb +1 -6
- data/test/helper.rb +13 -3
- data/test/test_model_city.rb +60 -0
- data/test/test_model_comp.rb +48 -0
- data/test/test_model_country.rb +43 -0
- data/test/test_model_region.rb +50 -0
- data/test/test_models.rb +35 -0
- metadata +113 -37
- data/lib/worlddb/models/prop.rb +0 -32
- data/lib/worlddb/models/tag.rb +0 -33
- data/lib/worlddb/models/tagging.rb +0 -13
- data/test/test_values.rb +0 -114
data/test/helper.rb
CHANGED
@@ -24,9 +24,16 @@ require 'active_record'
|
|
24
24
|
require 'worlddb'
|
25
25
|
require 'logutils/db' # NB: explict require required for LogDb (not automatic)
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
|
28
|
+
Name = WorldDb::Model::Name
|
29
|
+
Place = WorldDb::Model::Place
|
30
|
+
Continent = WorldDb::Model::Continent
|
31
|
+
Country = WorldDb::Model::Country
|
32
|
+
Region = WorldDb::Model::Region
|
33
|
+
City = WorldDb::Model::City
|
34
|
+
|
35
|
+
Lang = WorldDb::Model::Lang
|
36
|
+
Usage = WorldDb::Model::Usage
|
30
37
|
|
31
38
|
|
32
39
|
def setup_in_memory_db
|
@@ -49,6 +56,9 @@ def setup_in_memory_db
|
|
49
56
|
## build schema
|
50
57
|
|
51
58
|
LogDb.create
|
59
|
+
ConfDb.create
|
60
|
+
|
61
|
+
TagDb.create
|
52
62
|
WorldDb.create
|
53
63
|
end
|
54
64
|
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
require 'helper'
|
5
|
+
|
6
|
+
class TestModelCity < MiniTest::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
# delete all countries, regions, cities in in-memory only db
|
10
|
+
WorldDb.delete!
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_load_values
|
14
|
+
|
15
|
+
at = Country.create!( key: 'at',
|
16
|
+
name: 'Austria',
|
17
|
+
code: 'AUT',
|
18
|
+
pop: 8_414_638,
|
19
|
+
area: 83_871 )
|
20
|
+
|
21
|
+
w = Region.create!( key: 'w',
|
22
|
+
name: 'Wien',
|
23
|
+
country_id: at.id )
|
24
|
+
|
25
|
+
new_attributes = {
|
26
|
+
key: 'wien',
|
27
|
+
name: 'Wien',
|
28
|
+
alt_names: '',
|
29
|
+
country_id: at.id
|
30
|
+
}
|
31
|
+
|
32
|
+
values = [
|
33
|
+
'W',
|
34
|
+
'1_731_236',
|
35
|
+
'm:1_724_000'
|
36
|
+
]
|
37
|
+
|
38
|
+
c = City.create_or_update_from_attribs( new_attributes, values )
|
39
|
+
|
40
|
+
c2 = City.find_by_key!( new_attributes[:key] )
|
41
|
+
assert_equal c2.id, c.id
|
42
|
+
|
43
|
+
assert_equal new_attributes[:name], c.name
|
44
|
+
assert_equal 1_731_236, c.pop
|
45
|
+
assert_equal 1_724_000, c.popm
|
46
|
+
assert_equal true, c.m
|
47
|
+
assert_equal w.id, c.region_id
|
48
|
+
assert_equal at.id, c.country_id
|
49
|
+
|
50
|
+
### test place
|
51
|
+
assert_equal new_attributes[:name], c.place.name
|
52
|
+
|
53
|
+
## test assocs
|
54
|
+
assert_equal 'Wien', c.region.name
|
55
|
+
assert_equal 'Austria', c.region.country.name
|
56
|
+
assert_equal 'Austria', c.country.name
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
end # class TestModelCity
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
require 'helper'
|
5
|
+
|
6
|
+
class TestModelComp < MiniTest::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
# delete all countries, regions, cities in in-memory only db
|
10
|
+
WorldDb.delete!
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
def test_title
|
15
|
+
at = Country.create!( key: 'at',
|
16
|
+
title: 'Austria',
|
17
|
+
code: 'AUT',
|
18
|
+
pop: 8_414_638,
|
19
|
+
area: 83_871 )
|
20
|
+
|
21
|
+
w = Region.create!( key: 'w',
|
22
|
+
title: 'Wien',
|
23
|
+
country_id: at.id )
|
24
|
+
|
25
|
+
new_attributes = {
|
26
|
+
key: 'wien',
|
27
|
+
title: 'Wien'
|
28
|
+
}
|
29
|
+
|
30
|
+
c = City.create!( key: new_attributes[:key],
|
31
|
+
title: new_attributes[:title], # note: assign "old" title attrib
|
32
|
+
region_id: w.id,
|
33
|
+
country_id: at.id )
|
34
|
+
|
35
|
+
c2 = City.find_by_key!( new_attributes[:key] )
|
36
|
+
assert_equal c2.id, c.id
|
37
|
+
|
38
|
+
assert_equal new_attributes[:title], c.name
|
39
|
+
assert_equal new_attributes[:title], c.title
|
40
|
+
assert_equal new_attributes[:key], c.key
|
41
|
+
assert_equal false, c.m
|
42
|
+
assert_equal w.id, c.region_id
|
43
|
+
assert_equal at.id, c.country_id
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
end # class TestModelComp
|
48
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class TestModelCountry < MiniTest::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
# delete all countries, regions, cities in in-memory only db
|
9
|
+
WorldDb.delete!
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_load_values
|
13
|
+
|
14
|
+
new_attributes = {
|
15
|
+
key: 'at',
|
16
|
+
name: 'Austria',
|
17
|
+
alt_names: ''
|
18
|
+
}
|
19
|
+
|
20
|
+
values = [
|
21
|
+
'AUT',
|
22
|
+
'83_871',
|
23
|
+
'8_414_638',
|
24
|
+
'un|fifa|uefa|eu|euro|schengen|central_europe|western_europe'
|
25
|
+
]
|
26
|
+
|
27
|
+
c = Country.create_or_update_from_attribs( new_attributes, values )
|
28
|
+
|
29
|
+
c2 = Country.find_by_key!( new_attributes[:key] )
|
30
|
+
assert_equal c.id, c2.id
|
31
|
+
|
32
|
+
assert_equal new_attributes[:name], c.name
|
33
|
+
assert_equal 8_414_638, c.pop
|
34
|
+
assert_equal 83_871, c.area
|
35
|
+
## todo: assert tag count; add supra:eu etc.
|
36
|
+
|
37
|
+
### test place
|
38
|
+
assert_equal new_attributes[:name], c.place.name
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
end # class TestModelCountry
|
43
|
+
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
require 'helper'
|
5
|
+
|
6
|
+
class TestModelRegion < MiniTest::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
# delete all countries, regions, cities in in-memory only db
|
10
|
+
WorldDb.delete!
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_load_values
|
14
|
+
|
15
|
+
at = Country.create!( key: 'at',
|
16
|
+
name: 'Austria',
|
17
|
+
code: 'AUT',
|
18
|
+
pop: 8_414_638,
|
19
|
+
area: 83_871 )
|
20
|
+
|
21
|
+
new_attributes = {
|
22
|
+
key: 'w',
|
23
|
+
name: 'Wien',
|
24
|
+
alt_names: '',
|
25
|
+
country_id: at.id
|
26
|
+
}
|
27
|
+
|
28
|
+
values = [
|
29
|
+
'415 km²',
|
30
|
+
'eastern austria'
|
31
|
+
]
|
32
|
+
|
33
|
+
r = Region.create_or_update_from_attribs( new_attributes, values )
|
34
|
+
|
35
|
+
r2 = Region.find_by_key!( new_attributes[:key] )
|
36
|
+
assert_equal r.id, r2.id
|
37
|
+
|
38
|
+
assert_equal new_attributes[:name], r.name
|
39
|
+
assert_equal 415, r.area
|
40
|
+
assert_equal at.id, r.country_id
|
41
|
+
|
42
|
+
### test place
|
43
|
+
assert_equal new_attributes[:name], r.place.name
|
44
|
+
|
45
|
+
## test assocs
|
46
|
+
assert_equal 'Austria', r.country.name
|
47
|
+
end
|
48
|
+
|
49
|
+
end # class TestModelRegion
|
50
|
+
|
data/test/test_models.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
require 'helper'
|
5
|
+
|
6
|
+
class TestModels < MiniTest::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
# delete all countries, regions, cities in in-memory only db
|
10
|
+
WorldDb.delete!
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_counts
|
14
|
+
assert_equal 0, Name.count
|
15
|
+
assert_equal 0, Place.count
|
16
|
+
assert_equal 0, Continent.count
|
17
|
+
assert_equal 0, Country.count
|
18
|
+
assert_equal 0, Region.count
|
19
|
+
assert_equal 0, City.count
|
20
|
+
|
21
|
+
assert_equal 0, Lang.count
|
22
|
+
assert_equal 0, Usage.count
|
23
|
+
|
24
|
+
WorldDb.tables
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_place_assoc_counts
|
28
|
+
# assert_equal 0, Continent.new.place.count
|
29
|
+
# assert_equal 0, Country.new.place.count
|
30
|
+
# assert_equal 0, Region.new.place.count
|
31
|
+
# assert_equal 0, City.new.place.count
|
32
|
+
end
|
33
|
+
|
34
|
+
end # class TestModels
|
35
|
+
|
metadata
CHANGED
@@ -1,82 +1,138 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: worlddb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Gerald Bauer
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-03-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: props
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: logutils
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
14
41
|
- !ruby/object:Gem::Dependency
|
15
42
|
name: textutils
|
16
|
-
requirement:
|
17
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
18
44
|
requirements:
|
19
|
-
- -
|
45
|
+
- - ! '>='
|
20
46
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
47
|
+
version: 0.8.7
|
22
48
|
type: :runtime
|
23
49
|
prerelease: false
|
24
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.8.7
|
25
55
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
requirement:
|
28
|
-
none: false
|
56
|
+
name: tagutils
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
29
58
|
requirements:
|
30
|
-
- -
|
59
|
+
- - ! '>='
|
31
60
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
61
|
+
version: '0'
|
33
62
|
type: :runtime
|
34
63
|
prerelease: false
|
35
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: gli
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.9'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.9'
|
36
83
|
- !ruby/object:Gem::Dependency
|
37
84
|
name: activerecord
|
38
|
-
requirement:
|
39
|
-
none: false
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
40
86
|
requirements:
|
41
|
-
- -
|
87
|
+
- - ! '>='
|
42
88
|
- !ruby/object:Gem::Version
|
43
|
-
version: '
|
89
|
+
version: '0'
|
44
90
|
type: :runtime
|
45
91
|
prerelease: false
|
46
|
-
version_requirements:
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
47
97
|
- !ruby/object:Gem::Dependency
|
48
98
|
name: rdoc
|
49
|
-
requirement:
|
50
|
-
none: false
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
51
100
|
requirements:
|
52
101
|
- - ~>
|
53
102
|
- !ruby/object:Gem::Version
|
54
103
|
version: '4.0'
|
55
104
|
type: :development
|
56
105
|
prerelease: false
|
57
|
-
version_requirements:
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '4.0'
|
58
111
|
- !ruby/object:Gem::Dependency
|
59
112
|
name: hoe
|
60
|
-
requirement:
|
61
|
-
none: false
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
62
114
|
requirements:
|
63
115
|
- - ~>
|
64
116
|
- !ruby/object:Gem::Version
|
65
|
-
version: '3.
|
117
|
+
version: '3.6'
|
66
118
|
type: :development
|
67
119
|
prerelease: false
|
68
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '3.6'
|
69
125
|
description: worlddb - world.db command line tool
|
70
126
|
email: openmundi@googlegroups.com
|
71
127
|
executables:
|
72
128
|
- worlddb
|
73
129
|
extensions: []
|
74
130
|
extra_rdoc_files:
|
75
|
-
-
|
131
|
+
- HISTORY.md
|
76
132
|
- Manifest.txt
|
77
133
|
- README.md
|
78
134
|
files:
|
79
|
-
-
|
135
|
+
- HISTORY.md
|
80
136
|
- Manifest.txt
|
81
137
|
- README.md
|
82
138
|
- Rakefile
|
@@ -88,26 +144,44 @@ files:
|
|
88
144
|
- lib/worlddb/deleter.rb
|
89
145
|
- lib/worlddb/matcher.rb
|
90
146
|
- lib/worlddb/models/city.rb
|
147
|
+
- lib/worlddb/models/city_comp.rb
|
91
148
|
- lib/worlddb/models/continent.rb
|
149
|
+
- lib/worlddb/models/continent_comp.rb
|
92
150
|
- lib/worlddb/models/country.rb
|
151
|
+
- lib/worlddb/models/country_comp.rb
|
152
|
+
- lib/worlddb/models/forward.rb
|
93
153
|
- lib/worlddb/models/lang.rb
|
94
|
-
- lib/worlddb/models/
|
154
|
+
- lib/worlddb/models/lang_comp.rb
|
155
|
+
- lib/worlddb/models/name.rb
|
156
|
+
- lib/worlddb/models/place.rb
|
95
157
|
- lib/worlddb/models/region.rb
|
96
|
-
- lib/worlddb/models/
|
97
|
-
- lib/worlddb/models/
|
158
|
+
- lib/worlddb/models/region_comp.rb
|
159
|
+
- lib/worlddb/models/tagdb/tag.rb
|
160
|
+
- lib/worlddb/models/tagdb/tagging.rb
|
98
161
|
- lib/worlddb/models/usage.rb
|
99
162
|
- lib/worlddb/reader.rb
|
163
|
+
- lib/worlddb/readers/base.rb
|
164
|
+
- lib/worlddb/readers/city.rb
|
165
|
+
- lib/worlddb/readers/country.rb
|
166
|
+
- lib/worlddb/readers/lang.rb
|
167
|
+
- lib/worlddb/readers/region.rb
|
168
|
+
- lib/worlddb/readers/usage.rb
|
100
169
|
- lib/worlddb/schema.rb
|
101
170
|
- lib/worlddb/stats.rb
|
102
171
|
- lib/worlddb/utils.rb
|
103
172
|
- lib/worlddb/version.rb
|
104
173
|
- test/helper.rb
|
105
174
|
- test/test_fixture_matchers.rb
|
106
|
-
- test/
|
175
|
+
- test/test_model_city.rb
|
176
|
+
- test/test_model_comp.rb
|
177
|
+
- test/test_model_country.rb
|
178
|
+
- test/test_model_region.rb
|
179
|
+
- test/test_models.rb
|
107
180
|
- .gemtest
|
108
181
|
homepage: https://github.com/geraldb/world.db.ruby
|
109
182
|
licenses:
|
110
183
|
- Public Domain
|
184
|
+
metadata: {}
|
111
185
|
post_install_message:
|
112
186
|
rdoc_options:
|
113
187
|
- --main
|
@@ -115,23 +189,25 @@ rdoc_options:
|
|
115
189
|
require_paths:
|
116
190
|
- lib
|
117
191
|
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
-
none: false
|
119
192
|
requirements:
|
120
193
|
- - ! '>='
|
121
194
|
- !ruby/object:Gem::Version
|
122
195
|
version: 1.9.2
|
123
196
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
|
-
none: false
|
125
197
|
requirements:
|
126
198
|
- - ! '>='
|
127
199
|
- !ruby/object:Gem::Version
|
128
200
|
version: '0'
|
129
201
|
requirements: []
|
130
202
|
rubyforge_project: worlddb
|
131
|
-
rubygems_version: 1.
|
203
|
+
rubygems_version: 2.1.10
|
132
204
|
signing_key:
|
133
|
-
specification_version:
|
205
|
+
specification_version: 4
|
134
206
|
summary: worlddb - world.db command line tool
|
135
207
|
test_files:
|
136
208
|
- test/test_fixture_matchers.rb
|
137
|
-
- test/
|
209
|
+
- test/test_models.rb
|
210
|
+
- test/test_model_city.rb
|
211
|
+
- test/test_model_comp.rb
|
212
|
+
- test/test_model_country.rb
|
213
|
+
- test/test_model_region.rb
|