sportdb 0.9.1 → 0.9.2
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/Manifest.txt +14 -12
- data/Rakefile +1 -1
- data/db/america/2011.yml +30 -0
- data/db/america/teams.txt +26 -0
- data/db/at/teams.txt +88 -0
- data/db/cl/teams.txt +46 -0
- data/db/copa/teams.txt +35 -0
- data/db/de/teams.txt +23 -0
- data/db/en/teams.txt +26 -0
- data/db/es/teams.txt +8 -0
- data/db/euro/2008.rb +4 -16
- data/db/euro/2008.txt +19 -24
- data/db/euro/2012.rb +6 -147
- data/db/euro/2012.txt +114 -0
- data/db/euro/teams.txt +36 -0
- data/db/mx/teams.txt +20 -0
- data/db/nhl/teams.txt +40 -0
- data/db/ro/teams.txt +26 -0
- data/db/world/2010.txt +0 -5
- data/db/world/teams.txt +25 -0
- data/lib/sportdb.rb +45 -21
- data/lib/sportdb/console.rb +40 -2
- data/lib/sportdb/loader.rb +0 -16
- data/lib/sportdb/models/event.rb +0 -50
- data/lib/sportdb/reader.rb +61 -291
- data/lib/sportdb/utils.rb +226 -14
- data/lib/sportdb/version.rb +1 -1
- metadata +35 -20
- data/db/america/teams.rb +0 -57
- data/db/at/teams.rb +0 -93
- data/db/cl/teams.rb +0 -74
- data/db/copa/teams.rb +0 -51
- data/db/de/teams.rb +0 -36
- data/db/en/teams.rb +0 -40
- data/db/es/teams.rb +0 -18
- data/db/euro/teams.rb +0 -78
- data/db/mx/teams.rb +0 -29
- data/db/nhl/teams.rb +0 -51
- data/db/ro/teams.rb +0 -32
- data/db/world/teams.rb +0 -52
data/lib/sportdb/utils.rb
CHANGED
@@ -1,31 +1,243 @@
|
|
1
1
|
|
2
|
-
### some utils
|
2
|
+
### some utils moved to worldbdb/utils for reuse
|
3
3
|
|
4
|
-
|
4
|
+
|
5
|
+
module SportDB::FixtureHelpers
|
6
|
+
|
7
|
+
def is_round?( line )
|
8
|
+
line =~ /Spieltag|Runde|Achtelfinale|Viertelfinale|Halbfinale|Finale/
|
9
|
+
end
|
5
10
|
|
6
|
-
def
|
7
|
-
|
11
|
+
def is_group?( line )
|
12
|
+
# NB: check after is_round? (round may contain group reference!)
|
13
|
+
line =~ /Gruppe|Group/
|
14
|
+
end
|
15
|
+
|
16
|
+
def is_knockout_round?( line )
|
17
|
+
if line =~ /Achtelfinale|Viertelfinale|Halbfinale|Spiel um Platz 3|Finale|K\.O\.|Knockout/
|
18
|
+
puts " setting knockout flag to true"
|
19
|
+
true
|
20
|
+
else
|
21
|
+
false
|
22
|
+
end
|
8
23
|
end
|
24
|
+
|
25
|
+
def find_group_title_and_pos!( line )
|
26
|
+
## group pos - for now support single digit e.g 1,2,3 or letter e.g. A,B,C
|
27
|
+
## nb: (?:) = is for non-capturing group(ing)
|
28
|
+
regex = /(?:Group|Gruppe)\s+((?:\d{1}|[A-Z]{1}))\b/
|
29
|
+
|
30
|
+
match = regex.match( line )
|
31
|
+
|
32
|
+
return [nil,nil] if match.nil?
|
33
|
+
|
34
|
+
pos = case match[1]
|
35
|
+
when 'A' then 1
|
36
|
+
when 'B' then 2
|
37
|
+
when 'C' then 3
|
38
|
+
when 'D' then 4
|
39
|
+
when 'E' then 5
|
40
|
+
when 'F' then 6
|
41
|
+
when 'G' then 7
|
42
|
+
when 'H' then 8
|
43
|
+
when 'I' then 9
|
44
|
+
when 'J' then 10
|
45
|
+
else match[1].to_i
|
46
|
+
end
|
47
|
+
|
48
|
+
title = match[0]
|
9
49
|
|
10
|
-
|
11
|
-
|
50
|
+
puts " title: >#{title}<"
|
51
|
+
puts " pos: >#{pos}<"
|
52
|
+
|
53
|
+
line.sub!( regex, '[GROUP|TITLE+POS]' )
|
54
|
+
|
55
|
+
return [title,pos]
|
12
56
|
end
|
13
57
|
|
14
|
-
def
|
15
|
-
|
58
|
+
def find_round_pos!( line )
|
59
|
+
## fix/todo:
|
60
|
+
## if no round found assume last_pos+1 ??? why? why not?
|
61
|
+
|
62
|
+
regex = /\b(\d+)\b/
|
63
|
+
|
64
|
+
if line =~ regex
|
65
|
+
value = $1.to_i
|
66
|
+
puts " pos: >#{value}<"
|
67
|
+
|
68
|
+
line.sub!( regex, '[ROUND|POS]' )
|
69
|
+
|
70
|
+
return value
|
71
|
+
else
|
72
|
+
return nil
|
73
|
+
end
|
16
74
|
end
|
17
75
|
|
18
|
-
|
76
|
+
def find_date!( line )
|
77
|
+
# extract date from line
|
78
|
+
# and return it
|
79
|
+
# NB: side effect - removes date from line string
|
80
|
+
|
81
|
+
# e.g. 2012-09-14 20:30 => YYYY-MM-DD HH:MM
|
82
|
+
regex_db = /\b(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2})\b/
|
83
|
+
|
84
|
+
# e.g. 14.09. 20:30 => DD.MM. HH:MM
|
85
|
+
regex_de = /\b(\d{2})\.(\d{2})\.\s+(\d{2}):(\d{2})\b/
|
86
|
+
|
87
|
+
if line =~ regex_db
|
88
|
+
value = "#{$1}-#{$2}-#{$3} #{$4}:#{$5}"
|
89
|
+
puts " date: >#{value}<"
|
19
90
|
|
91
|
+
## todo: lets you configure year
|
92
|
+
## and time zone (e.g. cet, eet, utc, etc.)
|
93
|
+
|
94
|
+
line.sub!( regex_db, '[DATE.DB]' )
|
20
95
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
96
|
+
return DateTime.strptime( value, '%Y-%m-%d %H:%M' )
|
97
|
+
elsif line =~ regex_de
|
98
|
+
value = "2012-#{$2}-#{$1} #{$3}:#{$4}"
|
99
|
+
puts " date: >#{value}<"
|
100
|
+
|
101
|
+
## todo: lets you configure year
|
102
|
+
## and time zone (e.g. cet, eet, utc, etc.)
|
103
|
+
|
104
|
+
line.sub!( regex_de, '[DATE.DE]' )
|
105
|
+
|
106
|
+
return DateTime.strptime( value, '%Y-%m-%d %H:%M' )
|
107
|
+
else
|
108
|
+
return nil
|
25
109
|
end
|
26
110
|
end
|
27
|
-
end # class File
|
28
111
|
|
29
112
|
|
113
|
+
def find_game_pos!( line )
|
114
|
+
# extract optional game pos from line
|
115
|
+
# and return it
|
116
|
+
# NB: side effect - removes pos from line string
|
117
|
+
|
118
|
+
# e.g. (1) - must start line
|
119
|
+
regex = /^[ \t]*\((\d{1,3})\)[ \t]+/
|
120
|
+
if line =~ regex
|
121
|
+
puts " pos: >#{$1}<"
|
122
|
+
|
123
|
+
line.sub!( regex, '[POS] ' )
|
124
|
+
return $1.to_i
|
125
|
+
else
|
126
|
+
return nil
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
|
131
|
+
def find_scores!( line )
|
132
|
+
# extract score from line
|
133
|
+
# and return it
|
134
|
+
# NB: side effect - removes date from line string
|
135
|
+
|
136
|
+
# e.g. 1:2 or 0:2 or 3:3
|
137
|
+
regex = /\b(\d):(\d)\b/
|
138
|
+
|
139
|
+
# e.g. 1:2nV => overtime
|
140
|
+
regex_ot = /\b(\d):(\d)[ \t]?[nN][vV]\b/
|
141
|
+
|
142
|
+
# e.g. 5:4iE => penalty
|
143
|
+
regex_p = /\b(\d):(\d)[ \t]?[iI][eE]\b/
|
144
|
+
|
145
|
+
scores = []
|
146
|
+
|
147
|
+
if line =~ regex
|
148
|
+
puts " score: >#{$1}-#{$2}<"
|
149
|
+
|
150
|
+
line.sub!( regex, '[SCORE]' )
|
151
|
+
|
152
|
+
scores << $1.to_i
|
153
|
+
scores << $2.to_i
|
154
|
+
|
155
|
+
if line =~ regex_ot
|
156
|
+
puts " score.ot: >#{$1}-#{$2}<"
|
157
|
+
|
158
|
+
line.sub!( regex_ot, '[SCORE.OT]' )
|
159
|
+
|
160
|
+
scores << $1.to_i
|
161
|
+
scores << $2.to_i
|
162
|
+
|
163
|
+
if line =~ regex_p
|
164
|
+
puts " score.p: >#{$1}-#{$2}<"
|
165
|
+
|
166
|
+
line.sub!( regex_p, '[SCORE.P]' )
|
167
|
+
|
168
|
+
scores << $1.to_i
|
169
|
+
scores << $2.to_i
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
scores
|
174
|
+
end # methdod find_scores!
|
175
|
+
|
176
|
+
|
177
|
+
def find_team_worker!( line, index )
|
178
|
+
regex = /@@oo([^@]+?)oo@@/ # e.g. everything in @@ .... @@ (use non-greedy +? plus all chars but not @, that is [^@])
|
179
|
+
|
180
|
+
if line =~ regex
|
181
|
+
value = "#{$1}"
|
182
|
+
puts " team#{index}: >#{value}<"
|
183
|
+
|
184
|
+
line.sub!( regex, "[TEAM#{index}]" )
|
185
|
+
|
186
|
+
return $1
|
187
|
+
else
|
188
|
+
return nil
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
def find_teams!( line )
|
193
|
+
counter = 1
|
194
|
+
teams = []
|
195
|
+
|
196
|
+
team = find_team_worker!( line, counter )
|
197
|
+
while team.present?
|
198
|
+
teams << team
|
199
|
+
counter += 1
|
200
|
+
team = find_team_worker!( line, counter )
|
201
|
+
end
|
202
|
+
|
203
|
+
teams
|
204
|
+
end
|
205
|
+
|
206
|
+
def find_team1!( line )
|
207
|
+
find_team_worker!( line, 1 )
|
208
|
+
end
|
209
|
+
|
210
|
+
def find_team2!( line )
|
211
|
+
find_team_worker!( line, 2 )
|
212
|
+
end
|
213
|
+
|
214
|
+
|
215
|
+
def match_team_worker!( line, key, values )
|
216
|
+
values.each do |value|
|
217
|
+
## nb: \b does NOT include space or newline for word boundry (only alphanums e.g. a-z0-9)
|
218
|
+
## (thus add it, allows match for Benfica Lis. for example - note . at the end)
|
219
|
+
|
220
|
+
## check add $ e.g. (\b| |\t|$) does this work? - check w/ Benfica Lis.$
|
221
|
+
regex = /\b#{value}(\b| |\t|$)/ # wrap with world boundry (e.g. match only whole words e.g. not wac in wacker)
|
222
|
+
if line =~ regex
|
223
|
+
puts " match for team >#{key}< >#{value}<"
|
224
|
+
# make sure @@oo{key}oo@@ doesn't match itself with other key e.g. wacker, wac, etc.
|
225
|
+
line.sub!( regex, "@@oo#{key}oo@@ " ) # NB: add one space char at end
|
226
|
+
return true # break out after first match (do NOT continue)
|
227
|
+
end
|
228
|
+
end
|
229
|
+
return false
|
230
|
+
end
|
231
|
+
|
232
|
+
## todo/fix: pass in known_teams as a parameter? why? why not?
|
233
|
+
def match_teams!( line )
|
234
|
+
@known_teams.each do |rec|
|
235
|
+
key = rec[0]
|
236
|
+
values = rec[1]
|
237
|
+
match_team_worker!( line, key, values )
|
238
|
+
end # each known_teams
|
239
|
+
end # method translate_teams!
|
240
|
+
|
30
241
|
|
242
|
+
end # module SportDB::FixtureHelpers
|
31
243
|
|
data/lib/sportdb/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sportdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 63
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 2
|
10
|
+
version: 0.9.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Gerald Bauer
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-11-
|
18
|
+
date: 2012-11-21 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: activerecord
|
@@ -40,12 +40,12 @@ dependencies:
|
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
hash:
|
43
|
+
hash: 11
|
44
44
|
segments:
|
45
45
|
- 0
|
46
|
-
-
|
47
|
-
-
|
48
|
-
version: 0.
|
46
|
+
- 5
|
47
|
+
- 0
|
48
|
+
version: 0.5.0
|
49
49
|
type: :runtime
|
50
50
|
version_requirements: *id002
|
51
51
|
- !ruby/object:Gem::Dependency
|
@@ -87,18 +87,31 @@ extensions: []
|
|
87
87
|
extra_rdoc_files:
|
88
88
|
- Manifest.txt
|
89
89
|
- db/america/2011.txt
|
90
|
+
- db/america/teams.txt
|
90
91
|
- db/at/2011_12/bl.txt
|
91
92
|
- db/at/2012_13/bl.txt
|
92
93
|
- db/at/2012_13/cup.txt
|
94
|
+
- db/at/teams.txt
|
95
|
+
- db/cl/teams.txt
|
93
96
|
- db/copa/sud_2012_13.txt
|
97
|
+
- db/copa/teams.txt
|
94
98
|
- db/de/2012_13/bl.txt
|
99
|
+
- db/de/teams.txt
|
95
100
|
- db/en/2012_13/pl.txt
|
101
|
+
- db/en/teams.txt
|
102
|
+
- db/es/teams.txt
|
96
103
|
- db/euro/2008.txt
|
104
|
+
- db/euro/2012.txt
|
105
|
+
- db/euro/teams.txt
|
97
106
|
- db/mx/apertura_2012.txt
|
107
|
+
- db/mx/teams.txt
|
108
|
+
- db/nhl/teams.txt
|
109
|
+
- db/ro/teams.txt
|
98
110
|
- db/world/2010.txt
|
99
111
|
- db/world/quali_2012_13_america.txt
|
100
112
|
- db/world/quali_2012_13_europe_c.txt
|
101
113
|
- db/world/quali_2012_13_europe_i.txt
|
114
|
+
- db/world/teams.txt
|
102
115
|
files:
|
103
116
|
- History.markdown
|
104
117
|
- Manifest.txt
|
@@ -107,7 +120,8 @@ files:
|
|
107
120
|
- bin/sportdb
|
108
121
|
- db/america/2011.rb
|
109
122
|
- db/america/2011.txt
|
110
|
-
- db/america/
|
123
|
+
- db/america/2011.yml
|
124
|
+
- db/america/teams.txt
|
111
125
|
- db/at/2011_12/bl.rb
|
112
126
|
- db/at/2011_12/bl.txt
|
113
127
|
- db/at/2011_12/cup.rb
|
@@ -116,34 +130,35 @@ files:
|
|
116
130
|
- db/at/2012_13/cup.rb
|
117
131
|
- db/at/2012_13/cup.txt
|
118
132
|
- db/at/badges.rb
|
119
|
-
- db/at/teams.
|
133
|
+
- db/at/teams.txt
|
120
134
|
- db/cl/2011_12/cl.rb
|
121
135
|
- db/cl/2011_12/el.rb
|
122
136
|
- db/cl/2012_13/cl.rb
|
123
137
|
- db/cl/badges.rb
|
124
|
-
- db/cl/teams.
|
138
|
+
- db/cl/teams.txt
|
125
139
|
- db/copa/sud_2012_13.rb
|
126
140
|
- db/copa/sud_2012_13.txt
|
127
|
-
- db/copa/teams.
|
141
|
+
- db/copa/teams.txt
|
128
142
|
- db/de/2012_13/bl.rb
|
129
143
|
- db/de/2012_13/bl.txt
|
130
|
-
- db/de/teams.
|
144
|
+
- db/de/teams.txt
|
131
145
|
- db/en/2012_13/pl.rb
|
132
146
|
- db/en/2012_13/pl.txt
|
133
|
-
- db/en/teams.
|
134
|
-
- db/es/teams.
|
147
|
+
- db/en/teams.txt
|
148
|
+
- db/es/teams.txt
|
135
149
|
- db/euro/2008.rb
|
136
150
|
- db/euro/2008.txt
|
137
151
|
- db/euro/2012.rb
|
138
|
-
- db/euro/
|
152
|
+
- db/euro/2012.txt
|
153
|
+
- db/euro/teams.txt
|
139
154
|
- db/leagues.rb
|
140
155
|
- db/mx/apertura_2012.rb
|
141
156
|
- db/mx/apertura_2012.txt
|
142
|
-
- db/mx/teams.
|
157
|
+
- db/mx/teams.txt
|
143
158
|
- db/nfl/teams.rb
|
144
|
-
- db/nhl/teams.
|
159
|
+
- db/nhl/teams.txt
|
145
160
|
- db/ro/l1_2012_13.rb
|
146
|
-
- db/ro/teams.
|
161
|
+
- db/ro/teams.txt
|
147
162
|
- db/seasons.rb
|
148
163
|
- db/world/2010.rb
|
149
164
|
- db/world/2010.txt
|
@@ -152,7 +167,7 @@ files:
|
|
152
167
|
- db/world/quali_2012_13_europe.rb
|
153
168
|
- db/world/quali_2012_13_europe_c.txt
|
154
169
|
- db/world/quali_2012_13_europe_i.txt
|
155
|
-
- db/world/teams.
|
170
|
+
- db/world/teams.txt
|
156
171
|
- lib/sportdb.rb
|
157
172
|
- lib/sportdb/cli/opts.rb
|
158
173
|
- lib/sportdb/cli/runner.rb
|
data/db/america/teams.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
##############
|
4
|
-
## south america
|
5
|
-
|
6
|
-
ar = Country.find_by_key!( 'ar' )
|
7
|
-
br = Country.find_by_key!( 'br' )
|
8
|
-
cl = Country.find_by_key!( 'cl' )
|
9
|
-
py = Country.find_by_key!( 'py' )
|
10
|
-
uy = Country.find_by_key!( 'uy' )
|
11
|
-
co = Country.find_by_key!( 'co' )
|
12
|
-
ec = Country.find_by_key!( 'ec' )
|
13
|
-
pe = Country.find_by_key!( 'pe' )
|
14
|
-
ve = Country.find_by_key!( 've' )
|
15
|
-
bo = Country.find_by_key!( 'bo' )
|
16
|
-
|
17
|
-
teams_america1 = [
|
18
|
-
[ 'arg', 'Argentinien', 'ARG', ar ],
|
19
|
-
[ 'bra', 'Brasilien', 'BRA', br ],
|
20
|
-
[ 'chi', 'Chile', 'CHI', cl ],
|
21
|
-
[ 'par', 'Paraguay', 'PAR', py ],
|
22
|
-
[ 'uru', 'Uruguay', 'URU', uy ],
|
23
|
-
[ 'col', 'Kolumbien', 'COL', co ],
|
24
|
-
[ 'ecu', 'Ecuador', 'ECU', ec ],
|
25
|
-
[ 'per', 'Peru', 'PER', pe ],
|
26
|
-
[ 'ven', 'Venezuela', 'VEN', ve ],
|
27
|
-
[ 'bol', 'Bolivien', 'BOL', bo ]
|
28
|
-
]
|
29
|
-
|
30
|
-
|
31
|
-
#####################
|
32
|
-
#### north/central america & caribbean islands
|
33
|
-
|
34
|
-
mx = Country.find_by_key!( 'mx' )
|
35
|
-
us = Country.find_by_key!( 'us' )
|
36
|
-
hn = Country.find_by_key!( 'hn' )
|
37
|
-
cr = Country.find_by_key!( 'cr' )
|
38
|
-
sv = Country.find_by_key!( 'sv' )
|
39
|
-
gy = Country.find_by_key!( 'gy' )
|
40
|
-
|
41
|
-
teams_america2 = [
|
42
|
-
[ 'mex', 'Mexiko|México', 'MEX', mx ],
|
43
|
-
[ 'usa', 'Vereinigte Staaten|United States', 'USA', us ],
|
44
|
-
[ 'hon', 'Honduras', 'HON', hn ],
|
45
|
-
[ 'crc', 'Costa Rica', 'CRC', cr ],
|
46
|
-
[ 'slv', 'El Salvador', 'SLV', sv ],
|
47
|
-
[ 'guy', 'Guyana', 'GUY', gy ],
|
48
|
-
]
|
49
|
-
|
50
|
-
|
51
|
-
teams = teams_america1 + teams_america2
|
52
|
-
|
53
|
-
Team.create_from_ary!( teams, national: true )
|
54
|
-
|
55
|
-
|
56
|
-
## The End
|
57
|
-
#################
|