sportdb 1.8.22 → 1.8.23
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/Manifest.txt +6 -0
- data/Rakefile +2 -0
- data/bin/sportdb +0 -0
- data/lib/sportdb.rb +33 -0
- data/lib/sportdb/cli/main.rb +2 -0
- data/lib/sportdb/deleter.rb +0 -1
- data/lib/sportdb/matcher.rb +4 -0
- data/lib/sportdb/models/forward.rb +12 -2
- data/lib/sportdb/models/goal.rb +1 -1
- data/lib/sportdb/models/person.rb +10 -58
- data/lib/sportdb/models/record.rb +1 -1
- data/lib/sportdb/models/roster.rb +1 -1
- data/lib/sportdb/reader.rb +9 -8
- data/lib/sportdb/schema.rb +7 -21
- data/lib/sportdb/stats.rb +3 -1
- data/lib/sportdb/version.rb +1 -1
- data/test/data/world-cup/1974/cup.yml +35 -0
- data/test/data/world-cup/1974/cup_finals.txt +14 -0
- data/test/data/world-cup/1974/cup_i.txt +55 -0
- data/test/data/world-cup/1974/cup_ii.txt +34 -0
- data/test/data/world-cup/seasons_1974.txt +5 -0
- data/test/data/world-cup/teams_1974.txt +29 -0
- data/test/helper.rb +9 -54
- data/test/test_round_auto.rb +100 -47
- metadata +107 -45
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 7aa8a4205419c3506fc1527e6cf45ca56d4bfcb8
|
|
4
|
+
data.tar.gz: bed9fcb72a3f0f931048afb1c348f4d24a224dc0
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 2b16a61eb98bd836272199997275f8dd08989bb2501a8939c961208367566ab8a99cb4198f563b027249523f6ad247a781a65a6f6a0602ae6b7b9ed5b17082cd
|
|
7
|
+
data.tar.gz: 167a8ec86e1b0f8069e6f02ae7eff72fb9acc08ee1b31222d1786f4d3d3f80e55a625f4b50c377528ac57607932edf216964225caffb254adf8e52cacff53ce2
|
data/Manifest.txt
CHANGED
|
@@ -116,13 +116,19 @@ test/data/world-cup/1954/cup.txt
|
|
|
116
116
|
test/data/world-cup/1954/cup.yml
|
|
117
117
|
test/data/world-cup/1962/cup.txt
|
|
118
118
|
test/data/world-cup/1962/cup.yml
|
|
119
|
+
test/data/world-cup/1974/cup.yml
|
|
120
|
+
test/data/world-cup/1974/cup_finals.txt
|
|
121
|
+
test/data/world-cup/1974/cup_i.txt
|
|
122
|
+
test/data/world-cup/1974/cup_ii.txt
|
|
119
123
|
test/data/world-cup/leagues.txt
|
|
120
124
|
test/data/world-cup/seasons_1930.txt
|
|
121
125
|
test/data/world-cup/seasons_1954.txt
|
|
122
126
|
test/data/world-cup/seasons_1962.txt
|
|
127
|
+
test/data/world-cup/seasons_1974.txt
|
|
123
128
|
test/data/world-cup/teams_1930.txt
|
|
124
129
|
test/data/world-cup/teams_1954.txt
|
|
125
130
|
test/data/world-cup/teams_1962.txt
|
|
131
|
+
test/data/world-cup/teams_1974.txt
|
|
126
132
|
test/helper.rb
|
|
127
133
|
test/test_changes.rb
|
|
128
134
|
test/test_cursor.rb
|
data/Rakefile
CHANGED
data/bin/sportdb
CHANGED
|
File without changes
|
data/lib/sportdb.rb
CHANGED
|
@@ -14,14 +14,23 @@ require 'logger' ## todo/fix: no longer needed - replaced by logutil
|
|
|
14
14
|
require 'fileutils'
|
|
15
15
|
require 'erb'
|
|
16
16
|
|
|
17
|
+
|
|
17
18
|
# rubygems / 3rd party libs
|
|
18
19
|
|
|
19
20
|
require 'active_record' ## todo: add sqlite3? etc.
|
|
21
|
+
require 'activerecord/utils' # check - if dependency on logutils? or props? etc let others go first
|
|
20
22
|
|
|
21
23
|
require 'logutils'
|
|
24
|
+
require 'logutils/db' # NB: explict require required for LogDb (NOT automatic)
|
|
25
|
+
|
|
22
26
|
require 'textutils'
|
|
27
|
+
require 'tagutils'
|
|
28
|
+
|
|
29
|
+
require 'props'
|
|
30
|
+
require 'props/db' # NB: explict require required for ConfDb (NOT automatic) - move to textutils/deb - why/why not??
|
|
23
31
|
|
|
24
32
|
require 'worlddb'
|
|
33
|
+
require 'persondb'
|
|
25
34
|
|
|
26
35
|
require 'fetcher' # for fetching/downloading fixtures via HTTP/HTTPS etc.
|
|
27
36
|
|
|
@@ -206,10 +215,34 @@ module SportDb
|
|
|
206
215
|
Stats.new.tables
|
|
207
216
|
end
|
|
208
217
|
|
|
218
|
+
### fix:
|
|
219
|
+
## remove - use ConfDb.dump or similar -- add api depreciated
|
|
209
220
|
def self.props
|
|
210
221
|
Stats.new.props
|
|
211
222
|
end
|
|
212
223
|
|
|
224
|
+
def self.setup_in_memory_db
|
|
225
|
+
# Database Setup & Config
|
|
226
|
+
|
|
227
|
+
ActiveRecord::Base.logger = Logger.new( STDOUT )
|
|
228
|
+
## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
|
|
229
|
+
|
|
230
|
+
## NB: every connect will create a new empty in memory db
|
|
231
|
+
ActiveRecord::Base.establish_connection(
|
|
232
|
+
adapter: 'sqlite3',
|
|
233
|
+
database: ':memory:' )
|
|
234
|
+
|
|
235
|
+
## build schema
|
|
236
|
+
LogDb.create
|
|
237
|
+
ConfDb.create
|
|
238
|
+
TagDb.create
|
|
239
|
+
WorldDb.create
|
|
240
|
+
PersonDb.create
|
|
241
|
+
SportDb.create
|
|
242
|
+
|
|
243
|
+
## read builtins - why? why not?
|
|
244
|
+
SportDb.read_builtin
|
|
245
|
+
end # setup_in_memory_db (using SQLite :memory:)
|
|
213
246
|
|
|
214
247
|
|
|
215
248
|
def self.load_plugins
|
data/lib/sportdb/cli/main.rb
CHANGED
|
@@ -98,6 +98,7 @@ command [:create] do |c|
|
|
|
98
98
|
ConfDb.create
|
|
99
99
|
TagDb.create
|
|
100
100
|
WorldDb.create
|
|
101
|
+
PersonDb.create
|
|
101
102
|
SportDb.create
|
|
102
103
|
|
|
103
104
|
SportDb.read_builtin # e.g. seasons.txt etc
|
|
@@ -131,6 +132,7 @@ command [:setup,:s] do |c|
|
|
|
131
132
|
ConfDb.create
|
|
132
133
|
TagDb.create
|
|
133
134
|
WorldDb.create
|
|
135
|
+
PersonDb.create
|
|
134
136
|
SportDb.create
|
|
135
137
|
|
|
136
138
|
SportDb.read_builtin # e.g. seasons.txt etc
|
data/lib/sportdb/deleter.rb
CHANGED
data/lib/sportdb/matcher.rb
CHANGED
|
@@ -22,6 +22,10 @@ module Matcher
|
|
|
22
22
|
match_xxx_for_country( name, 'skiers', &blk )
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
def match_players_for_country( name, &blk )
|
|
26
|
+
match_xxx_for_country( name, 'players', &blk )
|
|
27
|
+
end
|
|
28
|
+
|
|
25
29
|
def match_stadiums_for_country( name, &blk )
|
|
26
30
|
match_xxx_for_country( name, 'stadiums', &blk )
|
|
27
31
|
end
|
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
module SportDb
|
|
6
6
|
module Model
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Prop = ConfDb::Model::Prop
|
|
9
9
|
|
|
10
|
+
## todo: why? why not use include WorldDb::Models here???
|
|
10
11
|
Continent = WorldDb::Model::Continent
|
|
11
12
|
Country = WorldDb::Model::Country
|
|
12
13
|
Region = WorldDb::Model::Region
|
|
13
14
|
City = WorldDb::Model::City
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
Person = PersonDb::Model::Person
|
|
16
17
|
|
|
17
18
|
## nb: for now only team and league use worlddb tables
|
|
18
19
|
# e.g. with belongs_to assoc (country,region)
|
|
@@ -20,6 +21,7 @@ module SportDb
|
|
|
20
21
|
class Team < ActiveRecord::Base ; end
|
|
21
22
|
class League < ActiveRecord::Base ; end
|
|
22
23
|
class Ground < ActiveRecord::Base ; end
|
|
24
|
+
class Goal < ActiveRecord::Base ; end
|
|
23
25
|
|
|
24
26
|
end
|
|
25
27
|
end
|
|
@@ -38,3 +40,11 @@ module WorldDb
|
|
|
38
40
|
end
|
|
39
41
|
end
|
|
40
42
|
|
|
43
|
+
|
|
44
|
+
module PersonDb
|
|
45
|
+
module Model
|
|
46
|
+
Goal = SportDb::Model::Goal
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
data/lib/sportdb/models/goal.rb
CHANGED
|
@@ -1,69 +1,21 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class Person < ActiveRecord::Base
|
|
7
|
-
self.table_name = 'persons' # avoids possible "smart" plural inflection to people
|
|
8
|
-
|
|
9
|
-
has_many :goals
|
|
10
|
-
|
|
11
|
-
belongs_to :country, :class_name => 'WorldDb::Model::Country', :foreign_key => 'country_id'
|
|
12
|
-
|
|
2
|
+
#### note ---
|
|
3
|
+
## uses PersonDb namespace!!!!!
|
|
4
|
+
#
|
|
5
|
+
# move to models/person/person.rb - why? why not??
|
|
13
6
|
|
|
14
|
-
def title() name end # alias for name
|
|
15
|
-
def title=(value) self.name = value end # alias for name
|
|
16
7
|
|
|
8
|
+
module PersonDb
|
|
9
|
+
module Model
|
|
17
10
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
## fix: add/configure logger for ActiveRecord!!!
|
|
21
|
-
logger = LogKernel::Logger.root
|
|
22
|
-
|
|
23
|
-
## check optional values
|
|
24
|
-
values.each_with_index do |value, index|
|
|
25
|
-
if value =~ /^[a-z]{2}$/ ## assume two-letter country key e.g. at,de,mx,etc.
|
|
26
|
-
value_country = Country.find_by_key!( value )
|
|
27
|
-
new_attributes[ :country_id ] = value_country.id
|
|
28
|
-
elsif value =~ /^[A-Z]{3}$/ ## assume three-letter code e.g. AUS, MAL, etc.
|
|
29
|
-
new_attributes[ :code ] = value
|
|
30
|
-
elsif value =~ /^([0-9]{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s([0-9]{4})$/ ## assume birthday
|
|
31
|
-
value_date_str = '%02d/%s/%d' % [$1, $2, $3] ## move to matcher!!
|
|
32
|
-
value_date = Date.strptime( value_date_str, '%d/%b/%Y' ) ## %b - abbreviated month name (e.g. Jan,Feb, etc.)
|
|
33
|
-
logger.debug " birthday #{value_date_str} - #{value_date}"
|
|
34
|
-
new_attributes[ :born_at ] = value_date
|
|
35
|
-
## todo: convert to date
|
|
36
|
-
else
|
|
37
|
-
## todo: assume title2 ??
|
|
38
|
-
## assume title2 if title2 is empty (not already in use)
|
|
39
|
-
## and if it title2 contains at least two letter e.g. [a-zA-Z].*[a-zA-Z]
|
|
40
|
-
# issue warning: unknown type for value
|
|
41
|
-
logger.warn "unknown type for value >#{value}< - key #{new_attributes[:key]}"
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
## quick hack: set nationality_id if not present to country_id
|
|
46
|
-
if new_attributes[ :nationality_id ].blank?
|
|
47
|
-
new_attributes[ :nationality_id ] = new_attributes[ :country_id ]
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
rec = Person.find_by_key( new_attributes[ :key ] )
|
|
51
|
-
if rec.present?
|
|
52
|
-
logger.debug "update Person #{rec.id}-#{rec.key}:"
|
|
53
|
-
else
|
|
54
|
-
logger.debug "create Person:"
|
|
55
|
-
rec = Person.new
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
logger.debug new_attributes.to_json
|
|
59
|
-
|
|
60
|
-
rec.update_attributes!( new_attributes )
|
|
61
|
-
end # create_or_update_from_values
|
|
11
|
+
### extends "basic" person model in PersonDb
|
|
12
|
+
class Person
|
|
62
13
|
|
|
14
|
+
has_many :goals
|
|
63
15
|
|
|
64
16
|
end # class Person
|
|
65
17
|
|
|
66
18
|
|
|
67
19
|
end # module Model
|
|
68
|
-
end # module
|
|
20
|
+
end # module PersonDb
|
|
69
21
|
|
data/lib/sportdb/reader.rb
CHANGED
|
@@ -74,6 +74,10 @@ class Reader
|
|
|
74
74
|
reader.read( name )
|
|
75
75
|
elsif name =~ /^drivers/ # e.g. drivers.txt in formula1.db
|
|
76
76
|
load_persons( name )
|
|
77
|
+
elsif match_players_for_country( name ) do |country_key|
|
|
78
|
+
country = Country.find_by_key!( country_key )
|
|
79
|
+
load_persons( name, country_id: country.id )
|
|
80
|
+
end
|
|
77
81
|
elsif match_skiers_for_country( name ) do |country_key| # name =~ /^([a-z]{2})\/skiers/
|
|
78
82
|
# auto-add country code (from folder structure) for country-specific skiers (persons)
|
|
79
83
|
# e.g. at/skiers or at-austria/skiers.men
|
|
@@ -139,16 +143,13 @@ class Reader
|
|
|
139
143
|
|
|
140
144
|
|
|
141
145
|
####
|
|
142
|
-
|
|
146
|
+
# fix: move to persondb for (re)use
|
|
143
147
|
|
|
144
148
|
def load_persons( name, more_attribs={} )
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
reader.
|
|
149
|
-
Person.create_or_update_from_values( new_attributes, values )
|
|
150
|
-
end # each lines
|
|
151
|
-
|
|
149
|
+
reader = PersonDb::PersonReader.new( include_path )
|
|
150
|
+
## fix: add more_attribs !!!!! -- check other readers as an example
|
|
151
|
+
## - gets added to new or read??
|
|
152
|
+
reader.read( name )
|
|
152
153
|
end # load_persons
|
|
153
154
|
|
|
154
155
|
|
data/lib/sportdb/schema.rb
CHANGED
|
@@ -27,7 +27,8 @@ end
|
|
|
27
27
|
|
|
28
28
|
add_index :teams, :key, unique: true
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
###########
|
|
31
|
+
# check: use table (rename to) venues / stadiums - why? why not?
|
|
31
32
|
create_table :grounds do |t|
|
|
32
33
|
t.string :key, null: false # import/export key
|
|
33
34
|
t.string :title, null: false
|
|
@@ -53,25 +54,6 @@ end
|
|
|
53
54
|
add_index :grounds, :key, unique: true
|
|
54
55
|
|
|
55
56
|
|
|
56
|
-
create_table :persons do |t| # use people ? instead of persons (person/persons makes it easier?)
|
|
57
|
-
t.string :key, null: false # import/export key
|
|
58
|
-
t.string :name, null: false
|
|
59
|
-
t.string :synonyms # comma separated list of synonyms
|
|
60
|
-
t.string :code # three letter code (short title)
|
|
61
|
-
|
|
62
|
-
## todo: add gender flag (male/female -man/lady how?)
|
|
63
|
-
t.date :born_at # optional date of birth (birthday)
|
|
64
|
-
## todo: add country of birth might not be the same as nationality
|
|
65
|
-
|
|
66
|
-
t.references :city
|
|
67
|
-
t.references :region
|
|
68
|
-
t.references :country, null: false
|
|
69
|
-
|
|
70
|
-
t.references :nationality, null: false # by default assume same as country of birth (see above)
|
|
71
|
-
|
|
72
|
-
t.timestamps
|
|
73
|
-
end
|
|
74
|
-
|
|
75
57
|
# join table: person+game(team1+team2+event(season+league))
|
|
76
58
|
create_table :goals do |t|
|
|
77
59
|
t.references :person, null: false
|
|
@@ -139,6 +121,9 @@ create_table :records do |t| # use TimeRecord? instead of simple record
|
|
|
139
121
|
end
|
|
140
122
|
|
|
141
123
|
|
|
124
|
+
################
|
|
125
|
+
# fix/todo: rename to squads / lineups
|
|
126
|
+
|
|
142
127
|
# join table -> person+team+event(season+league)
|
|
143
128
|
create_table :rosters do |t| # use squads as an alternative name? why? why not??
|
|
144
129
|
t.references :person, null: false
|
|
@@ -200,7 +185,8 @@ end
|
|
|
200
185
|
|
|
201
186
|
add_index :groups, :event_id # fk event_id index
|
|
202
187
|
|
|
203
|
-
|
|
188
|
+
###########################
|
|
189
|
+
# fix: rename table to matches
|
|
204
190
|
create_table :games do |t|
|
|
205
191
|
t.string :key # import/export key
|
|
206
192
|
t.references :round, null: false
|
data/lib/sportdb/stats.rb
CHANGED
|
@@ -13,12 +13,14 @@ module SportDb
|
|
|
13
13
|
|
|
14
14
|
puts " #{Track.count} tracks / #{Race.count} races (track+event recs) / #{Run.count} runs"
|
|
15
15
|
puts " #{Record.count} records (race|run+person recs)"
|
|
16
|
-
puts " #{
|
|
16
|
+
puts " #{Roster.count} rosters (person+team+event recs)"
|
|
17
17
|
puts " #{Goal.count} goals (person+game recs)"
|
|
18
18
|
|
|
19
19
|
puts " #{Ground.count} grounds|stadiums"
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
## fix/chek:
|
|
23
|
+
# move to Prop gem / reuse code from Prop gem
|
|
22
24
|
def props
|
|
23
25
|
puts "Props:"
|
|
24
26
|
Prop.order( 'created_at asc' ).all.each do |prop|
|
data/lib/sportdb/version.rb
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
##################################################
|
|
2
|
+
# World Cup 1974 West Germany, 13 June - 7 July
|
|
3
|
+
|
|
4
|
+
league: world
|
|
5
|
+
season: 1974
|
|
6
|
+
start_at: 1974-06-13
|
|
7
|
+
|
|
8
|
+
fixtures:
|
|
9
|
+
- cup_i
|
|
10
|
+
- cup_ii
|
|
11
|
+
- cup_finals
|
|
12
|
+
|
|
13
|
+
# 16 Teams
|
|
14
|
+
teams:
|
|
15
|
+
# -- Africa
|
|
16
|
+
- zai # Zaire
|
|
17
|
+
# -- Asia
|
|
18
|
+
- aus # Australia
|
|
19
|
+
# -- Europe
|
|
20
|
+
- bul # Bulgaria
|
|
21
|
+
- frg # West Germany
|
|
22
|
+
- gdr # East Germany
|
|
23
|
+
- ita # Italy
|
|
24
|
+
- ned # Netherlands
|
|
25
|
+
- pol # Poland
|
|
26
|
+
- sco # Scotland
|
|
27
|
+
- swe # Sweden
|
|
28
|
+
- yug # Yugoslavia
|
|
29
|
+
# -- North and Central America
|
|
30
|
+
- hai # Haiti
|
|
31
|
+
# -- South America
|
|
32
|
+
- arg # Argentina
|
|
33
|
+
- bra # Brazil
|
|
34
|
+
- chi # Chile
|
|
35
|
+
- uru # Uruguay
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
##################################################
|
|
2
|
+
# World Cup 1974 West Germany, 13 June - 7 July
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Match for third place
|
|
7
|
+
|
|
8
|
+
# fix: use Muenchen not Munich
|
|
9
|
+
(37) 6 July Brazil 0-1 Poland @ Olympiastadion, Munich
|
|
10
|
+
|
|
11
|
+
Final
|
|
12
|
+
|
|
13
|
+
(38) 7 July Netherlands 1-2 West Germany @ Olympiastadion, Munich
|
|
14
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
##################################################
|
|
2
|
+
# World Cup 1974 West Germany, 13 June - 7 July
|
|
3
|
+
|
|
4
|
+
Group 1 | East Germany West Germany Chile Australia
|
|
5
|
+
Group 2 | Yugoslavia Brazil Scotland Zaire
|
|
6
|
+
Group 3 | Netherlands Sweden Bulgaria Uruguay
|
|
7
|
+
Group 4 | Poland Argentina Italy Haiti
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Group 1:
|
|
11
|
+
|
|
12
|
+
(1) 14 June West Germany 1-0 Chile @ Olympiastadion, West Berlin
|
|
13
|
+
(2) 14 June East Germany 2-0 Australia @ Volksparkstadion, Hamburg
|
|
14
|
+
|
|
15
|
+
(9) 18 June Chile 1-1 East Germany @ Olympiastadion, West Berlin
|
|
16
|
+
(10) 18 June Australia 0-3 West Germany @ Volksparkstadion, Hamburg
|
|
17
|
+
|
|
18
|
+
(17) 22 June Australia 0-0 Chile @ Olympiastadion, West Berlin
|
|
19
|
+
(18) 22 June East Germany 1-0 West Germany @ Volksparkstadion, Hamburg
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
Group 2:
|
|
23
|
+
|
|
24
|
+
(3) 13 June Brazil 0-0 Yugoslavia @ Waldstadion, Frankfurt
|
|
25
|
+
(4) 14 June Zaire 0-2 Scotland @ Westfalenstadion, Dortmund
|
|
26
|
+
|
|
27
|
+
(11) 18 June Yugoslavia 9-0 Zaire @ Parkstadion, Gelsenkirchen
|
|
28
|
+
(12) 18 June Scotland 0-0 Brazil @ Waldstadion, Frankfurt
|
|
29
|
+
|
|
30
|
+
(19) 22 June Scotland 1-1 Yugoslavia @ Waldstadion, Frankfurt
|
|
31
|
+
(20) 22 June Zaire 0-3 Brazil @ Parkstadion, Gelsenkirchen
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
Group 3:
|
|
35
|
+
|
|
36
|
+
(5) 15 June Uruguay 0-2 Netherlands @ Niedersachsenstadion, Hanover
|
|
37
|
+
(6) 15 June Sweden 0-0 Bulgaria @ Rheinstadion, Düsseldorf
|
|
38
|
+
|
|
39
|
+
(13) 19 June Netherlands 0-0 Sweden @ Westfalenstadion, Dortmund
|
|
40
|
+
(14) 19 June Uruguay 1-1 Bulgaria @ Niedersachsenstadion, Hanover
|
|
41
|
+
|
|
42
|
+
(21) 23 June Netherlands 4-1 Bulgaria @ Westfalenstadion, Dortmund
|
|
43
|
+
(22) 23 June Sweden 3-0 Uruguay @ Rheinstadion, Düsseldorf
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
Group 4:
|
|
47
|
+
|
|
48
|
+
(7) 15 June Italy 3-1 Haiti @ Olympiastadion, Munich
|
|
49
|
+
(8) 15 June Poland 3-2 Argentina @ Neckarstadion, Stuttgart
|
|
50
|
+
|
|
51
|
+
(15) 19 June Haiti 0-7 Poland @ Olympiastadion, Munich
|
|
52
|
+
(16) 19 June Argentina 1-1 Italy @ Neckarstadion, Stuttgart
|
|
53
|
+
|
|
54
|
+
(23) 23 June Argentina 4-1 Haiti @ Olympiastadion, Munich
|
|
55
|
+
(24) 23 June Poland 2-1 Italy @ Neckarstadion, Stuttgart
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
##################################################
|
|
2
|
+
# World Cup 1974 West Germany, 13 June - 7 July
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#### Second Round
|
|
6
|
+
## todo/fix: add stage/add stage key to rounds
|
|
7
|
+
#
|
|
8
|
+
# Group A -> I
|
|
9
|
+
# Group B -> J - fix: use Group A,B etc.
|
|
10
|
+
|
|
11
|
+
Group I | Netherlands Brazil East Germany Argentina
|
|
12
|
+
Group J | West Germany Poland Sweden Yugoslavia
|
|
13
|
+
|
|
14
|
+
Group I:
|
|
15
|
+
|
|
16
|
+
(25) 26 June Brazil 1-0 East Germany @ Niedersachsenstadion, Hanover
|
|
17
|
+
(26) 26 June Netherlands 4-0 Argentina @ Parkstadion, Gelsenkirchen
|
|
18
|
+
|
|
19
|
+
(29) 30 June East Germany 0-2 Netherlands @ Parkstadion, Gelsenkirchen
|
|
20
|
+
(30) 30 June Argentina 1-2 Brazil @ Niedersachsenstadion, Hanover
|
|
21
|
+
|
|
22
|
+
(33) 3 July Argentina 1-1 East Germany @ Parkstadion, Gelsenkirchen
|
|
23
|
+
(34) 3 July Netherlands 2-0 Brazil @ Westfalenstadion, Dortmund
|
|
24
|
+
|
|
25
|
+
Group J:
|
|
26
|
+
|
|
27
|
+
(27) 26 June Yugoslavia 0-2 West Germany @ Rheinstadion, Düsseldorf
|
|
28
|
+
(28) 26 June Sweden 0-1 Poland @ Neckarstadion, Stuttgart
|
|
29
|
+
|
|
30
|
+
(31) 30 June West Germany 4-2 Sweden @ Rheinstadion, Düsseldorf
|
|
31
|
+
(32) 30 June Poland 2-1 Yugoslavia @ Waldstadion, Frankfurt
|
|
32
|
+
|
|
33
|
+
(35) 3 July Poland 0-1 West Germany @ Waldstadion, Frankfurt
|
|
34
|
+
(36) 3 July Sweden 2-1 Yugoslavia @ Rheinstadion, Düsseldorf
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
########################
|
|
2
|
+
# 16 Teams
|
|
3
|
+
|
|
4
|
+
# -- Africa
|
|
5
|
+
zai, Zaire, ZAI, cd
|
|
6
|
+
|
|
7
|
+
# -- Asia
|
|
8
|
+
aus, Australia, AUS, au
|
|
9
|
+
|
|
10
|
+
# -- Europe
|
|
11
|
+
bul, Bulgaria, BUL, bg
|
|
12
|
+
frg, West Germany, FRG, de
|
|
13
|
+
gdr, East Germany, GDR, de
|
|
14
|
+
ita, Italy, ITA, it
|
|
15
|
+
ned, Netherlands, NED, nl
|
|
16
|
+
pol, Poland, POL, pl
|
|
17
|
+
sco, Scotland, SCO, sc
|
|
18
|
+
swe, Sweden, SWE, se
|
|
19
|
+
yug, Yugoslavia, YUG, rs
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# -- North and Central America
|
|
23
|
+
hai, Haiti, HAI, ht
|
|
24
|
+
|
|
25
|
+
# -- South America
|
|
26
|
+
arg, Argentina, ARG, ar
|
|
27
|
+
bra, Brazil, BRA, br
|
|
28
|
+
chi, Chile, CHI, cl
|
|
29
|
+
uru, Uruguay, URU, uy
|
data/test/helper.rb
CHANGED
|
@@ -7,67 +7,18 @@
|
|
|
7
7
|
require 'minitest/autorun'
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
require 'pp'
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
# ruby gems
|
|
15
|
-
|
|
16
|
-
require 'active_record'
|
|
17
|
-
|
|
18
|
-
require 'worlddb'
|
|
19
|
-
require 'logutils'
|
|
20
|
-
require 'logutils/db' # NB: explict require required for LogDb (not automatic)
|
|
21
|
-
require 'props/db' ## fix: use textutils/db in the future too ??
|
|
22
|
-
|
|
23
|
-
|
|
24
10
|
## our own code
|
|
25
11
|
|
|
26
12
|
require 'sportdb'
|
|
27
13
|
|
|
28
14
|
|
|
29
|
-
|
|
30
|
-
#
|
|
31
|
-
# for reuse
|
|
32
|
-
# --- move to sportdb/test.rb ???
|
|
33
|
-
# SportDb.setup_in_memory_db ??? why? why not?? or
|
|
34
|
-
# SportDb.setup_test_db - alias ??
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def setup_in_memory_db
|
|
39
|
-
# Database Setup & Config
|
|
40
|
-
|
|
41
|
-
db_config = {
|
|
42
|
-
adapter: 'sqlite3',
|
|
43
|
-
database: ':memory:'
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
pp db_config
|
|
47
|
-
|
|
48
|
-
ActiveRecord::Base.logger = Logger.new( STDOUT )
|
|
49
|
-
## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
|
|
50
|
-
|
|
51
|
-
## NB: every connect will create a new empty in memory db
|
|
52
|
-
ActiveRecord::Base.establish_connection( db_config )
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
## build schema
|
|
56
|
-
|
|
57
|
-
LogDb.create
|
|
58
|
-
ConfDb.create
|
|
59
|
-
TagDb.create
|
|
60
|
-
WorldDb.create
|
|
61
|
-
SportDb.create
|
|
62
|
-
|
|
63
|
-
SportDb.read_builtin
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
####
|
|
15
|
+
#####################
|
|
67
16
|
# Models shortcuts
|
|
68
17
|
|
|
69
18
|
Country = WorldDb::Model::Country
|
|
70
19
|
|
|
20
|
+
Person = PersonDb::Model::Person
|
|
21
|
+
|
|
71
22
|
League = SportDb::Model::League
|
|
72
23
|
Season = SportDb::Model::Season
|
|
73
24
|
Event = SportDb::Model::Event
|
|
@@ -77,7 +28,7 @@ Round = SportDb::Model::Round
|
|
|
77
28
|
Game = SportDb::Model::Game
|
|
78
29
|
GameCursor = SportDb::Model::GameCursor
|
|
79
30
|
|
|
80
|
-
|
|
31
|
+
####################
|
|
81
32
|
# Reader shortcuts
|
|
82
33
|
|
|
83
34
|
TeamReader = SportDb::TeamReader
|
|
@@ -86,4 +37,8 @@ LeagueReader = SportDb::LeagueReader
|
|
|
86
37
|
GameReader = SportDb::GameReader
|
|
87
38
|
|
|
88
39
|
|
|
89
|
-
|
|
40
|
+
#################################
|
|
41
|
+
# setup db -> schema / tables
|
|
42
|
+
|
|
43
|
+
SportDb.setup_in_memory_db
|
|
44
|
+
|
data/test/test_round_auto.rb
CHANGED
|
@@ -21,8 +21,10 @@ class TestRoundAuto < MiniTest::Unit::TestCase
|
|
|
21
21
|
|
|
22
22
|
def add_countries
|
|
23
23
|
countries = [
|
|
24
|
+
['cd', 'Congo DR', 'COD' ],
|
|
24
25
|
['kr', 'South Korea', 'KOR' ],
|
|
25
|
-
|
|
26
|
+
['au', 'Australia', 'AUS' ],
|
|
27
|
+
|
|
26
28
|
['ar', 'Argentina', 'ARG' ],
|
|
27
29
|
['br', 'Brazil', 'BRA' ],
|
|
28
30
|
['bo', 'Bolivia', 'BOL' ],
|
|
@@ -34,6 +36,7 @@ class TestRoundAuto < MiniTest::Unit::TestCase
|
|
|
34
36
|
|
|
35
37
|
['mx', 'Mexico', 'MEX' ],
|
|
36
38
|
['us', 'United States', 'USA' ],
|
|
39
|
+
['ht', 'Haiti', 'HAI' ],
|
|
37
40
|
|
|
38
41
|
['at', 'Austria', 'AUT' ],
|
|
39
42
|
['be', 'Belgium', 'BEL' ],
|
|
@@ -51,9 +54,11 @@ class TestRoundAuto < MiniTest::Unit::TestCase
|
|
|
51
54
|
['ch', 'Switzerland', 'SUI' ],
|
|
52
55
|
['sc', 'Scotland', 'SCO' ],
|
|
53
56
|
['tr', 'Turkey', 'TUR' ],
|
|
57
|
+
['nl', 'Netherlands', 'NED' ],
|
|
58
|
+
['pl', 'Poland', 'POL' ],
|
|
59
|
+
['se', 'Sweden', 'SWE' ],
|
|
54
60
|
]
|
|
55
61
|
|
|
56
|
-
|
|
57
62
|
countries.each do |country|
|
|
58
63
|
key = country[0]
|
|
59
64
|
name = country[1]
|
|
@@ -63,23 +68,89 @@ class TestRoundAuto < MiniTest::Unit::TestCase
|
|
|
63
68
|
end
|
|
64
69
|
|
|
65
70
|
|
|
66
|
-
def
|
|
71
|
+
def test_world_cup_1974
|
|
67
72
|
teamreader = TeamReader.new( SportDb.test_data_path )
|
|
68
|
-
teamreader.read( 'world-cup/
|
|
73
|
+
teamreader.read( 'world-cup/teams_1974' )
|
|
69
74
|
|
|
70
75
|
assert_equal 16, Team.count
|
|
71
76
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
seasonreader = SeasonReader.new( SportDb.test_data_path )
|
|
78
|
+
seasonreader.read( 'world-cup/seasons_1974')
|
|
79
|
+
|
|
80
|
+
assert_equal 1, Season.count
|
|
81
|
+
|
|
82
|
+
y = Season.find_by_key!( '1974' )
|
|
83
|
+
assert_equal '1974', y.title
|
|
84
|
+
|
|
85
|
+
leaguereader = LeagueReader.new( SportDb.test_data_path )
|
|
86
|
+
leaguereader.read( 'world-cup/leagues' )
|
|
87
|
+
|
|
88
|
+
assert_equal 1, League.count
|
|
89
|
+
|
|
90
|
+
l = League.find_by_key!( 'world' )
|
|
91
|
+
assert_equal 'World Cup', l.title
|
|
92
|
+
|
|
93
|
+
gamereader = GameReader.new( SportDb.test_data_path )
|
|
94
|
+
gamereader.read( 'world-cup/1974/cup' )
|
|
75
95
|
|
|
76
|
-
assert_equal
|
|
77
|
-
assert_equal 'Uruguay', uy.title
|
|
78
|
-
assert_equal 'Belgium', be.title
|
|
96
|
+
assert_equal 1, Event.count
|
|
79
97
|
|
|
80
|
-
|
|
81
|
-
|
|
98
|
+
w = Event.find_by_key!( 'world.1974' )
|
|
99
|
+
|
|
100
|
+
assert_equal 16, w.teams.count
|
|
101
|
+
assert_equal 38, w.games.count
|
|
102
|
+
assert_equal 12, w.rounds.count
|
|
103
|
+
|
|
104
|
+
rounds_exp = [
|
|
105
|
+
[1, 'Matchday 1', '1974-06-13', 1], # first group stage
|
|
106
|
+
[2, 'Matchday 2', '1974-06-14', 3],
|
|
107
|
+
[3, 'Matchday 3', '1974-06-15', 4],
|
|
108
|
+
[4, 'Matchday 4', '1974-06-18', 4],
|
|
109
|
+
[5, 'Matchday 5', '1974-06-19', 4],
|
|
110
|
+
[6, 'Matchday 6', '1974-06-22', 4],
|
|
111
|
+
[7, 'Matchday 7', '1974-06-23', 4],
|
|
112
|
+
[8, 'Matchday 8', '1974-06-26', 4], # second group stage
|
|
113
|
+
[9, 'Matchday 9', '1974-06-30', 4],
|
|
114
|
+
[10, 'Matchday 10', '1974-07-03', 4],
|
|
115
|
+
[11, 'Match for third place', '1974-07-06', 1], # finals
|
|
116
|
+
[12, 'Final', '1974-07-07', 1],
|
|
117
|
+
]
|
|
82
118
|
|
|
119
|
+
assert_rounds( rounds_exp )
|
|
120
|
+
|
|
121
|
+
#########################
|
|
122
|
+
## 2nd run
|
|
123
|
+
### try update (e.g. read again - should NOT create new rounds/games/teams)
|
|
124
|
+
#
|
|
125
|
+
# note: update only works if rounds get not deleted or added
|
|
126
|
+
# - (adding for updates works only at the end/tail - not at the beginning or inbetween, for example)
|
|
127
|
+
|
|
128
|
+
gamereader = GameReader.new( SportDb.test_data_path )
|
|
129
|
+
gamereader.read( 'world-cup/1974/cup' )
|
|
130
|
+
|
|
131
|
+
assert_equal 1, Event.count
|
|
132
|
+
|
|
133
|
+
w = Event.find_by_key!( 'world.1974' )
|
|
134
|
+
|
|
135
|
+
assert_equal 16, w.teams.count
|
|
136
|
+
assert_equal 38, w.games.count
|
|
137
|
+
assert_equal 12, w.rounds.count
|
|
138
|
+
|
|
139
|
+
assert_rounds( rounds_exp )
|
|
140
|
+
|
|
141
|
+
end # method test_world_cup_1974
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def test_world_cup_1954
|
|
145
|
+
teamreader = TeamReader.new( SportDb.test_data_path )
|
|
146
|
+
teamreader.read( 'world-cup/teams_1954' )
|
|
147
|
+
|
|
148
|
+
assert_equal 16, Team.count
|
|
149
|
+
|
|
150
|
+
assert_teams( [
|
|
151
|
+
[ 'bra', 'Brazil', 'BRA' ],
|
|
152
|
+
[ 'uru', 'Uruguay', 'URU' ],
|
|
153
|
+
[ 'bel', 'Belgium', 'BEL' ] ] )
|
|
83
154
|
|
|
84
155
|
seasonreader = SeasonReader.new( SportDb.test_data_path )
|
|
85
156
|
seasonreader.read( 'world-cup/seasons_1954')
|
|
@@ -134,17 +205,10 @@ class TestRoundAuto < MiniTest::Unit::TestCase
|
|
|
134
205
|
|
|
135
206
|
assert_equal 13, Team.count
|
|
136
207
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
assert_equal 'Argentina', ar.title
|
|
142
|
-
assert_equal 'Brazil', br.title
|
|
143
|
-
assert_equal 'Belgium', be.title
|
|
144
|
-
|
|
145
|
-
assert_equal 'ARG', ar.code
|
|
146
|
-
assert_equal 'BRA', br.code
|
|
147
|
-
|
|
208
|
+
assert_teams( [
|
|
209
|
+
[ 'arg', 'Argentina', 'ARG' ],
|
|
210
|
+
[ 'bra', 'Brazil', 'BRA' ],
|
|
211
|
+
[ 'bel', 'Belgium', 'BEL' ] ] )
|
|
148
212
|
|
|
149
213
|
seasonreader = SeasonReader.new( SportDb.test_data_path )
|
|
150
214
|
seasonreader.read( 'world-cup/seasons_1930')
|
|
@@ -191,19 +255,6 @@ class TestRoundAuto < MiniTest::Unit::TestCase
|
|
|
191
255
|
]
|
|
192
256
|
|
|
193
257
|
assert_rounds( rounds_exp )
|
|
194
|
-
|
|
195
|
-
##
|
|
196
|
-
# auto-numbered knock-out rounds
|
|
197
|
-
# r11 = Round.find_by_pos!( 11 )
|
|
198
|
-
|
|
199
|
-
# assert_equal 'Semi-finals', r11.title
|
|
200
|
-
# assert_equal 2, r11.games.count
|
|
201
|
-
|
|
202
|
-
# r12 = Round.find_by_pos!( 12 )
|
|
203
|
-
|
|
204
|
-
# assert_equal 'Final', r12.title
|
|
205
|
-
# assert_equal 1, r12.games.count
|
|
206
|
-
|
|
207
258
|
end # method test_world_cup_1930
|
|
208
259
|
|
|
209
260
|
|
|
@@ -213,17 +264,10 @@ class TestRoundAuto < MiniTest::Unit::TestCase
|
|
|
213
264
|
|
|
214
265
|
assert_equal 16, Team.count
|
|
215
266
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
assert_equal 'Argentina', ar.title
|
|
221
|
-
assert_equal 'Brazil', br.title
|
|
222
|
-
assert_equal 'Italy', it.title
|
|
223
|
-
|
|
224
|
-
assert_equal 'ARG', ar.code
|
|
225
|
-
assert_equal 'BRA', br.code
|
|
226
|
-
|
|
267
|
+
assert_teams( [
|
|
268
|
+
[ 'arg', 'Argentina', 'ARG' ],
|
|
269
|
+
[ 'bra', 'Brazil', 'BRA' ],
|
|
270
|
+
[ 'ita', 'Italy', 'ITA' ] ] )
|
|
227
271
|
|
|
228
272
|
seasonreader = SeasonReader.new( SportDb.test_data_path )
|
|
229
273
|
seasonreader.read( 'world-cup/seasons_1962')
|
|
@@ -313,5 +357,14 @@ class TestRoundAuto < MiniTest::Unit::TestCase
|
|
|
313
357
|
end
|
|
314
358
|
end # method assert_rounds
|
|
315
359
|
|
|
360
|
+
def assert_teams( teams_exp )
|
|
361
|
+
teams_exp.each do |team_exp|
|
|
362
|
+
team = Team.find_by_key!( team_exp[0] )
|
|
363
|
+
|
|
364
|
+
assert_equal team_exp[1], team.title
|
|
365
|
+
assert_equal team_exp[2], team.code
|
|
366
|
+
end
|
|
367
|
+
end # method assert_teams
|
|
368
|
+
|
|
316
369
|
|
|
317
370
|
end # class TestRoundAuto
|
metadata
CHANGED
|
@@ -1,126 +1,183 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sportdb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.8.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 1.8.23
|
|
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-05-
|
|
11
|
+
date: 2014-05-19 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: props
|
|
16
|
-
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:
|
|
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:
|
|
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:
|
|
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:
|
|
39
|
-
none: false
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
40
44
|
requirements:
|
|
41
45
|
- - ! '>='
|
|
42
46
|
- !ruby/object:Gem::Version
|
|
43
47
|
version: '0'
|
|
44
48
|
type: :runtime
|
|
45
49
|
prerelease: false
|
|
46
|
-
version_requirements:
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ! '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
47
55
|
- !ruby/object:Gem::Dependency
|
|
48
56
|
name: worlddb
|
|
49
|
-
requirement:
|
|
50
|
-
none: false
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
51
58
|
requirements:
|
|
52
59
|
- - ! '>='
|
|
53
60
|
- !ruby/object:Gem::Version
|
|
54
61
|
version: 2.0.2
|
|
55
62
|
type: :runtime
|
|
56
63
|
prerelease: false
|
|
57
|
-
version_requirements:
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ! '>='
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: 2.0.2
|
|
58
69
|
- !ruby/object:Gem::Dependency
|
|
59
70
|
name: tagutils
|
|
60
|
-
requirement:
|
|
61
|
-
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ! '>='
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ! '>='
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: persondb
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
62
86
|
requirements:
|
|
63
87
|
- - ! '>='
|
|
64
88
|
- !ruby/object:Gem::Version
|
|
65
89
|
version: '0'
|
|
66
90
|
type: :runtime
|
|
67
91
|
prerelease: false
|
|
68
|
-
version_requirements:
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ! '>='
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: activerecord-utils
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ! '>='
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :runtime
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ! '>='
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
69
111
|
- !ruby/object:Gem::Dependency
|
|
70
112
|
name: fetcher
|
|
71
|
-
requirement:
|
|
72
|
-
none: false
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
73
114
|
requirements:
|
|
74
115
|
- - ! '>='
|
|
75
116
|
- !ruby/object:Gem::Version
|
|
76
117
|
version: '0.3'
|
|
77
118
|
type: :runtime
|
|
78
119
|
prerelease: false
|
|
79
|
-
version_requirements:
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ! '>='
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0.3'
|
|
80
125
|
- !ruby/object:Gem::Dependency
|
|
81
126
|
name: gli
|
|
82
|
-
requirement:
|
|
83
|
-
none: false
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
84
128
|
requirements:
|
|
85
129
|
- - ! '>='
|
|
86
130
|
- !ruby/object:Gem::Version
|
|
87
131
|
version: 2.5.6
|
|
88
132
|
type: :runtime
|
|
89
133
|
prerelease: false
|
|
90
|
-
version_requirements:
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ! '>='
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: 2.5.6
|
|
91
139
|
- !ruby/object:Gem::Dependency
|
|
92
140
|
name: activerecord
|
|
93
|
-
requirement:
|
|
94
|
-
none: false
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
95
142
|
requirements:
|
|
96
143
|
- - ! '>='
|
|
97
144
|
- !ruby/object:Gem::Version
|
|
98
145
|
version: '0'
|
|
99
146
|
type: :runtime
|
|
100
147
|
prerelease: false
|
|
101
|
-
version_requirements:
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ! '>='
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
102
153
|
- !ruby/object:Gem::Dependency
|
|
103
154
|
name: rdoc
|
|
104
|
-
requirement:
|
|
105
|
-
none: false
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
106
156
|
requirements:
|
|
107
157
|
- - ~>
|
|
108
158
|
- !ruby/object:Gem::Version
|
|
109
159
|
version: '4.0'
|
|
110
160
|
type: :development
|
|
111
161
|
prerelease: false
|
|
112
|
-
version_requirements:
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - ~>
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '4.0'
|
|
113
167
|
- !ruby/object:Gem::Dependency
|
|
114
168
|
name: hoe
|
|
115
|
-
requirement:
|
|
116
|
-
none: false
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
117
170
|
requirements:
|
|
118
171
|
- - ~>
|
|
119
172
|
- !ruby/object:Gem::Version
|
|
120
|
-
version: '3.
|
|
173
|
+
version: '3.10'
|
|
121
174
|
type: :development
|
|
122
175
|
prerelease: false
|
|
123
|
-
version_requirements:
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - ~>
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '3.10'
|
|
124
181
|
description: sportdb - sport.db command line tool
|
|
125
182
|
email: opensport@googlegroups.com
|
|
126
183
|
executables:
|
|
@@ -249,13 +306,19 @@ files:
|
|
|
249
306
|
- test/data/world-cup/1954/cup.yml
|
|
250
307
|
- test/data/world-cup/1962/cup.txt
|
|
251
308
|
- test/data/world-cup/1962/cup.yml
|
|
309
|
+
- test/data/world-cup/1974/cup.yml
|
|
310
|
+
- test/data/world-cup/1974/cup_finals.txt
|
|
311
|
+
- test/data/world-cup/1974/cup_i.txt
|
|
312
|
+
- test/data/world-cup/1974/cup_ii.txt
|
|
252
313
|
- test/data/world-cup/leagues.txt
|
|
253
314
|
- test/data/world-cup/seasons_1930.txt
|
|
254
315
|
- test/data/world-cup/seasons_1954.txt
|
|
255
316
|
- test/data/world-cup/seasons_1962.txt
|
|
317
|
+
- test/data/world-cup/seasons_1974.txt
|
|
256
318
|
- test/data/world-cup/teams_1930.txt
|
|
257
319
|
- test/data/world-cup/teams_1954.txt
|
|
258
320
|
- test/data/world-cup/teams_1962.txt
|
|
321
|
+
- test/data/world-cup/teams_1974.txt
|
|
259
322
|
- test/helper.rb
|
|
260
323
|
- test/test_changes.rb
|
|
261
324
|
- test/test_cursor.rb
|
|
@@ -272,6 +335,7 @@ files:
|
|
|
272
335
|
homepage: https://github.com/geraldb/sport.db.ruby
|
|
273
336
|
licenses:
|
|
274
337
|
- Public Domain
|
|
338
|
+
metadata: {}
|
|
275
339
|
post_install_message: ! '******************************************************************************
|
|
276
340
|
|
|
277
341
|
|
|
@@ -289,32 +353,30 @@ rdoc_options:
|
|
|
289
353
|
require_paths:
|
|
290
354
|
- lib
|
|
291
355
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
292
|
-
none: false
|
|
293
356
|
requirements:
|
|
294
357
|
- - ! '>='
|
|
295
358
|
- !ruby/object:Gem::Version
|
|
296
359
|
version: 1.9.2
|
|
297
360
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
298
|
-
none: false
|
|
299
361
|
requirements:
|
|
300
362
|
- - ! '>='
|
|
301
363
|
- !ruby/object:Gem::Version
|
|
302
364
|
version: '0'
|
|
303
365
|
requirements: []
|
|
304
366
|
rubyforge_project:
|
|
305
|
-
rubygems_version: 1.
|
|
367
|
+
rubygems_version: 2.1.10
|
|
306
368
|
signing_key:
|
|
307
|
-
specification_version:
|
|
369
|
+
specification_version: 4
|
|
308
370
|
summary: sportdb - sport.db command line tool
|
|
309
371
|
test_files:
|
|
372
|
+
- test/test_changes.rb
|
|
373
|
+
- test/test_cursor.rb
|
|
310
374
|
- test/test_date.rb
|
|
311
375
|
- test/test_lang.rb
|
|
312
|
-
- test/
|
|
313
|
-
- test/
|
|
314
|
-
- test/test_winner.rb
|
|
376
|
+
- test/test_reader.rb
|
|
377
|
+
- test/test_round_auto.rb
|
|
315
378
|
- test/test_round_def.rb
|
|
316
|
-
- test/test_utils.rb
|
|
317
379
|
- test/test_round_header.rb
|
|
318
|
-
- test/
|
|
319
|
-
- test/
|
|
320
|
-
- test/
|
|
380
|
+
- test/test_scores.rb
|
|
381
|
+
- test/test_utils.rb
|
|
382
|
+
- test/test_winner.rb
|