worlddb 2.0.5 → 2.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 45f7ea9e8342b1543e5b5ffc4a3248eb556f3ba2
4
+ data.tar.gz: 8e8fc8668c5ff107626dc1300212fad1cf7b84cc
5
+ SHA512:
6
+ metadata.gz: fef9a54a76351aa639ce10ed5e423daec71aef3b366ec9a0b9b457751b8f12170a2fde3433f0a36bcb9996bed6959c741ed3246091f433725ac6442ac1564df5
7
+ data.tar.gz: 8e3e5f08bf075a1da28d5af49e252798dae7383a30fff7e5e5d368babb8e15736729eac3dce83245407b950127ff775c6b0d29d4ea069f0810210765ca61878c
@@ -42,6 +42,15 @@ class Country < ActiveRecord::Base
42
42
  scope :by_pop, ->{ order( 'pop desc' ) } # order by pop(ulation)
43
43
  scope :by_area, ->{ order( 'area desc') } # order by area (in square km)
44
44
 
45
+ scope :by_num, ->{ order( 'num asc' ) } # order by numeric country code
46
+ scope :by_alpha2, ->{ order( 'alpha2 asc' ) }
47
+ scope :by_alpha3, ->{ order( 'alpha2 asc' ) }
48
+ scope :by_fifa, ->{ order( 'fifa asc' ) } # football
49
+ scope :by_ioc, ->{ order( 'ioc asc' ) } # olympics
50
+ scope :by_motor, ->{ order( 'motor asc' ) } # designated signs; motor vehicle license plate
51
+ scope :by_net, ->{ order( 'net asc' ) } # internet cc top level domain; ccTLD
52
+
53
+
45
54
  before_create :on_create
46
55
  before_update :on_update
47
56
 
@@ -15,6 +15,12 @@ class Country
15
15
 
16
16
  scope :by_title, ->{ order( 'name asc' ) } # order by title (a-z)
17
17
 
18
+ def iso2() alpha2; end
19
+ def iso2=(value) self.alpha2 = value; end
20
+
21
+ def iso3() alpha3; end
22
+ def iso3=(value) self.alpha3 = value; end
23
+
18
24
 
19
25
  def synonyms() alt_names; end
20
26
  def synonyms=(value) self.alt_names = value; end
@@ -53,14 +53,13 @@ class ReaderBase
53
53
  ## use match_usage( name ) - why? why not?? ???
54
54
  r = create_usage_reader( name )
55
55
  r.read()
56
- elsif name =~ /\/fifa/
57
- load_xxx( 'fifa', name )
58
- elsif name =~ /\/iso3/
59
- load_xxx( 'iso3', name )
60
- elsif name =~ /\/internet/
61
- load_xxx( 'net', name )
62
- elsif name =~ /\/motor/
63
- load_xxx( 'motor', name )
56
+ elsif name =~ /\/fifa/ ||
57
+ name =~ /\/fips/ ||
58
+ name =~ /\/internet/ ||
59
+ name =~ /\/ioc/ ||
60
+ name =~ /\/iso/ ||
61
+ name =~ /\/motor/
62
+ load_codes( name )
64
63
  elsif name =~ /^tag.*\.\d$/
65
64
  ## todo: pass along opts too
66
65
  ## use match_tags( name ) - why? why not?? ???
@@ -163,16 +162,62 @@ class ReaderBase
163
162
  end # each lines
164
163
  end # load_continent_defs
165
164
 
166
- ### use CountryAttr Reader
167
- def load_xxx( xxx, name )
168
- reader = create_hash_reader( name )
165
+ def load_codes( name )
166
+ reader = create_line_reader( name )
169
167
 
170
- reader.each do |key, value|
171
- country = Country.find_by_key!( key )
172
- country.send( "#{xxx}=", value )
173
- country.save!
168
+ reader.each_line do |line|
169
+
170
+ values = line.split(',')
171
+
172
+ logger.debug '[>' + values.join( '<|>' ) + '<]'
173
+
174
+ if name =~ /iso/
175
+ # special case for iso
176
+ # country ref, alpha2, alpha3, num
177
+ country_name = values[0].strip
178
+ else
179
+ # code, country ref
180
+ country_name = values[1].strip
181
+ end
182
+
183
+ ## try to find country
184
+ cty = Country.find_by_name( country_name )
185
+ if cty.nil?
186
+ ## retry: remove all () enclosed
187
+ cty = Country.find_by_name( country_name.gsub( /\([^)]+\)/, '' ).strip )
188
+ end
189
+
190
+ if cty.nil?
191
+ logger.warn "no country match found for >#{country_name}<; skipping line; in [#{name}]"
192
+ next
193
+ end
194
+
195
+ if name =~ /\/fifa/
196
+ cty.fifa = values[0].strip
197
+ elsif name =~ /\/fips/
198
+ cty.fips = values[0].strip
199
+ elsif name =~ /\/internet/
200
+ # NOTE: remove (optional) leading . e.g. .at becomes at
201
+ cty.net = values[0].sub( /^\s*\./,'' ).strip
202
+ elsif name =~ /\/ioc/
203
+ cty.ioc = values[0].strip
204
+ elsif name =~ /\/motor/
205
+ cty.motor = values[0].strip
206
+ elsif name =~ /\/iso/
207
+ cty.alpha2 = values[1].strip
208
+ cty.alpha3 = values[2].strip
209
+ # NOTE: num is a string!!! use (rename to) num_str - why? why not?
210
+ cty.num = values[3].strip
211
+ else
212
+ logger.warn "warn: unknown country code type; skipping line; in [#{name}]"
213
+ next
214
+ end
215
+
216
+ cty.save!
174
217
  end
218
+
175
219
  end
176
220
 
221
+
177
222
  end # class ReaderBase
178
223
  end # module WorldDb
@@ -69,6 +69,12 @@ class Reader < ReaderBase
69
69
  ValuesReader.from_file( path, more_attribs )
70
70
  end
71
71
 
72
+ def create_line_reader( name )
73
+ path = "#{@include_path}/#{name}.txt"
74
+ logger.info "parsing data (line) '#{name}' (#{path})..."
75
+
76
+ LineReader.from_file( path )
77
+ end
72
78
 
73
79
  # def create_tag_reader( name )
74
80
  # ## fix: change to new from_file() style
@@ -114,6 +114,12 @@ class ZipReader < ReaderBase
114
114
  ValuesReader.from_zip( @zip_file, path, more_attribs )
115
115
  end
116
116
 
117
+ def create_line_reader( name )
118
+ path = name_to_zip_entry_path( name )
119
+ logger.info "parsing data (line) in zip '#{name}' (#{path})..."
120
+
121
+ LineReader.from_zip( @zip_file, path )
122
+ end
117
123
 
118
124
  # def create_tag_reader( name )
119
125
  # ## fix: change to new from_file() style
@@ -92,12 +92,16 @@ create_table :countries do |t|
92
92
  t.boolean :c, null: false, default: false # country flag (is this needed?)
93
93
  t.boolean :d, null: false, default: false # dependency flag
94
94
 
95
- # extras
96
- t.string :motor # optional auto motor (vehicle) licene plate
97
- t.string :iso2 # optional iso two letter country code
98
- t.string :iso3 # optional iso three letter country code
95
+ # extras - country codes
96
+ t.string :motor # optional motor (vehicle) licene plate code (bumper sticker)
97
+ t.string :alpha2 # optional iso two letter country code
98
+ t.string :alpha3 # optional iso three letter country code
99
+ t.string :num # optional iso numeric country code - NOTE: same numeric code as string!!! e.g. 043 etc.
99
100
  t.string :fifa # optional fifa country code
101
+ t.string :ioc
102
+ t.string :fips
100
103
  t.string :net # optional internet top level domain (tld)
104
+
101
105
  t.string :wikipedia # optional wikipedia page name -- en.wikipedia.org/wiki/<name>
102
106
 
103
107
  ## timestamp at last
@@ -4,7 +4,7 @@ module WorldDb
4
4
  # sync version w/ sport.db n friends - why? why not?
5
5
  MAJOR = 2 ## todo: namespace inside version or something - why? why not??
6
6
  MINOR = 0
7
- PATCH = 5
7
+ PATCH = 6
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
metadata CHANGED
@@ -1,115 +1,141 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: worlddb
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
5
- prerelease:
4
+ version: 2.0.6
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-09 00:00:00.000000000 Z
11
+ date: 2014-11-16 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: props
16
- requirement: &75136710 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *75136710
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: logutils
27
- requirement: &75136360 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *75136360
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: textutils
38
- requirement: &75135990 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - ">="
42
46
  - !ruby/object:Gem::Version
43
47
  version: 0.9.9
44
48
  type: :runtime
45
49
  prerelease: false
46
- version_requirements: *75135990
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.9
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: tagutils
49
- requirement: &75135720 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - ">="
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  type: :runtime
56
63
  prerelease: false
57
- version_requirements: *75135720
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: gli
60
- requirement: &75135460 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
- - - ! '>='
73
+ - - ">="
64
74
  - !ruby/object:Gem::Version
65
75
  version: '2.9'
66
76
  type: :runtime
67
77
  prerelease: false
68
- version_requirements: *75135460
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '2.9'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rubyzip
71
- requirement: &75135230 !ruby/object:Gem::Requirement
72
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
73
86
  requirements:
74
- - - ! '>='
87
+ - - ">="
75
88
  - !ruby/object:Gem::Version
76
89
  version: '0'
77
90
  type: :runtime
78
91
  prerelease: false
79
- version_requirements: *75135230
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
80
97
  - !ruby/object:Gem::Dependency
81
98
  name: activerecord
82
- requirement: &75134990 !ruby/object:Gem::Requirement
83
- none: false
99
+ requirement: !ruby/object:Gem::Requirement
84
100
  requirements:
85
- - - ! '>='
101
+ - - ">="
86
102
  - !ruby/object:Gem::Version
87
103
  version: '0'
88
104
  type: :runtime
89
105
  prerelease: false
90
- version_requirements: *75134990
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
91
111
  - !ruby/object:Gem::Dependency
92
112
  name: rdoc
93
- requirement: &75132620 !ruby/object:Gem::Requirement
94
- none: false
113
+ requirement: !ruby/object:Gem::Requirement
95
114
  requirements:
96
- - - ~>
115
+ - - "~>"
97
116
  - !ruby/object:Gem::Version
98
117
  version: '4.0'
99
118
  type: :development
100
119
  prerelease: false
101
- version_requirements: *75132620
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '4.0'
102
125
  - !ruby/object:Gem::Dependency
103
126
  name: hoe
104
- requirement: &75132200 !ruby/object:Gem::Requirement
105
- none: false
127
+ requirement: !ruby/object:Gem::Requirement
106
128
  requirements:
107
- - - ~>
129
+ - - "~>"
108
130
  - !ruby/object:Gem::Version
109
131
  version: '3.13'
110
132
  type: :development
111
133
  prerelease: false
112
- version_requirements: *75132200
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.13'
113
139
  description: worlddb - world.db command line tool
114
140
  email: openmundi@googlegroups.com
115
141
  executables:
@@ -120,6 +146,7 @@ extra_rdoc_files:
120
146
  - Manifest.txt
121
147
  - README.md
122
148
  files:
149
+ - ".gemtest"
123
150
  - HISTORY.md
124
151
  - Manifest.txt
125
152
  - README.md
@@ -167,33 +194,31 @@ files:
167
194
  - test/test_model_country.rb
168
195
  - test/test_model_region.rb
169
196
  - test/test_models.rb
170
- - .gemtest
171
197
  homepage: https://github.com/worlddb/world.db.ruby
172
198
  licenses:
173
199
  - Public Domain
200
+ metadata: {}
174
201
  post_install_message:
175
202
  rdoc_options:
176
- - --main
203
+ - "--main"
177
204
  - README.md
178
205
  require_paths:
179
206
  - lib
180
207
  required_ruby_version: !ruby/object:Gem::Requirement
181
- none: false
182
208
  requirements:
183
- - - ! '>='
209
+ - - ">="
184
210
  - !ruby/object:Gem::Version
185
211
  version: 1.9.2
186
212
  required_rubygems_version: !ruby/object:Gem::Requirement
187
- none: false
188
213
  requirements:
189
- - - ! '>='
214
+ - - ">="
190
215
  - !ruby/object:Gem::Version
191
216
  version: '0'
192
217
  requirements: []
193
218
  rubyforge_project:
194
- rubygems_version: 1.8.17
219
+ rubygems_version: 2.4.2
195
220
  signing_key:
196
- specification_version: 3
221
+ specification_version: 4
197
222
  summary: worlddb - world.db command line tool
198
223
  test_files:
199
224
  - test/test_model_comp.rb