sportdb-formats 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sportdb/formats/scores.rb +64 -52
- data/lib/sportdb/formats/version.rb +1 -1
- data/test/test_scores.rb +4 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '08b90c09533628f176c7c08778634c557898b5ca'
|
4
|
+
data.tar.gz: 434a9655f2d11614016322bb7829b975866aa9ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6dc601d34ae8d5bb66b181cb09228d40792c2af2a360b82203f711fdfae309353bf1d3f01b79f5c0d4d41e0a64b0d69709193b553065950364a7d4e7bf5a72d3
|
7
|
+
data.tar.gz: a583d31ff5fd7d6201c7f85499b448e0f73111a71d679511ca13b82d798ba3a12a40a57be42a821760a3dbafeafe9ab16a8c48b7d46c7f582df27c4f43de175c
|
@@ -7,8 +7,9 @@ class ScoresFinder
|
|
7
7
|
include LogUtils::Logging
|
8
8
|
|
9
9
|
|
10
|
-
## e.g. 3-4 pen. 2-2 a.e.t. (1-1, 1-1)
|
11
|
-
|
10
|
+
## e.g. 3-4 pen. 2-2 a.e.t. (1-1, 1-1) or
|
11
|
+
## 3-4 pen. 2-2 a.e.t. (1-1, )
|
12
|
+
EN__P_ET_FT_HT__RE = /\b
|
12
13
|
(?<score1p>\d{1,2})
|
13
14
|
-
|
14
15
|
(?<score2p>\d{1,2})
|
@@ -28,16 +29,19 @@ class ScoresFinder
|
|
28
29
|
\s*
|
29
30
|
,
|
30
31
|
\s*
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
(?:
|
33
|
+
(?<score1i>\d{1,2})
|
34
|
+
-
|
35
|
+
(?<score2i>\d{1,2})
|
36
|
+
)? # note: make half time (HT) score optional for now
|
37
|
+
\)
|
35
38
|
(?=[\s\]]|$)/xi ## todo/check: remove loakahead assertion here - why require space?
|
36
39
|
## note: \b works only after non-alphanum e.g. )
|
37
40
|
|
38
41
|
|
39
|
-
## e.g. 2-1 a.e.t. (1-1, 0-0)
|
40
|
-
|
42
|
+
## e.g. 2-1 a.e.t. (1-1, 0-0) or
|
43
|
+
## 2-1 a.e.t. (1-1, )
|
44
|
+
EN__ET_FT_HT__RE = /\b
|
41
45
|
(?<score1et>\d{1,2})
|
42
46
|
-
|
43
47
|
(?<score2et>\d{1,2})
|
@@ -51,16 +55,18 @@ class ScoresFinder
|
|
51
55
|
\s*
|
52
56
|
,
|
53
57
|
\s*
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
+
(?:
|
59
|
+
(?<score1i>\d{1,2})
|
60
|
+
-
|
61
|
+
(?<score2i>\d{1,2})
|
62
|
+
)? # note: make half time (HT) score optional for now
|
63
|
+
\)
|
58
64
|
(?=[\s\]]|$)/xi ## todo/check: remove loakahead assertion here - why require space?
|
59
65
|
## note: \b works only after non-alphanum e.g. )
|
60
66
|
|
61
67
|
|
62
68
|
## e.g. 2-1 (1-1)
|
63
|
-
|
69
|
+
EN__FT_HT__RE = /\b
|
64
70
|
(?<score1>\d{1,2})
|
65
71
|
-
|
66
72
|
(?<score2>\d{1,2})
|
@@ -81,7 +87,7 @@ class ScoresFinder
|
|
81
87
|
# e.g. 1:2 or 0:2 or 3:3 or
|
82
88
|
# 1-1 or 0-2 or 3-3 or
|
83
89
|
# 1x1 or 1X1 or 0x2 or 3x3 -- used in Brazil / Portugal
|
84
|
-
|
90
|
+
FT_RE = /\b
|
85
91
|
(?<score1>\d{1,2})
|
86
92
|
[:\-xX]
|
87
93
|
(?<score2>\d{1,2})
|
@@ -91,7 +97,7 @@ class ScoresFinder
|
|
91
97
|
# e.g. 1:2nV => after extra time a.e.t
|
92
98
|
|
93
99
|
# note: possible ending w/ . -> thus cannot use /b will not work w/ .; use zero look-ahead
|
94
|
-
|
100
|
+
ET_RE = /\b
|
95
101
|
(?<score1>\d{1,2})
|
96
102
|
[:\-xX]
|
97
103
|
(?<score2>\d{1,2})
|
@@ -105,7 +111,7 @@ class ScoresFinder
|
|
105
111
|
|
106
112
|
|
107
113
|
# note: possible ending w/ . -> thus cannot use /b will not work w/ .; use zero look-ahead
|
108
|
-
|
114
|
+
P_RE = /\b
|
109
115
|
(?<score1>\d{1,2})
|
110
116
|
[:\-xX]
|
111
117
|
(?<score2>\d{1,2})
|
@@ -153,72 +159,78 @@ class ScoresFinder
|
|
153
159
|
score2p = nil
|
154
160
|
|
155
161
|
|
156
|
-
if (
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
162
|
+
if (m = EN__P_ET_FT_HT__RE.match( line ))
|
163
|
+
if m[:score1i] && m[:score2i] ## note: half time (HT) score is optional now
|
164
|
+
score1i = m[:score1i].to_i
|
165
|
+
score2i = m[:score2i].to_i
|
166
|
+
end
|
167
|
+
|
168
|
+
score1 = m[:score1].to_i
|
169
|
+
score2 = m[:score2].to_i
|
170
|
+
score1et = m[:score1et].to_i
|
171
|
+
score2et = m[:score2et].to_i
|
172
|
+
score1p = m[:score1p].to_i
|
173
|
+
score2p = m[:score2p].to_i
|
165
174
|
|
166
175
|
logger.debug " score.en__p_et_ft_ht: >#{score1p}-#{score2p} pen. #{score1et}-#{score2et} a.e.t. (#{score1}-#{score2}, #{score1i}-#{score2i})<"
|
167
176
|
|
168
|
-
line.sub!(
|
177
|
+
line.sub!( m[0], '[SCORES.EN__P_ET_FT_HT]' )
|
178
|
+
|
179
|
+
elsif (m = EN__ET_FT_HT__RE.match( line ))
|
180
|
+
if m[:score1i] && m[:score2i] ## note: half time (HT) score is optional now
|
181
|
+
score1i = m[:score1i].to_i
|
182
|
+
score2i = m[:score2i].to_i
|
183
|
+
end
|
169
184
|
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
score2 = md[:score2].to_i
|
175
|
-
score1et = md[:score1et].to_i
|
176
|
-
score2et = md[:score2et].to_i
|
185
|
+
score1 = m[:score1].to_i
|
186
|
+
score2 = m[:score2].to_i
|
187
|
+
score1et = m[:score1et].to_i
|
188
|
+
score2et = m[:score2et].to_i
|
177
189
|
|
178
190
|
logger.debug " score.en__et_ft_ht: >#{score1et}-#{score2et} a.e.t. (#{score1}-#{score2}, #{score1i}-#{score2i})<"
|
179
191
|
|
180
|
-
line.sub!(
|
192
|
+
line.sub!( m[0], '[SCORES.EN__ET_FT_HT]' )
|
181
193
|
|
182
|
-
elsif (
|
183
|
-
score1i =
|
184
|
-
score2i =
|
185
|
-
score1 =
|
186
|
-
score2 =
|
194
|
+
elsif (m = EN__FT_HT__RE.match( line ))
|
195
|
+
score1i = m[:score1i].to_i
|
196
|
+
score2i = m[:score2i].to_i
|
197
|
+
score1 = m[:score1].to_i
|
198
|
+
score2 = m[:score2].to_i
|
187
199
|
|
188
200
|
logger.debug " score.en__ft_ht: >#{score1}-#{score2} (#{score1i}-#{score2i})<"
|
189
201
|
|
190
|
-
line.sub!(
|
202
|
+
line.sub!( m[0], '[SCORES.EN__FT_HT]' )
|
191
203
|
else
|
192
204
|
#######################################################
|
193
205
|
## try "standard" generic patterns for fallbacks
|
194
206
|
|
195
|
-
if (
|
196
|
-
score1et =
|
197
|
-
score2et =
|
207
|
+
if (m = ET_RE.match( line ))
|
208
|
+
score1et = m[:score1].to_i
|
209
|
+
score2et = m[:score2].to_i
|
198
210
|
|
199
211
|
logger.debug " score.et: >#{score1et}-#{score2et}<"
|
200
212
|
|
201
|
-
line.sub!(
|
213
|
+
line.sub!( m[0], '[SCORE.ET]' )
|
202
214
|
end
|
203
215
|
|
204
|
-
if (
|
205
|
-
score1p =
|
206
|
-
score2p =
|
216
|
+
if (m = P_RE.match( line ))
|
217
|
+
score1p = m[:score1].to_i
|
218
|
+
score2p = m[:score2].to_i
|
207
219
|
|
208
220
|
logger.debug " score.p: >#{score1p}-#{score2p}<"
|
209
221
|
|
210
|
-
line.sub!(
|
222
|
+
line.sub!( m[0], '[SCORE.P]' )
|
211
223
|
end
|
212
224
|
|
213
225
|
## let full time (ft) standard regex go last - has no marker
|
214
226
|
|
215
|
-
if (
|
216
|
-
score1 =
|
217
|
-
score2 =
|
227
|
+
if (m = FT_RE.match( line ))
|
228
|
+
score1 = m[:score1].to_i
|
229
|
+
score2 = m[:score2].to_i
|
218
230
|
|
219
231
|
logger.debug " score: >#{score1}-#{score2}<"
|
220
232
|
|
221
|
-
line.sub!(
|
233
|
+
line.sub!( m[0], '[SCORE]' )
|
222
234
|
end
|
223
235
|
end
|
224
236
|
|
data/test/test_scores.rb
CHANGED
@@ -70,6 +70,10 @@ class TestScores < MiniTest::Test
|
|
70
70
|
[ '3-4 pen 2-2 a.e.t. (1-1, 1-1)', [1,1,1,1,2,2,3,4]],
|
71
71
|
[ '3-4p 2-2aet (1-1, 1-1)', [1,1,1,1,2,2,3,4]],
|
72
72
|
[ '3-4PSO 2-2AET (1-1, 1-1)', [1,1,1,1,2,2,3,4]],
|
73
|
+
|
74
|
+
[ '4-3 pen. 1-0 a.e.t. (1-0, )', [nil,nil,1,0,1,0,4,3]],
|
75
|
+
[ '3-4 pen. 2-1 a.e.t. (2-1, )', [nil,nil,2,1,2,1,3,4]],
|
76
|
+
[ '4-1 a.e.t. (3-1, )', [nil,nil,3,1,4,1]],
|
73
77
|
]
|
74
78
|
|
75
79
|
assert_scores( data )
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sportdb-formats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.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:
|
11
|
+
date: 2020-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: alphabets
|