sportdb-models 1.15.0 → 1.15.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Manifest.txt +2 -0
- data/lib/sportdb/mapper_teams.rb +24 -0
- data/lib/sportdb/models.rb +1 -0
- data/lib/sportdb/readers/event.rb +22 -11
- data/lib/sportdb/readers/game.rb +0 -21
- data/lib/sportdb/rsssf_reader.rb +95 -48
- data/lib/sportdb/utils_date.rb +0 -6
- data/lib/sportdb/version.rb +1 -1
- data/test/data/at-austria/2015_16/1-bundesliga-v2.yml +20 -0
- data/test/test_event_reader.rb +13 -3
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98fbd2db0f79206ed3154c7ce08822218cea175c
|
4
|
+
data.tar.gz: 199637ebcaa4e7fa0477c2eb412400c8303a5c6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d0392d3701140c5af5495115eb0836931f378a0b9e30b33afe8281ceb66dc948176dd89ddf0dd3fbc1d3c255ce49781c4d5335c5988f2187a8ed65fd8db0f29
|
7
|
+
data.tar.gz: 6d087ae871a039444129dbc40afa3c0da415539d5a741cea95acd7117e6421adec737adf97f5ac7549f103f8d02d0f7356a9a4c869318cb4d04ed2ef0fa205fe
|
data/Manifest.txt
CHANGED
@@ -18,6 +18,7 @@ lib/sportdb/finders/date.rb
|
|
18
18
|
lib/sportdb/finders/goals.rb
|
19
19
|
lib/sportdb/finders/scores.rb
|
20
20
|
lib/sportdb/lang.rb
|
21
|
+
lib/sportdb/mapper_teams.rb
|
21
22
|
lib/sportdb/matcher.rb
|
22
23
|
lib/sportdb/models.rb
|
23
24
|
lib/sportdb/models/assoc.rb
|
@@ -86,6 +87,7 @@ test/data/at-austria/2013_14/squads/austria.txt
|
|
86
87
|
test/data/at-austria/2013_14/squads/salzburg.txt
|
87
88
|
test/data/at-austria/2014_15/1-bundesliga-ii.txt
|
88
89
|
test/data/at-austria/2014_15/1-bundesliga.yml
|
90
|
+
test/data/at-austria/2015_16/1-bundesliga-v2.yml
|
89
91
|
test/data/at-austria/2015_16/1-bundesliga.yml
|
90
92
|
test/data/at-austria/2015_16/cup.yml
|
91
93
|
test/data/at-austria/leagues.txt
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module SportDb
|
4
|
+
|
5
|
+
class TeamMapper
|
6
|
+
def initialize( recs )
|
7
|
+
@mapper = TextUtils::TitleMapper2.new( recs, 'team' )
|
8
|
+
end
|
9
|
+
|
10
|
+
def find_teams!( line ) # Note: returns an array - note: plural! (teamsssss)
|
11
|
+
@mapper.find_keys!( line )
|
12
|
+
end
|
13
|
+
|
14
|
+
def find_team!( line ) # Note: returns key (string or nil)
|
15
|
+
@mapper.find_key!( line )
|
16
|
+
end
|
17
|
+
|
18
|
+
def map_teams!( line )
|
19
|
+
@mapper.map_titles!( line )
|
20
|
+
end
|
21
|
+
end # class TeamMapper
|
22
|
+
|
23
|
+
end # module SportDb
|
24
|
+
|
data/lib/sportdb/models.rb
CHANGED
@@ -65,6 +65,7 @@ require 'sportdb/utils_goals'
|
|
65
65
|
require 'sportdb/matcher'
|
66
66
|
require 'sportdb/calc' # fix/todo: obsolete - replace w/ standings
|
67
67
|
require 'sportdb/standings'
|
68
|
+
require 'sportdb/mapper_teams'
|
68
69
|
|
69
70
|
|
70
71
|
require 'sportdb/finders/goals' # no: requires FixturesHelpers
|
@@ -79,29 +79,39 @@ class EventReader
|
|
79
79
|
|
80
80
|
## puts "processing event attrib >>#{key}<< >>#{value}<<..."
|
81
81
|
|
82
|
-
if key == 'league'
|
83
|
-
|
82
|
+
if key.downcase == 'league' ## note: allow league, League, etc.
|
83
|
+
league_key = value.to_s.strip
|
84
|
+
## check if league_key includes uppercase letters (e.g. Deutsche Bundesliga and NOT de etc.)
|
85
|
+
if league_key =~ /[A-Z]/
|
86
|
+
## assume league name (NOT league key); try to lookup leauge key in database
|
87
|
+
league = League.find_by( title: league_key )
|
88
|
+
## todo: add synonyms/alt names - why? why not??
|
89
|
+
else
|
90
|
+
## assume "verbatim/literal" team_key (use as is 1:1)
|
91
|
+
league = League.find_by( key: league_key )
|
92
|
+
end
|
84
93
|
|
85
94
|
## check if it exists
|
86
|
-
if league.present?
|
95
|
+
if league.present? ## todo: just use if league (no present?) ???
|
87
96
|
event_attribs['league_id'] = league.id
|
88
97
|
else
|
89
|
-
logger.error "league with key >>#{
|
98
|
+
logger.error "league with key >>#{league_key}<< missing"
|
90
99
|
exit 1
|
91
100
|
end
|
92
101
|
|
93
|
-
elsif key == 'season'
|
94
|
-
|
102
|
+
elsif key.downcase == 'season' ## note: allow season, Season, etc.
|
103
|
+
season_key = value.to_s.strip
|
104
|
+
season = Season.find_by( key: season_key )
|
95
105
|
|
96
106
|
## check if it exists
|
97
107
|
if season.present?
|
98
108
|
event_attribs['season_id'] = season.id
|
99
109
|
else
|
100
|
-
logger.error "season with key >>#{
|
110
|
+
logger.error "season with key >>#{season_key}<< missing"
|
101
111
|
exit 1
|
102
112
|
end
|
103
113
|
|
104
|
-
elsif key == 'start_at' || key == 'begin_at'
|
114
|
+
elsif key == 'start_at' || key == 'begin_at' || key.downcase == 'start date'
|
105
115
|
|
106
116
|
if value.is_a?(DateTime) || value.is_a?(Date)
|
107
117
|
start_at = value
|
@@ -131,7 +141,7 @@ class EventReader
|
|
131
141
|
ground_ids = []
|
132
142
|
value.each do |item|
|
133
143
|
ground_key = item.to_s.strip
|
134
|
-
ground = Ground.
|
144
|
+
ground = Ground.find_by( key: ground_key )
|
135
145
|
if ground.nil?
|
136
146
|
puts "[warn] ground/stadium w/ key >#{ground_key}< not found; skipping ground"
|
137
147
|
else
|
@@ -145,7 +155,7 @@ class EventReader
|
|
145
155
|
## for now always assume false # todo: fix - use value and convert to boolean if not boolean
|
146
156
|
event_attribs['team3'] = false
|
147
157
|
|
148
|
-
elsif key
|
158
|
+
elsif key.downcase =~ /teams/ ## note: allow teams, Teams, 18 teams, 18 Teams etc.
|
149
159
|
## assume teams value is an array
|
150
160
|
|
151
161
|
### check if key includes number of teams; if yes - use for checksum/assert
|
@@ -211,7 +221,8 @@ class EventReader
|
|
211
221
|
|
212
222
|
logger.debug "find event - league_id: #{league_id}, season_id: #{season_id}"
|
213
223
|
|
214
|
-
event = Event.
|
224
|
+
event = Event.find_by( league_id: league_id,
|
225
|
+
season_id: season_id )
|
215
226
|
|
216
227
|
## check if it exists
|
217
228
|
if event.present?
|
data/lib/sportdb/readers/game.rb
CHANGED
@@ -2,27 +2,6 @@
|
|
2
2
|
|
3
3
|
module SportDb
|
4
4
|
|
5
|
-
|
6
|
-
class TeamMapper
|
7
|
-
def initialize( recs )
|
8
|
-
@mapper = TextUtils::TitleMapper2.new( recs, 'team' )
|
9
|
-
end
|
10
|
-
|
11
|
-
def find_teams!( line ) # Note: returns an array - note: plural! (teamsssss)
|
12
|
-
@mapper.find_keys!( line )
|
13
|
-
end
|
14
|
-
|
15
|
-
def find_team!( line ) # Note: returns key (string or nil)
|
16
|
-
@mapper.find_key!( line )
|
17
|
-
end
|
18
|
-
|
19
|
-
def map_teams!( line )
|
20
|
-
@mapper.map_titles!( line )
|
21
|
-
end
|
22
|
-
end # class TeamMapper
|
23
|
-
|
24
|
-
|
25
|
-
|
26
5
|
class GameReader
|
27
6
|
|
28
7
|
include LogUtils::Logging
|
data/lib/sportdb/rsssf_reader.rb
CHANGED
@@ -1,17 +1,14 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
3
|
##
|
4
|
-
|
5
|
-
# todo/fix: cleanup, remove stuff not needed for "simple" rsssf format/style
|
6
|
-
#
|
7
|
-
## for now lets only support leagues with rounds (no cups/knockout rounds n groups)
|
4
|
+
## note: for now lets only support leagues with rounds (no cups/knockout rounds n groups)
|
8
5
|
## (re)add later when needed (e.g. for playoffs etc.)
|
9
6
|
|
10
7
|
|
11
8
|
module SportDb
|
12
9
|
|
13
10
|
|
14
|
-
class RsssfGameReader
|
11
|
+
class RsssfGameReader ### todo: rename to RsssfLeagueMatchReader ( or use league/cup option?) - why? why not??
|
15
12
|
|
16
13
|
include LogUtils::Logging
|
17
14
|
|
@@ -19,37 +16,32 @@ class RsssfGameReader
|
|
19
16
|
# e.g. lets you use Usage instead of Model::Usage
|
20
17
|
include Models
|
21
18
|
|
22
|
-
## value helpers e.g. is_year?, is_taglist? etc.
|
23
|
-
include TextUtils::ValueHelper
|
24
|
-
|
25
|
-
include FixtureHelpers
|
26
|
-
|
27
19
|
##
|
28
20
|
## todo: add from_file and from_zip too
|
29
21
|
|
30
|
-
def self.from_string(
|
31
|
-
|
32
|
-
## change event to event_or_event_key !!!!! - allow event_key as string passed in
|
33
|
-
self.new( event_key, text )
|
22
|
+
def self.from_string( event_or_event_key, text )
|
23
|
+
self.new( event_or_event_key, text )
|
34
24
|
end
|
35
25
|
|
36
|
-
def initialize(
|
37
|
-
### fix - fix -fix:
|
38
|
-
## change event to event_or_event_key !!!!! - allow event_key as string passed in
|
39
|
-
|
26
|
+
def initialize( event_or_event_key, text )
|
40
27
|
## todo/fix: how to add opts={} ???
|
41
|
-
@
|
42
|
-
@text
|
28
|
+
@event_or_event_key = event_or_event_key
|
29
|
+
@text = text
|
43
30
|
end
|
44
31
|
|
45
32
|
|
46
33
|
def read
|
47
34
|
## note: assume active activerecord connection
|
48
|
-
|
35
|
+
|
36
|
+
if @event_or_event_key.kind_of?( Event )
|
37
|
+
@event= @event_or_event_key
|
38
|
+
else ## assume string
|
39
|
+
@event = Event.find_by!( key: @event_or_event_key )
|
40
|
+
end
|
49
41
|
|
50
42
|
logger.debug "Event #{@event.key} >#{@event.title}<"
|
51
43
|
|
52
|
-
@
|
44
|
+
@mapper_teams = TeamMapper.new( @event.teams )
|
53
45
|
|
54
46
|
## reset cached values
|
55
47
|
@patch_round_ids = []
|
@@ -57,14 +49,77 @@ class RsssfGameReader
|
|
57
49
|
@last_round = nil
|
58
50
|
@last_date = nil
|
59
51
|
|
60
|
-
## always use english (en) for now
|
61
|
-
SportDb.lang.lang = 'en'
|
62
|
-
|
63
52
|
reader = LineReader.from_string( @text )
|
64
53
|
parse_fixtures( reader )
|
65
54
|
end # method load_fixtures
|
66
55
|
|
67
56
|
|
57
|
+
|
58
|
+
RSSSF_FT_REGEX = /\b
|
59
|
+
(?<score1>\d{1,2})
|
60
|
+
-
|
61
|
+
(?<score2>\d{1,2})
|
62
|
+
\b/x
|
63
|
+
|
64
|
+
def find_rsssf_scores!( line )
|
65
|
+
# e.g. 1-1 or 0-2 or 3-3
|
66
|
+
|
67
|
+
m = RSSSF_FT_REGEX.match( line )
|
68
|
+
if m
|
69
|
+
score1 = m[:score1].to_i
|
70
|
+
score2 = m[:score2].to_i
|
71
|
+
|
72
|
+
logger.debug " score: >#{score1}-#{score2}<"
|
73
|
+
|
74
|
+
line.sub!( m[0], '[SCORE]' )
|
75
|
+
else
|
76
|
+
score1 = nil
|
77
|
+
score2 = nil
|
78
|
+
end
|
79
|
+
|
80
|
+
scores = [score1, score2]
|
81
|
+
scores
|
82
|
+
end # method find_rsssf_scores!
|
83
|
+
|
84
|
+
|
85
|
+
def find_rsssf_date!( line, opts={} )
|
86
|
+
finder = RsssfDateFinder.new
|
87
|
+
finder.find!( line, opts )
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
RSSSF_ROUND_REGEX = /\b
|
92
|
+
(?<round>Round)
|
93
|
+
\s
|
94
|
+
(?<pos>\d{1,3})
|
95
|
+
\b/x
|
96
|
+
|
97
|
+
def is_rsssf_round?( line )
|
98
|
+
RSSSF_ROUND_REGEX.match( line ).nil? == false ## match found if not nil
|
99
|
+
end
|
100
|
+
|
101
|
+
def find_rsssf_round!( line )
|
102
|
+
## todo: check if \b works for run on [Apr 13] too ??
|
103
|
+
## todo: allow multiple spaces after round ??
|
104
|
+
|
105
|
+
m = RSSSF_ROUND_REGEX.match( line )
|
106
|
+
if m
|
107
|
+
title = m[0] ## note: title is complete match e.g. Round 1, Round 2, etc.
|
108
|
+
pos = m[:pos].to_i
|
109
|
+
|
110
|
+
logger.debug " title: >#{title}<, pos: >#{pos}<"
|
111
|
+
|
112
|
+
line.sub!( m[0], '[ROUND]' )
|
113
|
+
else
|
114
|
+
## fix: add logger.warn no round pos found in line
|
115
|
+
title = nil
|
116
|
+
pos = nil
|
117
|
+
end
|
118
|
+
|
119
|
+
[title,pos] ## return array; note: [nil,nil] if nothing found
|
120
|
+
end # method find_rsssf_round!
|
121
|
+
|
122
|
+
|
68
123
|
def parse_round_header( line )
|
69
124
|
|
70
125
|
## todo/fix:
|
@@ -76,9 +131,6 @@ class RsssfGameReader
|
|
76
131
|
|
77
132
|
logger.debug "parsing round header line: >#{line}<"
|
78
133
|
|
79
|
-
### todo/fix/check: move cut off optional comment in reader for all lines? why? why not?
|
80
|
-
cut_off_end_of_line_comment!( line ) # cut off optional comment starting w/ #
|
81
|
-
|
82
134
|
## check for date in header first e.g. Round 36 [Jul 20] !!
|
83
135
|
## avoid "conflict" with getting "wrong" round number from date etc.
|
84
136
|
date = find_rsssf_date!( line, start_at: @event.start_at )
|
@@ -86,10 +138,7 @@ class RsssfGameReader
|
|
86
138
|
@last_date = date
|
87
139
|
end
|
88
140
|
|
89
|
-
|
90
|
-
# make sure Round of 16 will not return pos 16 -- how? possible?
|
91
|
-
# add unit test too to verify
|
92
|
-
pos = find_round_pos!( line )
|
141
|
+
title, pos = find_rsssf_round!( line )
|
93
142
|
|
94
143
|
## check if pos available; if not auto-number/calculate
|
95
144
|
if pos.nil?
|
@@ -97,11 +146,6 @@ class RsssfGameReader
|
|
97
146
|
fail( "round pos required in rsssf; sorry")
|
98
147
|
end
|
99
148
|
|
100
|
-
title = find_round_header_title!( line )
|
101
|
-
|
102
|
-
## Note: use extracted round title for knockout check
|
103
|
-
## knockout_flag = is_knockout_round?( title )
|
104
|
-
|
105
149
|
logger.debug " line: >#{line}<"
|
106
150
|
|
107
151
|
## Note: dummy/placeholder start_at, end_at date
|
@@ -125,6 +169,7 @@ class RsssfGameReader
|
|
125
169
|
round_attribs = round_attribs.merge( {
|
126
170
|
event_id: @event.id,
|
127
171
|
pos: pos,
|
172
|
+
## todo: add num e.g. num == pos for round 1, round 2, etc. - why? why not??
|
128
173
|
start_at: Date.parse('1911-11-11'),
|
129
174
|
end_at: Date.parse('1911-11-11')
|
130
175
|
})
|
@@ -149,9 +194,10 @@ class RsssfGameReader
|
|
149
194
|
def parse_game( line )
|
150
195
|
logger.debug "parsing game (fixture) line: >#{line}<"
|
151
196
|
|
152
|
-
@
|
153
|
-
|
154
|
-
|
197
|
+
@mapper_teams.map_teams!( line )
|
198
|
+
team_keys = @mapper_teams.find_teams!( line )
|
199
|
+
team1_key = team_keys[0]
|
200
|
+
team2_key = team_keys[1]
|
155
201
|
|
156
202
|
## note: if we do NOT find two teams; return false - no match found
|
157
203
|
if team1_key.nil? || team2_key.nil?
|
@@ -170,9 +216,7 @@ class RsssfGameReader
|
|
170
216
|
date = @last_date # no date found; (re)use last seen date
|
171
217
|
end
|
172
218
|
|
173
|
-
|
174
|
-
## use rsssf specific score finder!!!
|
175
|
-
scores = find_scores!( line )
|
219
|
+
scores = find_rsssf_scores!( line )
|
176
220
|
|
177
221
|
logger.debug " line: >#{line}<"
|
178
222
|
|
@@ -185,6 +229,9 @@ class RsssfGameReader
|
|
185
229
|
|
186
230
|
### check if games exists
|
187
231
|
## with this teams in this round if yes only update
|
232
|
+
##
|
233
|
+
## todo: add replay flag (true/false) !!!!!!!!
|
234
|
+
## allows same match fixture in round !!!!!!!!
|
188
235
|
game = Game.find_by( round_id: round.id,
|
189
236
|
team1_id: team1.id,
|
190
237
|
team2_id: team2.id )
|
@@ -240,9 +287,10 @@ class RsssfGameReader
|
|
240
287
|
# line with NO teams plus include date e.g.
|
241
288
|
# [Jun 17] etc.
|
242
289
|
|
243
|
-
@
|
244
|
-
|
245
|
-
|
290
|
+
@mapper_teams.map_teams!( line )
|
291
|
+
team_keys= @mapper_teams.find_teams!( line )
|
292
|
+
team1_key = team_keys[0]
|
293
|
+
team2_key = team_keys[1]
|
246
294
|
|
247
295
|
date = find_rsssf_date!( line, start_at: @event.start_at )
|
248
296
|
|
@@ -263,8 +311,7 @@ class RsssfGameReader
|
|
263
311
|
|
264
312
|
reader.each_line do |line|
|
265
313
|
|
266
|
-
|
267
|
-
if is_round?( line )
|
314
|
+
if is_rsssf_round?( line )
|
268
315
|
parse_round_header( line )
|
269
316
|
elsif try_parse_game( line )
|
270
317
|
# do nothing here
|
data/lib/sportdb/utils_date.rb
CHANGED
data/lib/sportdb/version.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
#########################################################################
|
2
|
+
# Österreichische Bundesliga 2015/16 (104. Meisterschaft / 42. Saison)
|
3
|
+
|
4
|
+
League: Österr. Bundesliga
|
5
|
+
Season: 2015/16
|
6
|
+
Start Date: 2015-07-25
|
7
|
+
|
8
|
+
|
9
|
+
10 Teams:
|
10
|
+
- RB Salzburg
|
11
|
+
- Rapid Wien
|
12
|
+
- Sturm Graz
|
13
|
+
- Wolfsberger AC
|
14
|
+
- SV Ried
|
15
|
+
- Austria Wien
|
16
|
+
- Admira Wacker
|
17
|
+
- SCR Altach
|
18
|
+
- SV Grödig
|
19
|
+
- SV Mattersburg ## Aufsteiger
|
20
|
+
|
data/test/test_event_reader.rb
CHANGED
@@ -15,25 +15,35 @@ class TestEventReaderXX < MiniTest::Test # note: TestEventReader alreay defined
|
|
15
15
|
WorldDb.delete!
|
16
16
|
SportDb.delete!
|
17
17
|
PersonDb.delete!
|
18
|
-
end
|
19
18
|
|
20
|
-
|
19
|
+
## setup österr. bundesliga
|
21
20
|
at = Country.create!( key: 'at', name: 'Austria', code: 'AUT', pop: 1, area: 1)
|
22
21
|
season = Season.create!( key: '2015/16', title: '2015/16' )
|
23
|
-
bl = League.create!( key: 'at', title: 'Bundesliga', club: true, country_id: at.id )
|
22
|
+
bl = League.create!( key: 'at', title: 'Österr. Bundesliga', club: true, country_id: at.id )
|
24
23
|
|
25
24
|
## read teams (required for db key lookup)
|
26
25
|
teamreader = TestTeamReader.from_file( 'at-austria/teams', country_id: at.id )
|
27
26
|
teamreader.read
|
28
27
|
teamreader = TestTeamReader.from_file( 'at-austria/teams_2', country_id: at.id )
|
29
28
|
teamreader.read
|
29
|
+
end
|
30
30
|
|
31
|
+
def test_bl
|
31
32
|
r = TestEventReader.from_file( 'at-austria/2015_16/1-bundesliga' )
|
32
33
|
r.read
|
33
34
|
|
34
35
|
assert true ## if we get here; assume everything ok
|
35
36
|
end
|
36
37
|
|
38
|
+
def test_bl_v2
|
39
|
+
r = TestEventReader.from_file( 'at-austria/2015_16/1-bundesliga-v2' )
|
40
|
+
r.read
|
41
|
+
|
42
|
+
assert true ## if we get here; assume everything ok
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
|
37
47
|
### fix/todo:
|
38
48
|
## to be done - add support for Wiener Sportklub (RL Ost) => Wiener Sportklub lookups
|
39
49
|
def xxxx_test_cup
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sportdb-models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.15.
|
4
|
+
version: 1.15.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: worlddb-models
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- lib/sportdb/finders/goals.rb
|
96
96
|
- lib/sportdb/finders/scores.rb
|
97
97
|
- lib/sportdb/lang.rb
|
98
|
+
- lib/sportdb/mapper_teams.rb
|
98
99
|
- lib/sportdb/matcher.rb
|
99
100
|
- lib/sportdb/models.rb
|
100
101
|
- lib/sportdb/models/assoc.rb
|
@@ -163,6 +164,7 @@ files:
|
|
163
164
|
- test/data/at-austria/2013_14/squads/salzburg.txt
|
164
165
|
- test/data/at-austria/2014_15/1-bundesliga-ii.txt
|
165
166
|
- test/data/at-austria/2014_15/1-bundesliga.yml
|
167
|
+
- test/data/at-austria/2015_16/1-bundesliga-v2.yml
|
166
168
|
- test/data/at-austria/2015_16/1-bundesliga.yml
|
167
169
|
- test/data/at-austria/2015_16/cup.yml
|
168
170
|
- test/data/at-austria/leagues.txt
|