sportdb-formats 0.2.0 → 0.2.1
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 +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
|