worlddb 1.3.0 → 1.4.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/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: