lib/sportdb/utils.rb in sportdb-1.7.6 vs lib/sportdb/utils.rb in sportdb-1.7.7
- old
+ new
@@ -385,57 +385,87 @@
def find_game_pos!( line )
## fix: add depreciation warning - remove - use find_leading_pos!
find_leading_pos!( line )
end
+
def find_scores!( line )
+ # note: always call after find_dates !!!
+ # scores match date-like patterns!! e.g. 10-11 or 10:00 etc.
+ # -- note: score might have two digits too
+
### fix: depending on language allow 1:1 or 1-1
## do NOT allow mix and match
## e.g. default to en is 1-1
## de is 1:1 etc.
# extract score from line
# and return it
# NB: side effect - removes date from line string
+ # note: regex should NOT match regex extra time or penalty
+ # thus, we do NOT any longer allow spaces for now between
+ # score and marker (e.g. nV,iE, etc.)
+
# e.g. 1:2 or 0:2 or 3:3 // 1-1 or 0-2 or 3-3
- regex = /\b(\d)[:\-](\d)\b/
-
- # e.g. 1:2nV => overtime
- regex_ot = /\b(\d)[:\-](\d)[ \t]?[nN][vV]\b/
-
- # e.g. 5:4iE => penalty
- regex_p = /\b(\d)[:\-](\d)[ \t]?[iI][eE]\b/
-
+ regex = /\b(\d{1,2})[:\-](\d{1,2})\b/
+
+ ## todo: add/allow english markers e.g. aet ??
+
+ ## fix: use case insansitive flag instead e.g. /i
+ # instead of [nN] etc.
+
+ # e.g. 1:2nV => after extra time a.e.t
+ regex_et = /\b(\d{1,2})[:\-](\d{1,2})[nN][vV]\b/
+
+ # e.g. 5:4iE => penalty / after penalty a.p
+ regex_p = /\b(\d{1,2})[:\-](\d{1,2})[iI][eE]\b/
+
scores = []
-
+
+ ## todo: how to handle game w/o extra time
+ # but w/ optional penalty ??? e.g. used in copa liberatores, for example
+ # retrun 0,0 or nil,nil for extra time score ?? or -1, -1 ??
+ # for now use nil,nil
+
if line =~ regex
logger.debug " score: >#{$1}-#{$2}<"
line.sub!( regex, '[SCORE]' )
scores << $1.to_i
scores << $2.to_i
+ end
+
+ ## todo:
+ ## reverse matching order ??? allows us to support spaces for nV and iE
+ ## why? why not??
+
+ if line =~ regex_et
+ logger.debug " score.et: >#{$1}-#{$2}<"
- if line =~ regex_ot
- logger.debug " score.ot: >#{$1}-#{$2}<"
-
- line.sub!( regex_ot, '[SCORE.OT]' )
+ line.sub!( regex_et, '[SCORE.ET]' )
- scores << $1.to_i
- scores << $2.to_i
+ ## check scores empty? - fill with nil,nil
+ scores += [nil,nil] if scores.size == 0
+
+ scores << $1.to_i
+ scores << $2.to_i
+ end
+
+ if line =~ regex_p
+ logger.debug " score.p: >#{$1}-#{$2}<"
- if line =~ regex_p
- logger.debug " score.p: >#{$1}-#{$2}<"
-
- line.sub!( regex_p, '[SCORE.P]' )
+ line.sub!( regex_p, '[SCORE.P]' )
- scores << $1.to_i
- scores << $2.to_i
- end
- end
+ ## check scores empty? - fill with nil,nil
+ scores += [nil,nil] if scores.size == 0
+ scores += [nil,nil] if scores.size == 2
+
+ scores << $1.to_i
+ scores << $2.to_i
end
scores
end # methdod find_scores!