sportdb-models 1.14.0 → 1.14.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/Manifest.txt +153 -148
- data/lib/sportdb/finders/date.rb +153 -81
- data/lib/sportdb/models.rb +3 -0
- data/lib/sportdb/rsssf_reader.rb +320 -0
- data/lib/sportdb/utils_date.rb +6 -0
- data/lib/sportdb/version.rb +1 -1
- data/test/data/at-austria/2014_15/1-bundesliga.yml +18 -0
- data/test/data/at-austria/2015_16/1-bundesliga.yml +1 -5
- data/test/data/at-austria/teams.txt +8 -15
- data/test/data/at-austria/teams_2.txt +3 -16
- data/test/data/rsssf/at-2014-15--1-bundesliga.txt +339 -0
- data/test/data/rsssf/at-2015-16--1-bundesliga.txt +18 -0
- data/test/test_rsssf_reader.rb +76 -0
- metadata +9 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf909494cd7fbd51b980c7e109ad3d61bee25c8f
|
4
|
+
data.tar.gz: a8b43bdc6c24e06f632af294f2878a164373003d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91f1926c5fc03895d000801f5481845f5cf8bd96fdd08b310aa13ce1427f9c1dbab514227f3d82f9bbc38dbd4d246445a6405c0027175b4b93c6c435d6d66fea
|
7
|
+
data.tar.gz: 8a710213ac56aca68ef77450d44073adca016feed8f448c08105b317f8d9006852956449fa2c9aa7afeeb92c37f44097f38484c0acee3f534f6b34da785e688b
|
data/Manifest.txt
CHANGED
@@ -1,148 +1,153 @@
|
|
1
|
-
HISTORY.md
|
2
|
-
Manifest.txt
|
3
|
-
README.md
|
4
|
-
Rakefile
|
5
|
-
config/fixtures/de.yml
|
6
|
-
config/fixtures/en.yml
|
7
|
-
config/fixtures/es.yml
|
8
|
-
config/fixtures/fr.yml
|
9
|
-
config/fixtures/it.yml
|
10
|
-
config/fixtures/pt.yml
|
11
|
-
config/fixtures/ro.yml
|
12
|
-
data/seasons.txt
|
13
|
-
data/setups/all.txt
|
14
|
-
lib/sportdb/calc.rb
|
15
|
-
lib/sportdb/deleter.rb
|
16
|
-
lib/sportdb/finders/date.rb
|
17
|
-
lib/sportdb/finders/goals.rb
|
18
|
-
lib/sportdb/finders/scores.rb
|
19
|
-
lib/sportdb/lang.rb
|
20
|
-
lib/sportdb/matcher.rb
|
21
|
-
lib/sportdb/models.rb
|
22
|
-
lib/sportdb/models/assoc.rb
|
23
|
-
lib/sportdb/models/assoc_assoc.rb
|
24
|
-
lib/sportdb/models/badge.rb
|
25
|
-
lib/sportdb/models/event.rb
|
26
|
-
lib/sportdb/models/event_ground.rb
|
27
|
-
lib/sportdb/models/event_team.rb
|
28
|
-
lib/sportdb/models/forward.rb
|
29
|
-
lib/sportdb/models/game.rb
|
30
|
-
lib/sportdb/models/goal.rb
|
31
|
-
lib/sportdb/models/ground.rb
|
32
|
-
lib/sportdb/models/group.rb
|
33
|
-
lib/sportdb/models/group_team.rb
|
34
|
-
lib/sportdb/models/league.rb
|
35
|
-
lib/sportdb/models/person.rb
|
36
|
-
lib/sportdb/models/roster.rb
|
37
|
-
lib/sportdb/models/round.rb
|
38
|
-
lib/sportdb/models/season.rb
|
39
|
-
lib/sportdb/models/stats/alltime_standing.rb
|
40
|
-
lib/sportdb/models/stats/alltime_standing_entry.rb
|
41
|
-
lib/sportdb/models/stats/event_standing.rb
|
42
|
-
lib/sportdb/models/stats/event_standing_entry.rb
|
43
|
-
lib/sportdb/models/stats/group_standing.rb
|
44
|
-
lib/sportdb/models/stats/group_standing_entry.rb
|
45
|
-
lib/sportdb/models/team.rb
|
46
|
-
lib/sportdb/models/team_compat.rb
|
47
|
-
lib/sportdb/models/utils.rb
|
48
|
-
lib/sportdb/models/world/city.rb
|
49
|
-
lib/sportdb/models/world/continent.rb
|
50
|
-
lib/sportdb/models/world/country.rb
|
51
|
-
lib/sportdb/models/world/state.rb
|
52
|
-
lib/sportdb/patterns.rb
|
53
|
-
lib/sportdb/pretty_printer.rb
|
54
|
-
lib/sportdb/reader.rb
|
55
|
-
lib/sportdb/reader_file.rb
|
56
|
-
lib/sportdb/reader_zip.rb
|
57
|
-
lib/sportdb/readers/assoc.rb
|
58
|
-
lib/sportdb/readers/event.rb
|
59
|
-
lib/sportdb/readers/game.rb
|
60
|
-
lib/sportdb/readers/ground.rb
|
61
|
-
lib/sportdb/readers/league.rb
|
62
|
-
lib/sportdb/readers/season.rb
|
63
|
-
lib/sportdb/readers/squad_club.rb
|
64
|
-
lib/sportdb/readers/squad_national_team.rb
|
65
|
-
lib/sportdb/readers/team.rb
|
66
|
-
lib/sportdb/
|
67
|
-
lib/sportdb/
|
68
|
-
lib/sportdb/
|
69
|
-
lib/sportdb/
|
70
|
-
lib/sportdb/
|
71
|
-
lib/sportdb/
|
72
|
-
lib/sportdb/
|
73
|
-
lib/sportdb/
|
74
|
-
lib/sportdb/
|
75
|
-
lib/sportdb/
|
76
|
-
lib/sportdb/
|
77
|
-
lib/sportdb/
|
78
|
-
|
79
|
-
test/data/at-austria/2013_14/bl.
|
80
|
-
test/data/at-austria/2013_14/
|
81
|
-
test/data/at-austria/2013_14/
|
82
|
-
test/data/at-austria/2013_14/el.
|
83
|
-
test/data/at-austria/2013_14/
|
84
|
-
test/data/at-austria/2013_14/squads/
|
85
|
-
test/data/at-austria/
|
86
|
-
test/data/at-austria/
|
87
|
-
test/data/at-austria/
|
88
|
-
test/data/at-austria/
|
89
|
-
test/data/at-austria/
|
90
|
-
test/data/at-austria/
|
91
|
-
test/data/
|
92
|
-
test/data/
|
93
|
-
test/data/national-teams/
|
94
|
-
test/data/national-teams/
|
95
|
-
test/data/national-teams/
|
96
|
-
test/data/national-teams/
|
97
|
-
test/data/
|
98
|
-
test/data/
|
99
|
-
test/data/players/
|
100
|
-
test/data/
|
101
|
-
test/data/
|
102
|
-
test/data/
|
103
|
-
test/data/
|
104
|
-
test/data/world-cup/
|
105
|
-
test/data/world-cup/
|
106
|
-
test/data/world-cup/
|
107
|
-
test/data/world-cup/
|
108
|
-
test/data/world-cup/
|
109
|
-
test/data/world-cup/
|
110
|
-
test/data/world-cup/
|
111
|
-
test/data/world-cup/
|
112
|
-
test/data/world-cup/
|
113
|
-
test/data/world-cup/
|
114
|
-
test/data/world-cup/
|
115
|
-
test/data/world-cup/
|
116
|
-
test/data/world-cup/2014/
|
117
|
-
test/data/world-cup/2014/
|
118
|
-
test/data/world-cup/
|
119
|
-
test/data/world-cup/
|
120
|
-
test/data/world-cup/
|
121
|
-
test/data/world-cup/
|
122
|
-
test/data/world-cup/
|
123
|
-
test/data/world-cup/
|
124
|
-
test/data/world-cup/
|
125
|
-
test/data/world-cup/
|
126
|
-
test/data/world-cup/
|
127
|
-
test/
|
128
|
-
test/
|
129
|
-
test/
|
130
|
-
test/
|
131
|
-
test/
|
132
|
-
test/
|
133
|
-
test/
|
134
|
-
test/
|
135
|
-
test/
|
136
|
-
test/
|
137
|
-
test/
|
138
|
-
test/
|
139
|
-
test/
|
140
|
-
test/
|
141
|
-
test/
|
142
|
-
test/
|
143
|
-
test/
|
144
|
-
test/
|
145
|
-
test/
|
146
|
-
test/
|
147
|
-
test/
|
148
|
-
test/
|
1
|
+
HISTORY.md
|
2
|
+
Manifest.txt
|
3
|
+
README.md
|
4
|
+
Rakefile
|
5
|
+
config/fixtures/de.yml
|
6
|
+
config/fixtures/en.yml
|
7
|
+
config/fixtures/es.yml
|
8
|
+
config/fixtures/fr.yml
|
9
|
+
config/fixtures/it.yml
|
10
|
+
config/fixtures/pt.yml
|
11
|
+
config/fixtures/ro.yml
|
12
|
+
data/seasons.txt
|
13
|
+
data/setups/all.txt
|
14
|
+
lib/sportdb/calc.rb
|
15
|
+
lib/sportdb/deleter.rb
|
16
|
+
lib/sportdb/finders/date.rb
|
17
|
+
lib/sportdb/finders/goals.rb
|
18
|
+
lib/sportdb/finders/scores.rb
|
19
|
+
lib/sportdb/lang.rb
|
20
|
+
lib/sportdb/matcher.rb
|
21
|
+
lib/sportdb/models.rb
|
22
|
+
lib/sportdb/models/assoc.rb
|
23
|
+
lib/sportdb/models/assoc_assoc.rb
|
24
|
+
lib/sportdb/models/badge.rb
|
25
|
+
lib/sportdb/models/event.rb
|
26
|
+
lib/sportdb/models/event_ground.rb
|
27
|
+
lib/sportdb/models/event_team.rb
|
28
|
+
lib/sportdb/models/forward.rb
|
29
|
+
lib/sportdb/models/game.rb
|
30
|
+
lib/sportdb/models/goal.rb
|
31
|
+
lib/sportdb/models/ground.rb
|
32
|
+
lib/sportdb/models/group.rb
|
33
|
+
lib/sportdb/models/group_team.rb
|
34
|
+
lib/sportdb/models/league.rb
|
35
|
+
lib/sportdb/models/person.rb
|
36
|
+
lib/sportdb/models/roster.rb
|
37
|
+
lib/sportdb/models/round.rb
|
38
|
+
lib/sportdb/models/season.rb
|
39
|
+
lib/sportdb/models/stats/alltime_standing.rb
|
40
|
+
lib/sportdb/models/stats/alltime_standing_entry.rb
|
41
|
+
lib/sportdb/models/stats/event_standing.rb
|
42
|
+
lib/sportdb/models/stats/event_standing_entry.rb
|
43
|
+
lib/sportdb/models/stats/group_standing.rb
|
44
|
+
lib/sportdb/models/stats/group_standing_entry.rb
|
45
|
+
lib/sportdb/models/team.rb
|
46
|
+
lib/sportdb/models/team_compat.rb
|
47
|
+
lib/sportdb/models/utils.rb
|
48
|
+
lib/sportdb/models/world/city.rb
|
49
|
+
lib/sportdb/models/world/continent.rb
|
50
|
+
lib/sportdb/models/world/country.rb
|
51
|
+
lib/sportdb/models/world/state.rb
|
52
|
+
lib/sportdb/patterns.rb
|
53
|
+
lib/sportdb/pretty_printer.rb
|
54
|
+
lib/sportdb/reader.rb
|
55
|
+
lib/sportdb/reader_file.rb
|
56
|
+
lib/sportdb/reader_zip.rb
|
57
|
+
lib/sportdb/readers/assoc.rb
|
58
|
+
lib/sportdb/readers/event.rb
|
59
|
+
lib/sportdb/readers/game.rb
|
60
|
+
lib/sportdb/readers/ground.rb
|
61
|
+
lib/sportdb/readers/league.rb
|
62
|
+
lib/sportdb/readers/season.rb
|
63
|
+
lib/sportdb/readers/squad_club.rb
|
64
|
+
lib/sportdb/readers/squad_national_team.rb
|
65
|
+
lib/sportdb/readers/team.rb
|
66
|
+
lib/sportdb/rsssf_reader.rb
|
67
|
+
lib/sportdb/schema.rb
|
68
|
+
lib/sportdb/standings.rb
|
69
|
+
lib/sportdb/stats.rb
|
70
|
+
lib/sportdb/utils.rb
|
71
|
+
lib/sportdb/utils_date.rb
|
72
|
+
lib/sportdb/utils_goals.rb
|
73
|
+
lib/sportdb/utils_group.rb
|
74
|
+
lib/sportdb/utils_map.rb
|
75
|
+
lib/sportdb/utils_round.rb
|
76
|
+
lib/sportdb/utils_scores.rb
|
77
|
+
lib/sportdb/utils_teams.rb
|
78
|
+
lib/sportdb/version.rb
|
79
|
+
test/data/at-austria/2013_14/bl.txt
|
80
|
+
test/data/at-austria/2013_14/bl.yml
|
81
|
+
test/data/at-austria/2013_14/bl_ii.txt
|
82
|
+
test/data/at-austria/2013_14/el.txt
|
83
|
+
test/data/at-austria/2013_14/el.yml
|
84
|
+
test/data/at-austria/2013_14/squads/austria.txt
|
85
|
+
test/data/at-austria/2013_14/squads/salzburg.txt
|
86
|
+
test/data/at-austria/2014_15/1-bundesliga-ii.txt
|
87
|
+
test/data/at-austria/2014_15/1-bundesliga.yml
|
88
|
+
test/data/at-austria/2015_16/1-bundesliga.yml
|
89
|
+
test/data/at-austria/2015_16/cup.yml
|
90
|
+
test/data/at-austria/leagues.txt
|
91
|
+
test/data/at-austria/teams.txt
|
92
|
+
test/data/at-austria/teams_2.txt
|
93
|
+
test/data/national-teams/assocs.txt
|
94
|
+
test/data/national-teams/europe/assocs.txt
|
95
|
+
test/data/national-teams/europe/teams.txt
|
96
|
+
test/data/national-teams/north-america/assocs.txt
|
97
|
+
test/data/national-teams/north-america/teams.txt
|
98
|
+
test/data/national-teams/teams.txt
|
99
|
+
test/data/players/europe/at-austria/players.txt
|
100
|
+
test/data/players/europe/de-deutschland/players.txt
|
101
|
+
test/data/players/south-america/br-brazil/players.txt
|
102
|
+
test/data/rsssf/at-2014-15--1-bundesliga.txt
|
103
|
+
test/data/rsssf/at-2015-16--1-bundesliga.txt
|
104
|
+
test/data/world-cup/1930/cup.txt
|
105
|
+
test/data/world-cup/1930/cup.yml
|
106
|
+
test/data/world-cup/1930/cup_goals.txt
|
107
|
+
test/data/world-cup/1930/cup_goals.yml
|
108
|
+
test/data/world-cup/1954/cup.txt
|
109
|
+
test/data/world-cup/1954/cup.yml
|
110
|
+
test/data/world-cup/1962/cup.txt
|
111
|
+
test/data/world-cup/1962/cup.yml
|
112
|
+
test/data/world-cup/1974/cup.yml
|
113
|
+
test/data/world-cup/1974/cup_finals.txt
|
114
|
+
test/data/world-cup/1974/cup_i.txt
|
115
|
+
test/data/world-cup/1974/cup_ii.txt
|
116
|
+
test/data/world-cup/2014/cup.txt
|
117
|
+
test/data/world-cup/2014/cup.yml
|
118
|
+
test/data/world-cup/2014/squads/br-brazil.txt
|
119
|
+
test/data/world-cup/2014/squads/de-deutschland.txt
|
120
|
+
test/data/world-cup/2014/squads/jp-japan.txt
|
121
|
+
test/data/world-cup/2014/squads/uy-uruguay.txt
|
122
|
+
test/data/world-cup/leagues.txt
|
123
|
+
test/data/world-cup/seasons_1930.txt
|
124
|
+
test/data/world-cup/seasons_1954.txt
|
125
|
+
test/data/world-cup/seasons_1962.txt
|
126
|
+
test/data/world-cup/seasons_1974.txt
|
127
|
+
test/data/world-cup/teams_1930.txt
|
128
|
+
test/data/world-cup/teams_1954.txt
|
129
|
+
test/data/world-cup/teams_1962.txt
|
130
|
+
test/data/world-cup/teams_1974.txt
|
131
|
+
test/helper.rb
|
132
|
+
test/test_assoc_reader.rb
|
133
|
+
test/test_changes.rb
|
134
|
+
test/test_cursor.rb
|
135
|
+
test/test_date.rb
|
136
|
+
test/test_event_reader.rb
|
137
|
+
test/test_goals.rb
|
138
|
+
test/test_lang.rb
|
139
|
+
test/test_load.rb
|
140
|
+
test/test_pp.rb
|
141
|
+
test/test_reader.rb
|
142
|
+
test/test_reader_from_string.rb
|
143
|
+
test/test_round_auto.rb
|
144
|
+
test/test_round_def.rb
|
145
|
+
test/test_round_header.rb
|
146
|
+
test/test_rsssf_reader.rb
|
147
|
+
test/test_scores.rb
|
148
|
+
test/test_squad_club_reader.rb
|
149
|
+
test/test_squad_national_team_reader.rb
|
150
|
+
test/test_standings.rb
|
151
|
+
test/test_standings_ii.rb
|
152
|
+
test/test_utils.rb
|
153
|
+
test/test_winner.rb
|
data/lib/sportdb/finders/date.rb
CHANGED
@@ -1,11 +1,103 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
#### fix: move to textutils for reuse
|
3
|
+
#### fix: move to textutils for reuse !!!!!!!!!! - why?? why not ??
|
4
4
|
|
5
5
|
|
6
6
|
module SportDb
|
7
7
|
|
8
|
-
|
8
|
+
|
9
|
+
class DateFinderBase
|
10
|
+
|
11
|
+
MONTH_EN_TO_MM = {
|
12
|
+
'Jan' => '1', 'January' => '1',
|
13
|
+
'Feb' => '2', 'February' => '2',
|
14
|
+
'Mar' => '3', 'March' => '3',
|
15
|
+
'Apr' => '4', 'April' => '4',
|
16
|
+
'May' => '5',
|
17
|
+
'Jun' => '6', 'June' => '6',
|
18
|
+
'Jul' => '7', 'July' => '7',
|
19
|
+
'Aug' => '8', 'August' => '8',
|
20
|
+
'Sep' => '9', 'Sept' => '9', 'September' => '9',
|
21
|
+
'Oct' => '10', 'October' => '10',
|
22
|
+
'Nov' => '11', 'November' => '11',
|
23
|
+
'Dec' => '12', 'December' =>'12' }
|
24
|
+
|
25
|
+
MONTH_FR_TO_MM = {
|
26
|
+
'Janvier' => '1', 'Janv' => '1', 'Jan' => '1', ## check janv in use??
|
27
|
+
'Février' => '2', 'Févr' => '2', 'Fév' => '2', ## check fevr in use???
|
28
|
+
'Mars' => '3', 'Mar' => '3',
|
29
|
+
'Avril' => '4', 'Avri' => '4', 'Avr' => '4', ## check avri in use??? if not remove
|
30
|
+
'Mai' => '5',
|
31
|
+
'Juin' => '6',
|
32
|
+
'Juillet' => '7', 'Juil' => '7',
|
33
|
+
'Août' => '8',
|
34
|
+
'Septembre' => '9', 'Sept' => '9',
|
35
|
+
'Octobre' => '10', 'Octo' => '10', 'Oct' => '10', ### check octo in use??
|
36
|
+
'Novembre' => '11', 'Nove' => '11', 'Nov' => '11', ## check nove in use??
|
37
|
+
'Décembre' => '12', 'Déce' => '12', 'Déc' => '12' } ## check dece in use??
|
38
|
+
|
39
|
+
MONTH_ES_TO_MM = {
|
40
|
+
'Ene' => '1', 'Enero' => '1',
|
41
|
+
'Feb' => '2',
|
42
|
+
'Mar' => '3', 'Marzo' => '3',
|
43
|
+
'Abr' => '4', 'Abril' => '4',
|
44
|
+
'May' => '5', 'Mayo' => '5',
|
45
|
+
'Jun' => '6', 'Junio' => '6',
|
46
|
+
'Jul' => '7', 'Julio' => '7',
|
47
|
+
'Ago' => '8', 'Agosto' => '8',
|
48
|
+
'Sep' => '9', 'Set' => '9', 'Sept' => '9',
|
49
|
+
'Oct' => '10',
|
50
|
+
'Nov' => '11',
|
51
|
+
'Dic' => '12' }
|
52
|
+
|
53
|
+
private
|
54
|
+
def calc_year( month, day, opts )
|
55
|
+
start_at = opts[:start_at]
|
56
|
+
|
57
|
+
logger.debug " [calc_year] ????-#{month}-#{day} -- start_at: #{start_at}"
|
58
|
+
|
59
|
+
if month >= start_at.month
|
60
|
+
# assume same year as start_at event (e.g. 2013 for 2013/14 season)
|
61
|
+
start_at.year
|
62
|
+
else
|
63
|
+
# assume year+1 as start_at event (e.g. 2014 for 2013/14 season)
|
64
|
+
start_at.year+1
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def parse_date_time( match_data, opts={} )
|
69
|
+
|
70
|
+
# convert regex match_data captures to hash
|
71
|
+
# - note: cannont use match_data like a hash (e.g. raises exception if key/name not present/found)
|
72
|
+
h = {}
|
73
|
+
# - note: do NOT forget to turn name into symbol for lookup in new hash (name.to_sym)
|
74
|
+
match_data.names.each { |name| h[name.to_sym] = match_data[name] } # or use match_data.names.zip( match_data.captures ) - more cryptic but "elegant"??
|
75
|
+
|
76
|
+
## puts "[parse_date_time] match_data:"
|
77
|
+
## pp h
|
78
|
+
logger.debug " [parse_date_time] hash: >#{h.inspect}<"
|
79
|
+
|
80
|
+
h[ :month ] = MONTH_EN_TO_MM[ h[:month_en] ] if h[:month_en]
|
81
|
+
h[ :month ] = MONTH_ES_TO_MM[ h[:month_es] ] if h[:month_es]
|
82
|
+
h[ :month ] = MONTH_FR_TO_MM[ h[:month_fr] ] if h[:month_fr]
|
83
|
+
|
84
|
+
month = h[:month]
|
85
|
+
day = h[:day]
|
86
|
+
year = h[:year] || calc_year( month.to_i, day.to_i, opts ).to_s
|
87
|
+
|
88
|
+
hours = h[:hours] || '12' # default to 12:00 for HH:MM (hours:minutes)
|
89
|
+
minutes = h[:minutes] || '00'
|
90
|
+
|
91
|
+
value = '%d-%02d-%02d %02d:%02d' % [year.to_i, month.to_i, day.to_i, hours.to_i, minutes.to_i]
|
92
|
+
logger.debug " date: >#{value}<"
|
93
|
+
|
94
|
+
DateTime.strptime( value, '%Y-%m-%d %H:%M' )
|
95
|
+
end
|
96
|
+
|
97
|
+
end # class DateFinderBase
|
98
|
+
|
99
|
+
|
100
|
+
class DateFinder < DateFinderBase
|
9
101
|
|
10
102
|
include LogUtils::Logging
|
11
103
|
|
@@ -27,19 +119,7 @@ class DateFinder
|
|
27
119
|
'Octobre|Octo|Oct|' +
|
28
120
|
'Novembre|Nove|Nov|' +
|
29
121
|
'Décembre|Déce|Déc'
|
30
|
-
|
31
|
-
'Janvier' => '1', 'Janv' => '1', 'Jan' => '1', ## check janv in use??
|
32
|
-
'Février' => '2', 'Févr' => '2', 'Fév' => '2', ## check fevr in use???
|
33
|
-
'Mars' => '3', 'Mar' => '3',
|
34
|
-
'Avril' => '4', 'Avri' => '4', 'Avr' => '4', ## check avri in use??? if not remove
|
35
|
-
'Mai' => '5',
|
36
|
-
'Juin' => '6',
|
37
|
-
'Juillet' => '7', 'Juil' => '7',
|
38
|
-
'Août' => '8',
|
39
|
-
'Septembre' => '9', 'Sept' => '9',
|
40
|
-
'Octobre' => '10', 'Octo' => '10', 'Oct' => '10', ### check octo in use??
|
41
|
-
'Novembre' => '11', 'Nove' => '11', 'Nov' => '11', ## check nove in use??
|
42
|
-
'Décembre' => '12', 'Déce' => '12', 'Déc' => '12' } ## check dece in use??
|
122
|
+
|
43
123
|
WEEKDAY_FR = 'Lundi|Lun|L|' +
|
44
124
|
'Mardi|Mar|Ma|' +
|
45
125
|
'Mercredi|Mer|Me|' +
|
@@ -61,19 +141,6 @@ class DateFinder
|
|
61
141
|
'October|Oct|'+
|
62
142
|
'November|Nov|'+
|
63
143
|
'December|Dec'
|
64
|
-
MONTH_EN_TO_MM = {
|
65
|
-
'Jan' => '1', 'January' => '1',
|
66
|
-
'Feb' => '2', 'February' => '2',
|
67
|
-
'Mar' => '3', 'March' => '3',
|
68
|
-
'Apr' => '4', 'April' => '4',
|
69
|
-
'May' => '5',
|
70
|
-
'Jun' => '6', 'June' => '6',
|
71
|
-
'Jul' => '7', 'July' => '7',
|
72
|
-
'Aug' => '8', 'August' => '8',
|
73
|
-
'Sep' => '9', 'Sept' => '9', 'September' => '9',
|
74
|
-
'Oct' => '10', 'October' => '10',
|
75
|
-
'Nov' => '11', 'November' => '11',
|
76
|
-
'Dec' => '12', 'December' =>'12' }
|
77
144
|
|
78
145
|
###
|
79
146
|
## todo: add days
|
@@ -83,20 +150,18 @@ class DateFinder
|
|
83
150
|
## 7. Saturday - Sat.
|
84
151
|
|
85
152
|
|
86
|
-
MONTH_ES = 'Enero|Ene|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
'Nov' => '11',
|
99
|
-
'Dic' => '12' }
|
153
|
+
MONTH_ES = 'Enero|Ene|'+
|
154
|
+
'Feb|'+
|
155
|
+
'Marzo|Mar|'+
|
156
|
+
'Abril|Abr|'+
|
157
|
+
'Mayo|May|'+
|
158
|
+
'Junio|Jun|'+
|
159
|
+
'Julio|Jul|'+
|
160
|
+
'Agosto|Ago|'+
|
161
|
+
'Sept|Set|Sep|'+
|
162
|
+
'Oct|'+
|
163
|
+
'Nov|'+
|
164
|
+
'Dic'
|
100
165
|
|
101
166
|
# todo/fix - add de and es too!!
|
102
167
|
# note: in Austria - Jänner - in Deutschland Januar allow both ??
|
@@ -242,6 +307,10 @@ class DateFinder
|
|
242
307
|
\b/x
|
243
308
|
|
244
309
|
# e.g. Jun/12 w/ implied year and implied hours (set to 12:00)
|
310
|
+
# note: allow space too e.g Jun 12 -- check if conflicts w/ other formats??? (added for rsssf reader)
|
311
|
+
# -- fix: might eat french weekday mar 12 is mardi (mar) !!! see FR__ pattern
|
312
|
+
# fix: remove space again for now - and use simple en date reader or something!!!
|
313
|
+
## was [\/ ] changed back to \/
|
245
314
|
EN__MONTH_DD__DATE_REGEX = /\b
|
246
315
|
(?<month_en>#{MONTH_EN})
|
247
316
|
\/
|
@@ -323,52 +392,55 @@ class DateFinder
|
|
323
392
|
return nil # no match found
|
324
393
|
end
|
325
394
|
|
326
|
-
|
327
|
-
def calc_year( month, day, opts )
|
328
|
-
start_at = opts[:start_at]
|
329
|
-
|
330
|
-
logger.debug " [calc_year] ????-#{month}-#{day} -- start_at: #{start_at}"
|
331
|
-
|
332
|
-
if month >= start_at.month
|
333
|
-
# assume same year as start_at event (e.g. 2013 for 2013/14 season)
|
334
|
-
start_at.year
|
335
|
-
else
|
336
|
-
# assume year+1 as start_at event (e.g. 2014 for 2013/14 season)
|
337
|
-
start_at.year+1
|
338
|
-
end
|
339
|
-
end
|
340
|
-
|
341
|
-
def parse_date_time( match_data, opts={} )
|
342
|
-
|
343
|
-
# convert regex match_data captures to hash
|
344
|
-
# - note: cannont use match_data like a hash (e.g. raises exception if key/name not present/found)
|
345
|
-
h = {}
|
346
|
-
# - note: do NOT forget to turn name into symbol for lookup in new hash (name.to_sym)
|
347
|
-
match_data.names.each { |name| h[name.to_sym] = match_data[name] } # or use match_data.names.zip( match_data.captures ) - more cryptic but "elegant"??
|
348
|
-
|
349
|
-
## puts "[parse_date_time] match_data:"
|
350
|
-
## pp h
|
351
|
-
logger.debug " [parse_date_time] hash: >#{h.inspect}<"
|
395
|
+
end # class DateFinder
|
352
396
|
|
353
|
-
h[ :month ] = MONTH_EN_TO_MM[ h[:month_en] ] if h[:month_en]
|
354
|
-
h[ :month ] = MONTH_ES_TO_MM[ h[:month_es] ] if h[:month_es]
|
355
|
-
h[ :month ] = MONTH_FR_TO_MM[ h[:month_fr] ] if h[:month_fr]
|
356
397
|
|
357
|
-
|
358
|
-
day = h[:day]
|
359
|
-
year = h[:year] || calc_year( month.to_i, day.to_i, opts ).to_s
|
398
|
+
class RsssfDateFinder < DateFinderBase
|
360
399
|
|
361
|
-
|
362
|
-
minutes = h[:minutes] || '00'
|
400
|
+
include LogUtils::Logging
|
363
401
|
|
364
|
-
|
365
|
-
|
402
|
+
MONTH_EN = 'Jan|'+
|
403
|
+
'Feb|'+
|
404
|
+
'March|Mar|'+
|
405
|
+
'April|Apr|'+
|
406
|
+
'May|'+
|
407
|
+
'June|Jun|'+
|
408
|
+
'July|Jul|'+
|
409
|
+
'Aug|'+
|
410
|
+
'Sept|Sep|'+
|
411
|
+
'Oct|'+
|
412
|
+
'Nov|'+
|
413
|
+
'Dec'
|
414
|
+
|
415
|
+
## e.g.
|
416
|
+
## [Jun 7] or [Aug 12] etc. - not MUST include brackets e.g. []
|
417
|
+
##
|
418
|
+
## check add \b at the beginning and end - why?? why not?? working??
|
419
|
+
EN__MONTH_DD__DATE_REGEX = /\[
|
420
|
+
(?<month_en>#{MONTH_EN})
|
421
|
+
\s
|
422
|
+
(?<day>\d{1,2})
|
423
|
+
\]/x
|
366
424
|
|
367
|
-
|
425
|
+
def find!( line, opts={} )
|
426
|
+
# fix: use more lookahead for all required trailing spaces!!!!!
|
427
|
+
# fix: use <name capturing group> for month,day,year etc.!!!
|
428
|
+
|
429
|
+
tag = '[EN_MONTH_DD]'
|
430
|
+
pattern = EN__MONTH_DD__DATE_REGEX
|
431
|
+
md = pattern.match( line )
|
432
|
+
if md
|
433
|
+
date = parse_date_time( md, opts )
|
434
|
+
## fix: use md[0] e.g. match for sub! instead of using regex again - why? why not???
|
435
|
+
## fix: use md.begin(0), md.end(0)
|
436
|
+
line.sub!( md[0], tag )
|
437
|
+
## todo/fix: make sure match data will not get changed (e.g. using sub! before parse_date_time)
|
438
|
+
return date
|
439
|
+
end
|
440
|
+
return nil # no match found
|
368
441
|
end
|
369
442
|
|
370
443
|
|
371
|
-
end
|
372
|
-
|
444
|
+
end ## class RsssfDateFinder
|
373
445
|
|
374
446
|
end # module SportDb
|