worlddb 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -56,7 +56,8 @@ namespace :dev do
56
56
  end
57
57
 
58
58
  task :env => BUILD_DIR do
59
- require './lib/worlddb.rb'
59
+ require 'worlddb' ### NB: for local testing use rake -I ./lib dev:test e.g. do NOT forget to add -I ./lib
60
+ require 'logutils/db'
60
61
 
61
62
  LogUtils::Logger.root.level = :info
62
63
 
@@ -65,6 +66,7 @@ namespace :dev do
65
66
  end
66
67
 
67
68
  task :create => :env do
69
+ LogDb.create
68
70
  WorldDB.create
69
71
  end
70
72
 
@@ -69,27 +69,16 @@ module WorldDB
69
69
  end
70
70
  end
71
71
 
72
- def self.read_all( include_path ) # load all builtins (using plain text reader); helper for convenience
73
- reader = Reader.new
74
72
 
75
- # too big for heroku free db plan (10,000 record limit)
76
- # - sorry, can't load by default
77
- fixture_excludes = [
78
- 'america/ve/cities'
79
- ]
80
-
81
- ary = Fixtures.all - fixture_excludes
82
-
83
- ary.each do |name|
84
- reader.load( name, include_path )
85
- end # each name
86
- end # method read_all
87
-
88
-
89
73
  def self.read_setup( setup, include_path )
90
- ## fix: to be done (see sport.db.ruby)
74
+ reader = Reader.new
75
+ reader.load_setup( setup, include_path )
91
76
  end
92
77
 
78
+ def self.read_all( include_path ) # load all builtins (using plain text reader); helper for convenience
79
+ read_setup( 'setups/all', include_path )
80
+ end # method read_all
81
+
93
82
 
94
83
  # delete ALL records (use with care!)
95
84
  def self.delete!
@@ -40,129 +40,3 @@ def find_world_db_path_from_gemfile_gitref!
40
40
 
41
41
  cand
42
42
  end
43
-
44
-
45
-
46
- module WorldDB
47
-
48
- module Fixtures # use shortcut/alias Fx?
49
-
50
- def self.all # all builtin fixtures; helper for covenience
51
- tag_fixtures +
52
- country_fixtures +
53
- lang_fixtures +
54
- africa_fixtures +
55
- america_fixtures +
56
- europe_fixtures +
57
- asia_fixtures +
58
- oceania_fixtures
59
- end
60
-
61
- def self.tag_fixtures
62
- ['tags.1', 'tags.3']
63
- end
64
-
65
- def self.country_fixtures
66
- ['africa/countries',
67
- 'america/countries',
68
- 'asia/countries',
69
- 'europe/countries',
70
- 'oceania/countries']
71
- end
72
-
73
- def self.lang_fixtures
74
- ['langs',
75
- 'africa/3_more/lang',
76
- 'america/3_more/lang',
77
- 'asia/3_more/lang',
78
- 'europe/3_more/lang',
79
- 'oceania/3_more/lang'
80
- ]
81
- end
82
-
83
- def self.africa_fixtures
84
- ['1_codes/fifa',
85
- '1_codes/internet',
86
- '1_codes/iso3'].map { |path| "africa/#{path}" }
87
- end
88
-
89
- def self.america_fixtures
90
- ['1_codes/fifa',
91
- '1_codes/internet',
92
- '1_codes/iso3',
93
- '1_codes/motor',
94
- 'br/regions',
95
- 'ca/regions',
96
- 'ca/cities',
97
- 'mx/regions',
98
- 'mx/cities',
99
- 'us/regions',
100
- 'us/cities',
101
- 've/regions',
102
- 've/cities'].map { |path| "america/#{path}" }
103
- end
104
-
105
- def self.asia_fixtures
106
- ['1_codes/fifa',
107
- '1_codes/internet',
108
- '1_codes/iso3',
109
- 'jp/cities'].map { |path| "asia/#{path}" }
110
- end
111
-
112
- def self.europe_fixtures
113
- ['1_codes/fifa',
114
- '1_codes/internet',
115
- '1_codes/iso3',
116
- '1_codes/motor',
117
- 'at/regions',
118
- 'at/cities',
119
- 'be/regions',
120
- 'be/cities',
121
- 'bg/cities',
122
- 'by/cities',
123
- 'ch/cities',
124
- 'cy/cities',
125
- 'cz/regions',
126
- 'cz/cities',
127
- 'de/regions',
128
- 'de/cities',
129
- 'dk/cities',
130
- 'ee/cities',
131
- 'en/regions',
132
- 'en/cities',
133
- 'es/regions',
134
- 'es/cities',
135
- 'fi/cities',
136
- 'fr/regions',
137
- 'fr/cities',
138
- 'gr/cities',
139
- 'hr/cities',
140
- 'hu/cities',
141
- 'ie/cities',
142
- 'it/cities',
143
- 'lt/cities',
144
- 'lv/cities',
145
- 'nl/cities',
146
- 'no/cities',
147
- 'pl/cities',
148
- 'pt/cities',
149
- 'ro/cities',
150
- 'rs/cities',
151
- 'ru/cities',
152
- 'sc/cities',
153
- 'se/cities',
154
- 'tr/cities',
155
- 'ua/cities',
156
- 'wa/cities'].map { |path| "europe/#{path}" }
157
- end
158
-
159
- def self.oceania_fixtures
160
- ['1_codes/fifa',
161
- '1_codes/internet',
162
- '1_codes/iso3',
163
- 'au/cities'].map { |path| "oceania/#{path}" }
164
- end
165
-
166
- end # module Fixtures
167
-
168
- end # module WorldDB
@@ -16,6 +16,64 @@ class Reader
16
16
  end
17
17
 
18
18
 
19
+ def load_setup( setup, include_path )
20
+ ary = load_fixture_setup( setup, include_path )
21
+
22
+ ### fix/todo:
23
+ # use to setups - use comment to remove fixtures
24
+
25
+ # too big for heroku free db plan (10,000 record limit)
26
+ # - sorry, can't load by default
27
+ fixture_excludes = [
28
+ 'south-america/ve/cities'
29
+ ]
30
+
31
+ ary = ary - fixture_excludes
32
+
33
+ ary.each do |name|
34
+ load( name, include_path )
35
+ end
36
+ end # method load_setup
37
+
38
+
39
+ ## fix/todo: rename ??
40
+ def load_fixture_setup( name, include_path )
41
+
42
+ ## todo/fix: cleanup quick and dirty code
43
+
44
+ path = "#{include_path}/#{name}.yml"
45
+
46
+ logger.info "parsing data '#{name}' (#{path})..."
47
+
48
+ text = File.read_utf8( path )
49
+
50
+ hash = YAML.load( text )
51
+
52
+ ### build up array for fixtures from hash
53
+
54
+ ary = []
55
+
56
+ hash.each do |key_wild, value_wild|
57
+ key = key_wild.to_s.strip
58
+
59
+ logger.debug "yaml key:#{key_wild.class.name} >>#{key}<<, value:#{value_wild.class.name} >>#{value_wild}<<"
60
+
61
+ if value_wild.kind_of?( String ) # assume single fixture name
62
+ ary << value_wild
63
+ elsif value_wild.kind_of?( Array ) # assume array of fixture names as strings
64
+ ary = ary + value_wild
65
+ else
66
+ logger.error "unknow fixture type in setup (yaml key:#{key_wild.class.name} >>#{key}<<, value:#{value_wild.class.name} >>#{value_wild}<<); skipping"
67
+ end
68
+ end
69
+
70
+ logger.debug "fixture setup:"
71
+ logger.debug ary.to_json
72
+
73
+ ary
74
+ end # load_fixture_setup
75
+
76
+
19
77
  def load( name, include_path )
20
78
 
21
79
  if name =~ /^lang/
@@ -32,9 +90,12 @@ class Reader
32
90
  load_xxx( 'motor', name, include_path )
33
91
  elsif name =~ /^tag.*\.(\d)$/
34
92
  load_tags( name, include_path, :grade => $1.to_i )
35
- elsif name =~ /^([a-z]{3,})\/countries/ # e.g. africa/countries or america/countries
93
+ elsif name =~ /^([a-z][a-z\-]+[a-z])\/countries/ # e.g. africa/countries or america/countries
94
+ ### NB: continent changed to regions (e.g. middle-east, caribbean, north-america, etc.)
95
+ ### fix/cleanup/todo:
36
96
  ## auto-add continent (from folder structure) as tag
37
- load_countries( name, include_path, :tags => $1 )
97
+ ## load_countries( name, include_path, :tags => $1 )
98
+ load_countries( name, include_path )
38
99
  elsif name =~ /\/([a-z]{2})\/cities/
39
100
  ## auto-add required country code (from folder structure)
40
101
  load_cities( $1, name, include_path )
@@ -1,4 +1,4 @@
1
1
 
2
2
  module WorldDB
3
- VERSION = '1.3.0' # sync version w/ sport.db - why? why not?
3
+ VERSION = '1.4.0' # sync version w/ sport.db - why? why not?
4
4
  end
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.3.0
4
+ version: 1.4.0
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-02-24 00:00:00.000000000 Z
12
+ date: 2013-02-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: textutils
16
- requirement: &73677590 !ruby/object:Gem::Requirement
16
+ requirement: &73513430 !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: *73677590
24
+ version_requirements: *73513430
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: commander
27
- requirement: &73677370 !ruby/object:Gem::Requirement
27
+ requirement: &73513210 !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: *73677370
35
+ version_requirements: *73513210
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activerecord
38
- requirement: &73677160 !ruby/object:Gem::Requirement
38
+ requirement: &73513000 !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: *73677160
46
+ version_requirements: *73513000
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rdoc
49
- requirement: &73676940 !ruby/object:Gem::Requirement
49
+ requirement: &73512780 !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: *73676940
57
+ version_requirements: *73512780
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: hoe
60
- requirement: &73676720 !ruby/object:Gem::Requirement
60
+ requirement: &73512560 !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: *73676720
68
+ version_requirements: *73512560
69
69
  description: worlddb - world.db command line tool
70
70
  email: opensport@googlegroups.com
71
71
  executables: