sportdb 1.7.0 → 1.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/sportdb/console.rb +2 -2
- data/lib/sportdb/models/game.rb +63 -9
- data/lib/sportdb/models/team.rb +1 -1
- data/lib/sportdb/reader.rb +17 -13
- data/lib/sportdb/schema.rb +2 -2
- data/lib/sportdb/version.rb +1 -1
- metadata +29 -19
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7821792672d5e971444ef9f51adb41f7cb2059b1
|
4
|
+
data.tar.gz: 256d782e620f2cd78adba12da7b207053a9d0c6c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 571e77542ea420347b555d023846f9c5fb374452c0bbcf3663c7fb543a2fdb877ebf505699c84589d28c13911b387820e98ae7385ba21c475acefb9c21673dcb
|
7
|
+
data.tar.gz: b1fcafb80a003779928c2a2c2c7c610414993f2cecf287507b8807a901c75c81ec68accf4d1cceae2cc371860b7640d674b18246ea428ad3d57419cea9e11bf3
|
data/lib/sportdb/console.rb
CHANGED
@@ -75,8 +75,8 @@ EURO2008 = Event.find_by_key( 'euro.2008' )
|
|
75
75
|
EURO2012 = Event.find_by_key( 'euro.2012' )
|
76
76
|
EURO = EURO2012 # add alias
|
77
77
|
|
78
|
-
BL = Event.find_by_key( 'de.
|
79
|
-
PL = Event.find_by_key( 'en.
|
78
|
+
BL = Event.find_by_key( 'de.2013/14' )
|
79
|
+
PL = Event.find_by_key( 'en.2013/14' )
|
80
80
|
|
81
81
|
### some club teams
|
82
82
|
|
data/lib/sportdb/models/game.rb
CHANGED
@@ -16,11 +16,19 @@ class Game < ActiveRecord::Base
|
|
16
16
|
### getter/setters for deprecated attribs (score3,4,5,6) n national
|
17
17
|
|
18
18
|
def score3
|
19
|
-
|
19
|
+
score1et
|
20
20
|
end
|
21
21
|
|
22
22
|
def score4
|
23
|
-
|
23
|
+
score2et
|
24
|
+
end
|
25
|
+
|
26
|
+
def score1ot
|
27
|
+
score1et
|
28
|
+
end
|
29
|
+
|
30
|
+
def score2ot
|
31
|
+
score2et
|
24
32
|
end
|
25
33
|
|
26
34
|
def score5
|
@@ -32,11 +40,19 @@ class Game < ActiveRecord::Base
|
|
32
40
|
end
|
33
41
|
|
34
42
|
def score3=(value)
|
35
|
-
self.
|
43
|
+
self.score1et = value
|
36
44
|
end
|
37
45
|
|
38
46
|
def score4=(value)
|
39
|
-
self.
|
47
|
+
self.score2et = value
|
48
|
+
end
|
49
|
+
|
50
|
+
def score1ot=(value)
|
51
|
+
self.score1et = value
|
52
|
+
end
|
53
|
+
|
54
|
+
def score2ot=(value)
|
55
|
+
self.score2et = value
|
40
56
|
end
|
41
57
|
|
42
58
|
def score5=(value)
|
@@ -95,8 +111,8 @@ class Game < ActiveRecord::Base
|
|
95
111
|
:team1 => value_teams[0],
|
96
112
|
:score1 => value_scores[0],
|
97
113
|
:score2 => value_scores[1],
|
98
|
-
:
|
99
|
-
:
|
114
|
+
:score1et => value_scores[2],
|
115
|
+
:score2et => value_scores[3],
|
100
116
|
:score1p => value_scores[4],
|
101
117
|
:score2p => value_scores[5],
|
102
118
|
:team2 => value_teams[1],
|
@@ -159,8 +175,8 @@ class Game < ActiveRecord::Base
|
|
159
175
|
:team1 =>pair[1][1],
|
160
176
|
:score1 =>pair[1][2][0],
|
161
177
|
:score2 =>pair[1][2][1],
|
162
|
-
:
|
163
|
-
:
|
178
|
+
:score1et =>pair[1][2][2],
|
179
|
+
:score2et =>pair[1][2][3],
|
164
180
|
:score1p =>pair[1][2][4],
|
165
181
|
:score1p =>pair[1][2][5],
|
166
182
|
:team2 =>pair[1][3],
|
@@ -192,7 +208,7 @@ class Game < ActiveRecord::Base
|
|
192
208
|
self.toto12x = '2'
|
193
209
|
end
|
194
210
|
end
|
195
|
-
|
211
|
+
|
196
212
|
|
197
213
|
def over? # game over?
|
198
214
|
play_at <= Time.now
|
@@ -215,6 +231,9 @@ class Game < ActiveRecord::Base
|
|
215
231
|
## NB: remove if calc?
|
216
232
|
buf << 'game-team-winner ' if complete? && (score1 > score2)
|
217
233
|
buf << 'game-team-draw ' if complete? && (score1 == score2)
|
234
|
+
buf << 'game-knockout ' if knockout?
|
235
|
+
### fix: loser - add method for checking winner/loser on ko pairs using (1st leg/2nd leg totals)
|
236
|
+
buf << 'game-team-loser ' if complete? && (score1 < score2)
|
218
237
|
buf
|
219
238
|
end
|
220
239
|
|
@@ -223,10 +242,45 @@ class Game < ActiveRecord::Base
|
|
223
242
|
## NB: remove if calc?
|
224
243
|
buf << 'game-team-winner ' if complete? && (score2 > score1)
|
225
244
|
buf << 'game-team-draw ' if complete? && (score2 == score1)
|
245
|
+
buf << 'game-knockout ' if knockout?
|
246
|
+
### fix: loser - add method for checking winner/loser on ko pairs using (1st leg/2nd leg totals)
|
247
|
+
buf << 'game-team-loser ' if complete? && (score2 < score1)
|
226
248
|
buf
|
227
249
|
end
|
228
250
|
|
229
251
|
|
252
|
+
def play_at_str( format = nil )
|
253
|
+
## e.g. use like
|
254
|
+
# play_at_str or
|
255
|
+
# play_at_str( :db ) etc.
|
256
|
+
if format == :db
|
257
|
+
play_at.strftime( '%Y-%m-%d %H:%M %z' ) # NB: removed seconds (:%S)
|
258
|
+
else
|
259
|
+
play_at.strftime( "%a. %d. %b. / %H:%M" )
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
|
264
|
+
def score_str
|
265
|
+
return ' - ' if score1.blank? && score2.blank?
|
266
|
+
|
267
|
+
if score1p.present? && score2p.present? # im Elfmeterschiessen i.E.?
|
268
|
+
"#{score1_str} : #{score2_str} / #{score1et} : #{score2et} n.V. / #{score1p} : #{score2p} i.E."
|
269
|
+
elsif score1et.present? && score2et.present? # nach Verlaengerung n.V.?
|
270
|
+
"#{score1_str} : #{score2_str} / #{score1et} : #{score2et} n.V."
|
271
|
+
else
|
272
|
+
"#{score1_str} : #{score2_str}"
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
276
|
+
def score1_str
|
277
|
+
if score1.blank? then '-' else score1.to_s end
|
278
|
+
end
|
279
|
+
|
280
|
+
def score2_str
|
281
|
+
if score2.blank? then '-' else score2.to_s end
|
282
|
+
end
|
283
|
+
|
230
284
|
|
231
285
|
end # class Game
|
232
286
|
|
data/lib/sportdb/models/team.rb
CHANGED
@@ -11,7 +11,7 @@ class Team < ActiveRecord::Base
|
|
11
11
|
|
12
12
|
## todo/fix: must be 3 or more letters (plus allow digits e.g. salzburgii, muenchen1980, etc.) - why? why not??
|
13
13
|
validates :key, :format => { :with => REGEX_KEY, :message => 'expected three or more lowercase letters a-z' }
|
14
|
-
validates :code, :format => { :with => REGEX_CODE, :message => 'expected three uppercase letters A-Z (and 0-9_)' }, :allow_nil => true
|
14
|
+
validates :code, :format => { :with => REGEX_CODE, :message => 'expected two or three uppercase letters A-Z (and 0-9_; must start with A-Z)' }, :allow_nil => true
|
15
15
|
|
16
16
|
has_many :event_teams, :class_name => 'EventTeam' # join table (events+teams)
|
17
17
|
has_many :events, :through => :event_teams
|
data/lib/sportdb/reader.rb
CHANGED
@@ -75,12 +75,12 @@ class Reader
|
|
75
75
|
load_leagues( name, club: true, country_id: country.id )
|
76
76
|
end
|
77
77
|
elsif name =~ /(?:^|\/)leagues/ # NB: ^leagues or also possible world!/leagues - NB: make sure goes after leagues_for_country!!
|
78
|
-
if name =~ /
|
78
|
+
if name =~ /-cup!?\// # NB: -cup/ or -cup!/
|
79
|
+
# e.g. national team tournaments/leagues (e.g. world-cup/ or euro-cup/)
|
80
|
+
load_leagues( name )
|
81
|
+
else
|
79
82
|
# e.g. leagues_club
|
80
83
|
load_leagues( name, club: true )
|
81
|
-
else
|
82
|
-
# e.g. leagues
|
83
|
-
load_leagues( name )
|
84
84
|
end
|
85
85
|
elsif match_teams_for_country( name ) do |country_key| # name =~ /^([a-z]{2})\/teams/
|
86
86
|
# auto-add country code (from folder structure) for country-specific teams
|
@@ -89,16 +89,18 @@ class Reader
|
|
89
89
|
load_teams( name, club: true, country_id: country.id )
|
90
90
|
end
|
91
91
|
elsif name =~ /(?:^|\/)teams/
|
92
|
-
if name =~ /
|
92
|
+
if name =~ /-cup!?\// # NB: -cup/ or -cup!/
|
93
|
+
# assume national teams
|
94
|
+
# e.g. world-cup/teams amercia-cup/teams_northern
|
95
|
+
load_teams( name, national: true )
|
96
|
+
else
|
93
97
|
# club teams (many countries)
|
94
98
|
# e.g. club/europe/teams
|
95
99
|
load_teams( name, club: true )
|
96
|
-
else
|
97
|
-
# assume national teams
|
98
|
-
# e.g. world/teams amercia/teams_n
|
99
|
-
load_teams( name, national: true )
|
100
100
|
end
|
101
|
-
elsif name =~ /\/(\d{4}|\d{4}_\d{2})\//
|
101
|
+
elsif name =~ /\/(\d{4}|\d{4}_\d{2})\// || name =~ /\/(\d{4}|\d{4}_\d{2})$/
|
102
|
+
# e.g. must match /2012/ or /2012_13/
|
103
|
+
# or /2012 or /2012_13 e.g. brazil/2012 or brazil/2012_13
|
102
104
|
load_event( name )
|
103
105
|
event = fetch_event( name )
|
104
106
|
fixtures = fetch_event_fixtures( name )
|
@@ -205,7 +207,7 @@ class Reader
|
|
205
207
|
end # each key,value
|
206
208
|
|
207
209
|
if fixtures.empty?
|
208
|
-
logger.warn "no fixtures found for event - >#{name}<; assume fixture name is the same as event"
|
210
|
+
## logger.warn "no fixtures found for event - >#{name}<; assume fixture name is the same as event"
|
209
211
|
fixtures = [name]
|
210
212
|
else
|
211
213
|
## add path to fixtures (use path from event e.g)
|
@@ -323,6 +325,8 @@ class Reader
|
|
323
325
|
elsif key == 'team3'
|
324
326
|
## for now always assume false # todo: fix - use value and convert to boolean if not boolean
|
325
327
|
event_attribs['team3'] = false
|
328
|
+
elsif key == 'fixtures'
|
329
|
+
## skip fixtures for now (NOT yet stored in db; for now reload file to get fixtures)
|
326
330
|
else
|
327
331
|
## todo: add a source location struct to_s or similar (file, line, col)
|
328
332
|
logger.error "unknown event attrib #{key}; skipping attrib"
|
@@ -776,8 +780,8 @@ private
|
|
776
780
|
game_attribs = {
|
777
781
|
score1: scores[0],
|
778
782
|
score2: scores[1],
|
779
|
-
|
780
|
-
|
783
|
+
score1et: scores[2],
|
784
|
+
score2et: scores[3],
|
781
785
|
score1p: scores[4],
|
782
786
|
score2p: scores[5],
|
783
787
|
play_at: date,
|
data/lib/sportdb/schema.rb
CHANGED
@@ -178,8 +178,8 @@ create_table :games do |t|
|
|
178
178
|
t.boolean :home, :null => false, :default => true # is team1 play at home (that is, at its home stadium)
|
179
179
|
t.integer :score1
|
180
180
|
t.integer :score2
|
181
|
-
t.integer :
|
182
|
-
t.integer :
|
181
|
+
t.integer :score1et # extratime - team 1 (opt)
|
182
|
+
t.integer :score2et # extratime - team 2 (opt)
|
183
183
|
t.integer :score1p # penalty - team 1 (opt)
|
184
184
|
t.integer :score2p # penalty - team 2 (opt) elfmeter (opt)
|
185
185
|
t.integer :score1i # half time / first third (opt)
|
data/lib/sportdb/version.rb
CHANGED
metadata
CHANGED
@@ -1,60 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sportdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
5
|
-
prerelease:
|
4
|
+
version: 1.7.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Gerald Bauer
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-21 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: worlddb
|
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: '1.7'
|
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: '1.7'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: gli
|
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: 2.5.6
|
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: 2.5.6
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: rdoc
|
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: '4.0'
|
44
48
|
type: :development
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '4.0'
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: hoe
|
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: '3.6'
|
55
62
|
type: :development
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.6'
|
58
69
|
description: sportdb - sport.db command line tool
|
59
70
|
email: opensport@googlegroups.com
|
60
71
|
executables:
|
@@ -123,6 +134,7 @@ files:
|
|
123
134
|
homepage: https://github.com/geraldb/sport.db.ruby
|
124
135
|
licenses:
|
125
136
|
- Public Domain
|
137
|
+
metadata: {}
|
126
138
|
post_install_message: ! '******************************************************************************
|
127
139
|
|
128
140
|
|
@@ -140,22 +152,20 @@ rdoc_options:
|
|
140
152
|
require_paths:
|
141
153
|
- lib
|
142
154
|
required_ruby_version: !ruby/object:Gem::Requirement
|
143
|
-
none: false
|
144
155
|
requirements:
|
145
156
|
- - ! '>='
|
146
157
|
- !ruby/object:Gem::Version
|
147
158
|
version: 1.9.2
|
148
159
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
160
|
requirements:
|
151
161
|
- - ! '>='
|
152
162
|
- !ruby/object:Gem::Version
|
153
163
|
version: '0'
|
154
164
|
requirements: []
|
155
165
|
rubyforge_project: sportdb
|
156
|
-
rubygems_version:
|
166
|
+
rubygems_version: 2.0.6
|
157
167
|
signing_key:
|
158
|
-
specification_version:
|
168
|
+
specification_version: 4
|
159
169
|
summary: sportdb - sport.db command line tool
|
160
170
|
test_files:
|
161
171
|
- test/test_lang.rb
|