football-timezones 0.2.2 → 0.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a95892d9f16f3c79ca11ba53c7620fb1a960685094f34d45505c1a43152c9eef
4
- data.tar.gz: f007f71ffe6a2e2286497b85c9873c94f21e34008594af9e21cb1d394ec71af2
3
+ metadata.gz: e1acaa59a47936cf0ac4c5eefb5787e443bc2fefde91676612da7c8ec4943c7c
4
+ data.tar.gz: 437779a99bfd460a95d824c5a31341a4e5d2e9c7b3326407dd23358696f077e7
5
5
  SHA512:
6
- metadata.gz: 885f9273eb9502493c4f3890e94ded900dc1d576dc61fc3666d1bc6a7f105ded9f410dfd3c749ba9943d16d5ac39e0f337e91b7597d71db6c4c36ec44163496d
7
- data.tar.gz: 204e812e47f6080748be10242f0c7b92a279f38384e6f909b3d897d062373fda3be497c829c771702d83e1eff0f59ed6bb648b408d560af31594139251cc688d
6
+ metadata.gz: 532ae9d3e63cf763a73e775a3a41a06d7321e7c23726aba289d814b9aab3e082aca6b86592a1aff77d0b9cfb196d7e38a5466244e0baf798a72a89d155112af5
7
+ data.tar.gz: b10ac2a0864140fcd1f7bcc0cba321bea0cd960f63c450ee3891fa9d57e2227d4a2af5c2783a180d3d58e480d328ad130969133b3928c9bb601bca0190dfd235
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ### 0.2.2
1
+ ### 0.3.0
2
2
 
3
3
  ### 0.0.1 / 2024-09-11
4
4
 
data/Manifest.txt CHANGED
@@ -2,6 +2,7 @@ CHANGELOG.md
2
2
  Manifest.txt
3
3
  README.md
4
4
  Rakefile
5
+ config/leagues.csv
5
6
  config/timezones_africa.csv
6
7
  config/timezones_america.csv
7
8
  config/timezones_asia.csv
@@ -10,7 +11,8 @@ config/timezones_middle_east.csv
10
11
  config/timezones_pacific.csv
11
12
  config/timezones_world.csv
12
13
  lib/football-timezones.rb
13
- lib/football-timezones/datasets.rb
14
+ lib/football-timezones/league_config.rb
15
+ lib/football-timezones/leagueset.rb
14
16
  lib/football-timezones/timezones.rb
15
17
  lib/football-timezones/version.rb
16
18
  lib/football/timezones.rb
@@ -0,0 +1,423 @@
1
+ key,name,basename,start_season,end_season
2
+ caf.cl,CAF Champions League,cl,,
3
+ caf.conf,CAF Confederations Cup,cafconfederationscup,,
4
+ afl,African Football League,afl,,
5
+ eg.1,Egypt Premiership,1-premiership,,
6
+ eg.cup,Egypt Cup,cup,,
7
+ eg.super,Egypt Supercup,supercup,,
8
+ tn.1,Tunisia Ligue 1,ligue1,,
9
+ ma.1,Morocco Botola,1-botola,,
10
+ dz.1,Algeria Ligue 1,1-ligue1,,
11
+ za.1,South Africa Premier League,premierleague,,
12
+ za.2,South Africa National First Division,nationalfirstdivision,,
13
+ za.cup,South Africa Cup,cup,,
14
+ za.cup.l,South Africa Knockout,knockout,,
15
+ ng.1,Nigeria Professional League,professionalleague,,
16
+ ke.1,Kenya Premier League,premierleague,,
17
+ zm.1,Zambia Super League,superleague,,
18
+ gh.1,Ghana Premier League,premierleague,,
19
+ ug.1,Uganda Super League,superleague,,
20
+ zw.1,Zimbabwe Premier Soccer League,premiersoccerleague,,
21
+ bi.1,Burundi 1. Liga,1liga,,
22
+ ao.1,Angola Girabola,girabola,,
23
+ tz.1,Tanzania Premier League,premierleague,,
24
+ mu.1,Mauritius Premier League,premierleague,,
25
+ mu.cup,Mauritius Cup,cup,,
26
+ mu.cup.rep,Mauritius Republic Cup,republiccup,,
27
+ asia.cl,AFC Champions League,afcchampionsleague,,
28
+ asia.cup,AFC Cup,afccup,,
29
+ jp.1,Japan J. League,1-jleague,,
30
+ jp.2,Japan J. League 2,jleague2,,
31
+ jp.cup,Japan Emperor's Cup,emperorscup,,
32
+ jp.cup.l,Japan J. League Cup,jleaguecup,,
33
+ kr.1,South Korea K-League,kleague,,
34
+ kr.2,South Korea K-League 2,kleague2,,
35
+ kr.cup,South Korea Cup,cup,,
36
+ sg.1,Singapore Premier League,premierleague,,
37
+ th.1,Thailand Premier League,premierleague,,
38
+ my.1,Malaysia Super League,superleague,,
39
+ mm.1,Myanmar National League,nationalleague,,
40
+ id.1,Indonesia Super League,superleague,,
41
+ in.1.i,India I-League,ileague,,
42
+ in.1.ii,India Super League,superleague,,
43
+ tw.1,Taiwan Premier League,premierleague,,
44
+ cn.1,China Super League,1-superleague,,
45
+ kz.1,Kazakhstan Premier League A,1-premierleague,,
46
+ tm.1,Turkmenistan 1. Liga,1liga,,
47
+ uz.1,Uzbekistan Super League,superleague,,
48
+ tj.1,Tajikistan Higher League,higherleague,,
49
+ tj.super,Tajikistan Super Cup,supercup,,
50
+ vn.1,Vietnam V. League 1,vleague1,,
51
+ vn.cup,Vietnam Cup,cup,,
52
+ jm.1,Jamaica Premier League,premierleague,,
53
+ cr.1,Costa Rica Primera División,primeradivision,,
54
+ cr.2,Costa Rica Segunda División,segundadivision,,
55
+ hn.1,Honduras Primera División,primeradivision,,
56
+ sv.1,El Salvador Primera División,primeradivision,,
57
+ gt.1,Guatemala Liga Nacional,liganacional,,
58
+ ni.1,Nicaragua Primera División,primeradivision,,
59
+ at.1,Österr. Bundesliga,1-bundesliga,,
60
+ at.2,Österr. 2. Liga,2-liga2,2018/19,
61
+ at.2,Österr. Erste Liga,2-liga1,,2017/18
62
+ at.3.o,Österr. Regionalliga Ost,3-regionalliga-ost,,
63
+ at.3.m,Österr. Regionalliga Mitte,3-regionalliga-mitte,,
64
+ at.3.sbg,Österr. Regionalliga Salzburg,regionalligasalzburg,,
65
+ at.3.t,Österr. Regionalliga Tirol,regionalligatirol,,
66
+ at.3.v,Österr. Regionalliga Vorarlberg,regionalligavorarlberg,,
67
+ at.3.w,Österr. Regionalliga West,regionalligawest,,
68
+ at.cup,ÖFB Cup,cup,,
69
+ at.4.ost.w,Österr. Wiener Stadtliga,wienerstadtliga,,
70
+ at.4.ost.n,Österr. Landesliga Niederösterreich,landesliganiederosterreich,,
71
+ at.4.ost.b,Österr. Landesliga Burgenland,landesligaburgenland,,
72
+ at.4.mitte.st,Österr. Steirische Landesliga,steirischelandesliga,,
73
+ at.4.mitte.o,Österr. Landesliga Oberösterreich,landesligaoberosterreich,,
74
+ at.4.mitte.k,Österr. Kärtner Liga,kartnerliga,,
75
+ at.4.west.s,Österr. Salzburger Liga,salzburgerliga,,
76
+ at.4.west.t,Österr. Tiroler Liga,tirolerliga,,
77
+ at.4.west.v,Österr. Vorarlberg Liga,vorarlbergliga,,
78
+ at.5.n.ost,Österr. 2. Landesliga Ost (NÖ),2landesligaostno,,
79
+ at.5.n.west,Österr. 2. Landesliga West (NÖ),2landesligawestno,,
80
+ at.6.n.ost.sso,Österr. Gebietsliga Süd/Südost (NÖ),gebietsligasudsudostno,,
81
+ at.6.n.ost.nnw,Österr. Gebietsliga Nord/Nordwest (NÖ),gebietsliganordnordwestno,,
82
+ at.6.n.west.w,Österr. Gebietsliga West (NÖ),gebietsligawestno,,
83
+ at.6.n.west.nww,Österr. Gebietsliga Nordwest/Waldviertel (NÖ),gebietsliganordwestwaldviertelno,,
84
+ at.7.n.ost.sso.s,Österr. 1. Klasse Süd (NÖ),1klassesudno,,
85
+ at.7.n.ost.sso.o,Österr. 1. Klasse Ost (NÖ),1klasseostno,,
86
+ at.7.n.ost.nnw.n,Österr. 1. Klasse Nord (NÖ),1klassenordno,,
87
+ at.7.n.ost.nnw.nw,Österr. 1. Klasse Nordwest (NÖ),1klassenordwestno,,
88
+ at.7.n.west.w.w,Österr. 1. Klasse West (NÖ),1klassewestno,,
89
+ at.7.n.west.w.wm,Österr. 1. Klasse West-Mitte (NÖ),1klassewestmitteno,,
90
+ at.7.n.west.nww.nwm,Österr. 1. Klasse Nordwest-Mitte (NÖ),1klassenordwestmitteno,,
91
+ at.7.n.west.nww.w,Österr. 1. Klasse Waldviertel (NÖ),1klassewaldviertelno,,
92
+ at.8.n.steinfeld,Österr. 2. Klasse Steinfeld (NÖ),2klassesteinfeldno,,
93
+ at.8.n.wechsel,Österr. 2. Klasse Wechsel (NÖ),2klassewechselno,,
94
+ at.8.n.triestingtal,Österr. 2. Klasse Triestingtal (NÖ),2klassetriestingtalno,,
95
+ at.8.n.ostmitte,Österr. 2. Klasse Ost/Mitte (NÖ),2klasseostmitteno,,
96
+ at.8.n.ost,Österr. 2. Klasse Ost (NÖ),2klasseostno,,
97
+ at.8.n.weinviertel.n,Österr. 2. Klasse Weinviertel Nord (NÖ),2klasseweinviertelnordno,,
98
+ at.8.n.weinviertel.s,Österr. 2. Klasse Weinviertel Süd (NÖ),2klasseweinviertelsudno,,
99
+ at.8.n.marchfeld,Österr. 2. Klasse Marchfeld (NÖ),2klassemarchfeldno,,
100
+ at.8.n.donau,Österr. 2. Klasse Donau (NÖ),2klassedonauno,,
101
+ at.8.n.pulkautal,Österr. 2. Klasse Pulkautal (NÖ),2klassepulkautalno,,
102
+ at.8.n.ybbstal,Österr. 2. Klasse Ybbstal (NÖ),2klasseybbstalno,,
103
+ at.8.n.yspertal,Österr. 2. Klasse Yspertal (NÖ),2klasseyspertalno,,
104
+ at.8.n.alpenvorland,Österr. 2. Klasse Alpenvorland (NÖ),2klassealpenvorlandno,,
105
+ at.8.n.traisental,Österr. 2. Klasse Traisental (NÖ),2klassetraisentalno,,
106
+ at.8.n.wachau,Österr. 2. Klasse Wachau (NÖ),2klassewachauno,,
107
+ at.8.n.schmidatal,Österr. 2. Klasse Schmidatal (NÖ),2klasseschmidatalno,,
108
+ at.8.n.waldviertelthayatal,Österr. 2. Klasse Waldviertel Thayatal (NÖ),2klassewaldviertelthayatalno,,
109
+ at.8.n.waldviertel.s,Österr. 2. Klasse Waldviertel/Süd (NÖ),2klassewaldviertelsudno,,
110
+ at.9.n.hornerwald,Österr. 3. Klasse Hornerwald (NÖ),3klassehornerwaldno,,
111
+ at.9.n.mistelbach,Österr. 3. Klasse Mistelbach (NÖ),3klassemistelbachno,,
112
+ eng.2,English Championship,2-championship,2004/05,
113
+ eng.2,English Division One,2-division1,1992/93,2003/04
114
+ eng.1,English Division One,1-division1,1892/93,1991/92
115
+ eng.1,English Football League,1-footballleague,1888/89,1891/92
116
+ eng.3,English League One,3-league1,2004/05,
117
+ eng.3,English Division Two,3-division2,1992/93,2003/04
118
+ eng.2,English Division Two,2-division2,1892/93,1991/92
119
+ eng.4,English League Two,4-league2,2004/05,
120
+ eng.4,English Division Three,4-division3,1992/93,2003/04
121
+ eng.3,English Division Three,3-division3,,1991/92
122
+ eng.1,English Premier League,1-premierleague,1992/93,
123
+ eng.5,English National League,5-nationalleague,1992/93,
124
+ eng.3.a,English Division Three (North),3a-division3_north,,
125
+ eng.3.b,English Division Three (South),3b-division3_south,,
126
+ eng.cup,English FA Cup,facup,,
127
+ eng.super,English FA Community Shield,facommunityshield,,
128
+ eng.cup.l,English EFL Cup,eflcup,,
129
+ eng.cup.t,English EFL Trophy,efltrophy,,
130
+ eng.cup.t.ii,English FA Trophy,fatrophy,,
131
+ de.1,Deutsche Bundesliga,1-bundesliga,,
132
+ de.2,Deutsche 2. Bundesliga,2-bundesliga2,,
133
+ de.3,Deutsche 3. Liga,3-liga3,,
134
+ de.cup,DFB Pokal,cup,,
135
+ de.super,Deutsche Supercup,super,,
136
+ de.4.nord,Deutsche Regionalliga Nord,4-regionalliga-nord,,
137
+ de.4.nordost,Deutsche Regionalliga Nordost,4-regionalliga-nordost,,
138
+ de.4.west,Deutsche Regionalliga West,4-regionalliga-west,,
139
+ de.4.suedwest,Deutsche Regionalliga Südwest,4-regionalliga-suedwest,,
140
+ de.4.bayern,Deutsche Regionalliga Bayern,4-regionalliga-bayern,,
141
+ de.5.nord.sh,Deutsche Schleswig-Holstein-Liga,schleswigholsteinliga,,
142
+ de.5.nord.hh,Deutsche Oberliga Hamburg,oberligahamburg,,
143
+ de.5.nord.hb,Deutsche Bremen-Liga,bremenliga,,
144
+ de.5.nord.ni,Deutsche Oberliga Niedersachsen,oberliganiedersachsen,,
145
+ de.5.nordost.n,Deutsche Oberliga Nordost (Nord),oberliganordostnord,,
146
+ de.5.nordost.s,Deutsche Oberliga Nordost (Süd),oberliganordostsud,,
147
+ de.5.west.niederrhein,Deutsche Oberliga Niederrhein,oberliganiederrhein,,
148
+ de.5.west.mittelrhein,Deutsche Mittelrheinliga,mittelrheinliga,,
149
+ de.5.west.westfalen,Deutsche Oberliga Westfalen,oberligawestfalen,,
150
+ de.5.suedwest.rp.sl,Deutsche Oberliga Rheinland-Pfalz/Saar,oberligarheinlandpfalzsaar,,
151
+ de.5.suedwest.he,Deutsche Hessenliga,hessenliga,,
152
+ de.5.suedwest.bw,Deutsche Oberliga Baden-Württemberg,oberligabadenwurttemberg,,
153
+ de.5.by.n,Deutsche Bayernliga (Nord),bayernliganord,,
154
+ de.5.by.s,Deutsche Bayernliga (Süd),bayernligasud,,
155
+ uefa.cl,UEFA Champions League,cl,1992/93,
156
+ uefa.cl.quali,UEFA Champions League - Quali,uefachampionsleaguequali,1992/93,
157
+ euro.champs,European Champion Clubs' Cup,champs,1955/56,1991/92
158
+ euro.cup,European Cup Winners' Cup,cupwinners,1960/61,1998/99
159
+ uefa.el,UEFA Europa League,el,2009/10,
160
+ uefa.el.quali,UEFA Europa League - Quali,uefaeuropaleaguequali,2009/10,
161
+ uefa.cup,UEFA Cup,cup,1971/72,2008/09
162
+ uefa.conf,UEFA Conference League,conf,2021/22,
163
+ uefa.conf.quali,UEFA Conference League - Quali,uefaconferenceleaguequali,2021/22,
164
+ uefa.super,UEFA Super Cup,super,1972,
165
+ atl.cup,Atlantic Cup,atlanticcup,,
166
+ czsk.super,Czechoslovak Supercup,czechoslovaksupercup,,
167
+ sco.1,Scottish Premiership,1-premiership,,
168
+ sco.2,Scottish Championship,championship,,
169
+ sco.3,Scottish League One,leagueone,,
170
+ sco.4,Scottish League Two,leaguetwo,,
171
+ sco.cup.l,Scottish League Cup,leaguecup,,
172
+ sco.cup.fa,Scottish FA Cup,facup,,
173
+ sco.cup.cc,Scottish Challenge Cup,challengecup,,
174
+ wal.1,Welsh Premier League,1-premierleague,,
175
+ nir.1,Northern Irish Premiership,1-premiership,,
176
+ nir.2,Northern Irish Championship,championship,,
177
+ nir.cup.l,Northern Irish League Cup,leaguecup,,
178
+ nir.cup,Northern Irish Irish Cup,irishcup,,
179
+ nir.super,Northern Irish NIFL Charity Shield,niflcharityshield,,
180
+ ie.1,Irish Premier Division,1-premierdivision,,
181
+ ie.2,Irish First Division,firstdivision,,
182
+ ie.cup.l,Irish League Cup,leaguecup,,
183
+ ie.super,Irish Supercup,supercup,,
184
+ ie.cup,Irish FAI Cup,faicup,,
185
+ is.1,Iceland Urvalsdeild,1-urvalsdeild,,
186
+ is.2,Iceland 1. Deild,1deild,,
187
+ is.3,Iceland 2. Delid,2delid,,
188
+ is.cup,Iceland Cup,cup,,
189
+ is.cup.l,Iceland League Cup,leaguecup,,
190
+ is.super,Iceland Super Cup,supercup,,
191
+ fo.1,Faroe Islands Premier Division,1-premierdivision,,
192
+ es.1,Primera División de España,1-liga,,
193
+ es.2,Segunda División de España,2-liga2,,
194
+ es.3,Spain Segunda División B,segundadivisionb,,
195
+ es.cup,Copa del Rey de España,cup,,
196
+ es.super,Spain Supercopa,supercopa,,
197
+ pt.1,Portuguese Primeira Liga,1-primeiraliga,,
198
+ pt.2,Portuguese Segunda Liga,2-segundaliga,,
199
+ pt.cup,Portuguese Taça de Portugal,tacadeportugal,,
200
+ pt.cup.l,Portuguese Taça da Liga,tacadaliga,,
201
+ pt.super,Portuguese Supercup,supercup,,
202
+ gi.1,Gibraltar Premier League A,1-premierleague,,
203
+ ad.1,Andorra Premier Division,1-premierdisvision,,
204
+ fr.1,French Ligue 1,1-ligue1,,
205
+ fr.2,French Ligue 2,2-ligue2,,
206
+ fr.3,French National,national,,
207
+ fr.cup,French Coupe de France,cup,,
208
+ fr.cup.l,French Coupe de la Ligue,coupedelaligue,,
209
+ fr.super,French Trophée des Champions,tropheedeschampions,,
210
+ it.1,Italian Serie A,1-seriea,,
211
+ it.2,Italian Serie B,2-serieb,,
212
+ it.3.a,Italian Serie C (North & Central West),seriecnorthcentralwest,,
213
+ it.3.b,Italian Serie C (North & Central East),seriecnorthcentraleast,,
214
+ it.3.c,Italian Serie C (South),seriecsouth,,
215
+ it.cup,Coppa Italia,cup,,
216
+ it.cup.c,Italian Coppa Italia Serie C,coppaitaliaseriec,,
217
+ it.super,Italian Supercoppa Italiana,supercoppaitaliana,,
218
+ sm.1,San Marinese Championship,1-championship,,
219
+ tr.1,Turkish Süper Lig,1-superlig,,
220
+ tr.2,Turkish 1. Lig,2-lig1,,
221
+ tr.3.b,Turkish 2. Lig - Beya,2ligbeya,,
222
+ tr.3.ki,Turkish 2. Lig - Kirmizi,2ligkirmizi,,
223
+ tr.3.playoffs,Turkish 2. Lig - Play Offs,2ligplayoffs,,
224
+ tr.cup,Türkiye Kupasi,turkiyekupasi,,
225
+ tr.super,Turkish Süper Kupa,superkupa,,
226
+ gr.1,Greek Super League,1-superleague,,
227
+ gr.2,Greek Super League 2,superleague2,,
228
+ gr.cup,Greek Greek Cup,greekcup,,
229
+ cy.1,Cyprus First Division,1-firstdivision,,
230
+ cy.cup,Cyprus Cypriot Cup,cypriotcup,,
231
+ mt.1,Malta Premier League,1-premierleague,,
232
+ mt.cup,Malta Cup,cup,,
233
+ dk.1,Denmark Superligaen,1-superligaen,,
234
+ dk.2,Denmark 1. Division,1division,,
235
+ dk.cup,Denmark Landspokalturneringen,landspokalturneringen,,
236
+ no.1,Norway Eliteserien,1-eliteserien,,
237
+ no.2,Norway 1. Division,1division,,
238
+ no.3,Norway 2. Division,2division,,
239
+ no.cup,Norway Norwegian Football Cup,norwegianfootballcup,,
240
+ se.1,Sweden Allsvenskan,1-allsvenskan,,
241
+ se.2,Sweden Superettan,2-superettan,,
242
+ se.3.s,Sweden Div 1 Södra,div1sodra,,
243
+ se.3.n,Sweden Div 1 Norra,div1norra,,
244
+ se.cup,Sweden Cup,cup,,
245
+ fi.1,Finland Veikkausliiga,1-veikkausliiga,,
246
+ fi.2,Finland Ykkonen,ykkonen,,
247
+ fi.3,Finland Kakkonen,kakkonen,,
248
+ fi.4.a,Finland Kakkonen Group A,kakkonengroupa,,
249
+ fi.cup,Finland Cup,cup,,
250
+ nl.1,Netherlands Eredivisie,1-eredivisie,,
251
+ nl.1.comeback,Netherlands Eredivisie Comeback Tournament,eredivisiecomebacktournament,,
252
+ nl.2,Netherlands Eerste Divisie,eerstedivisie,,
253
+ nl.cup,Netherlands Cup,cup,,
254
+ nl.super,Netherlands Johan Cruijff Schaal,johancruijffschaal,,
255
+ nl.po,Netherlands Promotion/Relegation Playoffs,promotionrelegationplayoffs,,
256
+ be.1,Belgium First Division A,1-firstdivisiona,,
257
+ be.2,Belgium First Division B,firstdivisionb,,
258
+ be.cup,Beker van Belgie,bekervanbelgie,,
259
+ be.super,Belgium Supercup,supercup,,
260
+ lu.1,Luxembourg National Division,1-nationaldivision,,
261
+ pl.1,Poland Ekstraklasa,1-ekstraklasa,,
262
+ pl.2,Poland I Liga,iliga,,
263
+ pl.3,Poland II Liga,iiliga,,
264
+ pl.cup,Poland Cup,cup,,
265
+ pl.super,Poland Supercup,supercup,,
266
+ hu.1,Hungarian Nemzeti Bajnokság I,1-nbi,,
267
+ hu.2,Hungarian Nemzeti Bajnokság II,2-nbii,,
268
+ hu.cup,Hungarian Cup,cup,,
269
+ cz.1,Czech Republic First League,1-firstleague,,
270
+ cz.2,Czech Republic 1. Division,1division,,
271
+ cz.cup,Czech Republic Cup,cup,,
272
+ ch.1,Swiss Super League,1-superleague,,
273
+ ch.2,Swiss Challenge League,2-challengeleague,,
274
+ ch.3,Swiss Promotion League,promotionleague,,
275
+ ch.cup,Swiss Cup,cup,,
276
+ li.cup,Liechtensteiner Pokal,cup,,
277
+ sk.1,Slovakia First League,1-liga1,,
278
+ sk.2,Slovakia Second League,secondleague,,
279
+ sk.cup,Slovakia Cup,cup,,
280
+ si.1,Slovenia First League,1-firstleague,,
281
+ si.2,Slovenia Second League,secondleague,,
282
+ si.cup,Slovenia Cup,cup,,
283
+ hr.1,Croatia HNL,1-hnl,,
284
+ hr.2,Croatia Prva NL,prvanl,,
285
+ hr.3,Croatia Druga NL,druganl,,
286
+ hr.cup,Croatia Cup,cup,,
287
+ hr.super,Croatia Supercup,supercup,,
288
+ ba.1,Bosnia and Herzegovina Premier Liga,1-premierliga,,
289
+ ba.cup,Bosnia and Herzegovina Cup,cup,,
290
+ rs.1,Serbia Super League,1-superleague,,
291
+ rs.cup,Serbia Cup,cup,,
292
+ kos.1,Kosovo Superliga A,1-superliga,,
293
+ al.1,Albania Super League,1-superleague,,
294
+ md.1,Moldova First Division,1-firstdivision,,
295
+ me.1,Montenegro First League,1-firstleague,,
296
+ me.cup,Montenegro Cup,cup,,
297
+ mk.1,North Macedonia First League,1-firstleague,,
298
+ ro.1,Romania Liga 1,1-liga1,,
299
+ ro.2,Romania Liga 2,liga2,,
300
+ ro.3.a,Romania Liga 3 - Seria 1,liga3seria1,,
301
+ ro.cup,Romania Cup,cup,,
302
+ ro.super,Romania Supercup,supercup,,
303
+ bg.1,Bulgaria Premier League,1-premierleague,,
304
+ bg.cup,Bulgaria Cup,cup,,
305
+ bg.super,Bulgaria Supercup,supercup,,
306
+ lv.1,Latvia Higher League,1-higherleague,,
307
+ lt.1,Lithuania First Division,1-firstdivision,,
308
+ ee.1,Estonia Meistriliiga,1-meistriliiga,,
309
+ ee.cup,Estonia Cup,cup,,
310
+ ru.1,Russia Premier League,1-premierliga,,
311
+ ru.2,Russia 1. Division,2-division1,,
312
+ ru.cup,Russia Cup,cup,,
313
+ ru.super,Russia Supercup,supercup,,
314
+ ua.1,Ukraine Premier League,1-premierleague,,
315
+ ua.cup,Ukraine Cup,cup,,
316
+ ua.super,Ukraine Supercup,supercup,,
317
+ by.1,Belarus Premier League,1-premierleague,,
318
+ by.2,Belarus Pervaya Liga,pervayaliga,,
319
+ by.3,Belarus Vtoraya Liga,vtorayaliga,,
320
+ by.cup,Belarus Cup,cup,,
321
+ by.res,Belarus Reserve Liga,reserveliga,,
322
+ am.1,Armenia Premier League,1-premierleague,,
323
+ az.1,Azerbaijan Premier League A,1-premierleague,,
324
+ ge.1,Georgia Premier League A,1-premierleague,,
325
+ world,World Cup,cup,,
326
+ world.quali.europe,World Cup Quali Europe,worldcupqualieurope,,
327
+ world.quali.northamerica,World Cup Quali North/Central America and Caribbean,worldcupqualinorthcentralamericaandcaribbean,,
328
+ world.quali.southamerica,World Cup Quali South America,worldcupqualisouthamerica,,
329
+ world.quali.africa,World Cup Quali Africa,worldcupqualiafrica,,
330
+ world.quali.asia,World Cup Quali Asia (w/ Australia),worldcupqualiasiawaustralia,,
331
+ world.quali.pacific,World Cup Quali South Pacific,worldcupqualisouthpacific,,
332
+ world.quali.playoffs,World Cup Quali Intercontinental Playoffs,worldcupqualiintercontinentalplayoffs,,
333
+ world.confed,Confederations Cup,confederationscup,,
334
+ euro,Euro,euro,1960,
335
+ euro.quali,Euro Quali,euroquali,,
336
+ uefa.nl,UEFA Nations League,nl,2018/19,
337
+ uefa.nl.a,UEFA Nations League A,nla,2018/19,
338
+ uefa.nl.b,UEFA Nations League B,nlb,2018/19,
339
+ uefa.nl.c,UEFA Nations League C,nlc,2018/19,
340
+ southamerica,Copa América,copaamerica,,
341
+ northamerica,Gold Cup,goldcup,,
342
+ asia,Asian Cup,asiancup,,
343
+ africa,Africa Cup of Nations,africacupofnations,,
344
+ paficic,South Pacific Nations Cup,southpacificnationscup,,
345
+ world.club,Club World Cup,clubworldcup,,
346
+ il.1,Israel Premier League,1-premierleague,,
347
+ il.2,Israel National League,nationalleague,,
348
+ il.cup,Israel League Cup National,leaguecupnational,,
349
+ il.cup.lp,Israel League Cup Premier,leaguecuppremier,,
350
+ il.super,Israel Supercup,supercup,,
351
+ ps.1.i,Palestine West Bank Premier League,westbankpremierleague,,
352
+ ps.1.ii,Palestine Gaza Strip Premier League,gazastrippremierleague,,
353
+ ps.cup.gaza,Palestine Gaza Strip Cup,gazastripcup,,
354
+ sa.1,Saudi Arabia Saudi Professional League,saudiprofessionalleague,,
355
+ sa.cup,Saudi Arabia King Cup,kingcup,,
356
+ sa.super,Saudi Arabia Super Cup,supercup,,
357
+ qa.1,Qatar Stars League,starsleague,,
358
+ ir.1,Iran Pro League,proleague,,
359
+ bh.1,Bahrain Premier League,premierleague,,
360
+ om.cup,Oman Sultan Cup,sultancup,,
361
+ concacaf.cl,CONCACAF Champions League,concacafchampionsleague,,
362
+ concacaf.l,CONCACAF League,concacafleague,,
363
+ usmx.cup,US & Mexican Leagues Cup,usmexicanleaguescup,,
364
+ ca.1,Canada Premier League,premierleague,,
365
+ us.1,Major League Soccer,majorleaguesoccer,,
366
+ us.mls.back,MLS is Back Tournament,mlsisbacktournament,,
367
+ us.2,United Soccer League Championship,unitedsoccerleaguechampionship,,
368
+ us.3,United Soccer League One,unitedsoccerleagueone,,
369
+ us.4,United Soccer League Two,unitedsoccerleaguetwo,,
370
+ us.cup,US Open Cup,usopencup,,
371
+ us.ncaa,United States NCAA Men's Soccer,ncaamenssoccer,,
372
+ mx.1,Liga MX,1-ligamx,,
373
+ mx.2,Liga de Expansión MX,2-ligaexpansionmx,2020/21,
374
+ mx.2,Ascenso MX,2-ascensomx,,2019/20
375
+ mx.copa,Mexico Copa MX,copamx,,
376
+ au.1,Australia A-League,aleague,,
377
+ au.2.qpr,Australia Queensland Premier,queenslandpremier,,
378
+ au.cup,Australia FFA Cup,ffacup,,
379
+ ar.1,Argentina Primera Division,1-primeradivision,,
380
+ ar.2,Argentina Primera B Nacional,primerabnacional,,
381
+ ar.3.metro,Argentina Primera B Metropolitana,primerabmetropolitana,,
382
+ ar.3.fed,Argentina Torneo Federal A,torneofederala,,
383
+ ar.4.metro,Argentina Primera C Metropolitana,primeracmetropolitana,,
384
+ ar.4.fed,Argentina Torneo Federal B,torneofederalb,,
385
+ ar.5.metro,Argentina Primera D Metropolitana,primeradmetropolitana,,
386
+ ar.5.fed,Argentina Torneo Federal C,torneofederalc,,
387
+ ar.copa,Argentina Copa Argentina,copaargentina,,
388
+ ar.copa.l,Argentina Copa Superliga,copasuperliga,,
389
+ ar.super,Argentina Supercopa Argentina,supercopaargentina,,
390
+ br.1,Brasileiro Série A,1-seriea,,
391
+ br.2,Brasileiro Série B,2-serieb,,
392
+ br.3,Brasileiro Série C,3-seriec,,
393
+ br.4,Brasileiro Série D,4-seried,,
394
+ br.copa,Copa do Brasil,cup,,
395
+ br.league,Brazil Primeira Liga,primeiraliga,,
396
+ br.rs,Campeonato Gaúcho,gauchao,,
397
+ br.rs.2,Brazil Divisão de Acesso Gaúcha,divisaodeacessogaucha,,
398
+ br.rs.3,Brazil Terceirona,terceirona,,
399
+ br.sp,Campeonato Paulista,paulistao,,
400
+ br.rj,Campeonato Carioca,carioca,,
401
+ br.mg,Campeonato Mineiro,mineiro,,
402
+ br.paranaense,Campeonato Paranaense,paranaense,,
403
+ copa.l,Copa Libertadores,libertadores,,
404
+ copa.s,Copa Sudamericana,sudamericana,,
405
+ recopa,Recopa Sudamericana,recopasudamericana,,
406
+ py.1,Paraguay Primera Division,primeradivision,,
407
+ pe.1,Peru Primera Division,primeradivision,,
408
+ pe.2,Peru Segunda Division,segundadivision,,
409
+ pe.copa.bic,Peru Copa Bicentenario 2019,copabicentenario2019,,
410
+ bo.1,Bolivia Bolivian Primera División,bolivianprimeradivision,,
411
+ cl.1,Chile Primera Divison,primeradivison,,
412
+ cl.2,Chile Primera B,primerab,,
413
+ cl.copa,Copa Chile,copachile,,
414
+ co.1,Colombia Primera A,1-primeraa,,
415
+ co.2,Colombia Primera B,primerab,,
416
+ co.copa,Copa Colombia,copacolombia,,
417
+ co.super,Colombia Super Cup,supercup,,
418
+ uy.1,Uruguay Primera División,primeradivision,,
419
+ uy.copa,Uruguay Cup,cup,,
420
+ ec.1,Ecuador Serie A,seriea,,
421
+ ec.2,Ecuador Serie B,serieb,,
422
+ ve.1,Venezuela Primera División,primeradivision,,
423
+ ve.copa,Copa Venezuela,copavenezuela,,
@@ -0,0 +1,83 @@
1
+
2
+ module SportDb
3
+ class LeagueConfig
4
+
5
+ def self.read( path )
6
+ recs = read_csv( path )
7
+ new( recs )
8
+ end
9
+
10
+ def initialize( recs=nil )
11
+ @table = {}
12
+ add( recs ) if recs
13
+ end
14
+
15
+
16
+ class LeagueItem
17
+ def initialize
18
+ @recs = []
19
+ end
20
+ def add( rec ) @recs << rec; end
21
+ alias_method :<<, :add
22
+
23
+ def find_by_season( season )
24
+ @recs.each do |rec|
25
+ start_season = rec['start_season']
26
+ end_season = rec['end_season']
27
+ return rec if (start_season.nil? || start_season <= season) &&
28
+ (end_season.nil? || end_season >= season)
29
+ end
30
+ nil
31
+ end
32
+
33
+
34
+ def name_by_season( season )
35
+ rec = find_by_season( season )
36
+ rec ? rec['name'] : nil
37
+ end
38
+
39
+ def basename_by_season( season )
40
+ rec = find_by_season( season )
41
+ rec ? rec['basename'] : nil
42
+ end
43
+
44
+
45
+ def [](key)
46
+ ## short cut - if only one or zero rec
47
+ ## return directly
48
+ if @recs.empty?
49
+ nil
50
+ elsif @recs.size == 1 &&
51
+ @recs[0]['start_season'].nil? &&
52
+ @recs[0]['end_season'].nil?
53
+ @recs[0][key.to_s]
54
+ else ### return proc that requires season arg
55
+ case key.to_sym
56
+ when :name then method(:name_by_season).to_proc
57
+ when :basename then method(:basename_by_season).to_proc
58
+ else
59
+ nil ## return nil - why? why not?
60
+ ## raise ArgumentError, "invalid key #{key}; use :name or :basename"
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ def add( recs )
67
+ recs.each do |rec|
68
+ @table[ rec['key'] ] ||= LeagueItem.new
69
+
70
+ ## note: auto-change seasons to season object or nil
71
+ @table[ rec['key'] ] << { 'name' => rec['name'],
72
+ 'basename' => rec['basename'],
73
+ 'start_season' => rec['start_season'].empty? ? nil : Season.parse( rec['start_season'] ),
74
+ 'end_season' => rec['end_season'].empty? ? nil : Season.parse( rec['end_season'] ),
75
+ }
76
+ end
77
+ end
78
+
79
+
80
+ def [](key) @table[ key.to_s.downcase ]; end
81
+
82
+ end # class LeagueConfig
83
+ end # module SportDb
@@ -0,0 +1,144 @@
1
+
2
+
3
+ ##
4
+ # use/find a better name
5
+ # League Set, League Sheet,
6
+ # Leagueset/LeagueSet, LeagueSheet/Leaguesheet
7
+ # or Leagues (only)??
8
+ # or League Book, League Setup, ??
9
+ # or Workset, Worksheet, Workbook, ...
10
+ #
11
+ # move league config over here from sportdb-writers too!!!!!
12
+
13
+
14
+ #
15
+ # note - Leagueset is for now top-level
16
+ # NOT in a namespace (e.g. Sports/SportDB) - keep - why? why not?
17
+
18
+
19
+ class Leagueset
20
+
21
+ def self.parse_args( args )
22
+ ### split args in datasets with leagues and seasons
23
+ datasets = []
24
+ args.each do |arg|
25
+ if arg =~ %r{^[0-9/-]+$} ## season
26
+ if datasets.empty?
27
+ puts "!! ERROR - league required before season arg; sorry"
28
+ exit 1
29
+ end
30
+
31
+ season = Season.parse( arg ) ## check season
32
+ datasets[-1][1] << season
33
+ else ## assume league key
34
+ key = arg.downcase
35
+ datasets << [key, []]
36
+ end
37
+ end
38
+ new(datasets)
39
+ end
40
+
41
+
42
+ def self.parse( txt )
43
+ ### split args in datasets with leagues and seasons
44
+ datasets = []
45
+ recs = parse_csv( txt )
46
+ recs.each do |rec|
47
+ key = rec['league'].downcase
48
+ datasets << [key, []]
49
+
50
+ seasons_str = rec['seasons']
51
+ seasons = seasons_str.split( /[ ]+/ )
52
+
53
+ seasons.each do |season_str|
54
+ ## note - add support for ranges e.g. 2001/02..2010/11
55
+ if season_str.index( '..' )
56
+ fst,snd = season_str.split( '..' )
57
+ # pp [fst,snd]
58
+ fst = Season.parse( fst )
59
+ snd = Season.parse( snd )
60
+ if fst < snd && fst.year? == snd.year?
61
+ datasets[-1][1] += (fst..snd).to_a
62
+ else
63
+ raise ArgumentError, "parse error - invalid season range >#{str}<, 1) two seasons required, 2) first < second, 3) same (year/academic) type"
64
+ end
65
+ else
66
+ season = Season.parse( season_str ) ## check season
67
+ datasets[-1][1] << season
68
+ end
69
+ end
70
+ end
71
+ new(datasets)
72
+ end
73
+
74
+ def self.read( path ) parse( read_text( path )); end
75
+
76
+
77
+
78
+ def initialize( recs )
79
+ @recs = recs
80
+ end
81
+
82
+ def size() @recs.size; end
83
+
84
+ def each( &blk )
85
+ @recs.each do |league_key, seasons|
86
+ blk.call( league_key, seasons )
87
+ end
88
+ end
89
+
90
+
91
+ ### use a function for (re)use
92
+ ### note - may add seasons in place!! (if seasons is empty)
93
+ def validate!( source_path: ['.'] )
94
+ each do |league_key, seasons|
95
+
96
+ league_info = find_league_info( league_key )
97
+ if league_info.nil?
98
+ puts "!! ERROR - no league (config) found for >#{league_key}<; sorry"
99
+ exit 1
100
+ end
101
+
102
+
103
+ if seasons.empty?
104
+ ## simple heuristic to find current season
105
+ [ Season( '2024/25'), Season( '2024') ].each do |season|
106
+ filename = "#{season.to_path}/#{league_key}.csv"
107
+ path = find_file( filename, path: source_path )
108
+ if path
109
+ seasons << season
110
+ break
111
+ end
112
+ end
113
+
114
+ if seasons.empty?
115
+ puts "!! ERROR - no latest auto-season via source found for #{league_key}; sorry"
116
+ exit 1
117
+ end
118
+ end
119
+
120
+ ## check source path too upfront - why? why not?
121
+ seasons.each do |season|
122
+ filename = "#{season.to_path}/#{league_key}.csv"
123
+ path = find_file( filename, path: source_path )
124
+
125
+ if path.nil?
126
+ puts "!! ERROR - no source found for #{filename}; sorry"
127
+ exit 1
128
+ end
129
+ end
130
+ end # each record
131
+ end
132
+
133
+
134
+
135
+
136
+
137
+ def pretty_print( printer )
138
+ printer.text( "<Leagueset: " )
139
+ printer.text( @recs )
140
+ printer.text( ">")
141
+ end
142
+
143
+ end # module Leagueset
144
+
@@ -19,7 +19,24 @@ module CET ## central european time helpers
19
19
  pp d
20
20
  exit 1
21
21
  end
22
- zone.local_time( d.year, d.month, d.day, d.hour, d.min, d.sec )
22
+
23
+ ### 2006-03-26 02:00:00
24
+ ## raise exception
25
+ ## is an invalid local time. (TZInfo::PeriodNotFound)
26
+ ## quick fix add +1
27
+ ## 2012-03-25 02:00:00
28
+ ## is an invalid local time. (TZInfo::PeriodNotFound)
29
+
30
+ if ['2018-03-25 02:00',
31
+ '2012-03-25 02:00',
32
+ '2006-03-26 02:00',
33
+ ].include?( d.strftime( '%Y-%m-%d %H:%M' ))
34
+ puts "!! hack - fix CET date #{d} - add +1 hour"
35
+ pp d
36
+ zone.local_time( d.year, d.month, d.day, d.hour+1, d.min, d.sec )
37
+ else
38
+ zone.local_time( d.year, d.month, d.day, d.hour, d.min, d.sec )
39
+ end
23
40
  end
24
41
  def self.zone() @zone ||= UTC.find_zone( 'Europe/Vienna' ); end
25
42
  end # class CET
@@ -3,8 +3,8 @@ module SportDb
3
3
  module Module
4
4
  module Timezones
5
5
  MAJOR = 0 ## todo: namespace inside version or something - why? why not??
6
- MINOR = 2
7
- PATCH = 2
6
+ MINOR = 3
7
+ PATCH = 0
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
@@ -9,21 +9,73 @@ require 'tzinfo'
9
9
  require_relative 'football-timezones/version'
10
10
  require_relative 'football-timezones/timezones'
11
11
 
12
- ####
13
- ### note - make find_zone! public/global by default - why? why not?
14
- module Kernel
15
- include TimezoneHelper
12
+
13
+
14
+ ###################
15
+ ## setup (quick) leagues (info) table
16
+ require_relative 'football-timezones/league_config'
17
+
18
+ module LeagueInfoHelper
19
+ def _league_info ## load config on demand
20
+ @_leagues ||= begin
21
+ leagues = SportDb::LeagueConfig.new
22
+ ['leagues',
23
+ ].each do |name|
24
+ recs = read_csv( "#{SportDb::Module::Timezones.root}/config/#{name}.csv" )
25
+ leagues.add( recs )
26
+ end
27
+ leagues
28
+ end
29
+ end
30
+
31
+ def find_league_info( league )
32
+ raise ArgumentError, "league key as string|symbol expected" unless league.is_a?(String) || league.is_a?(Symbol)
33
+ _league_info[ league ]
34
+ end
35
+ end # module LeagueInfoHelper
36
+
37
+
38
+
39
+
40
+
41
+ require_relative 'football-timezones/leagueset'
42
+
43
+ #### add alias - why? why not?
44
+ LeagueSet = Leagueset
45
+
46
+
47
+ module LeaguesetHelper
48
+ ###
49
+ ### note - make read_leagueset & friends public/global by default - why? why not?
50
+ def read_leagueset( path ) Leagueset.read( path ); end
51
+ def parse_leagueset( txt ) Leagueset.parse( txt ); end
52
+ def parse_leagueset_args( args ) Leagueset.parse_args( args ); end
16
53
  end
17
54
 
18
55
 
19
56
 
20
- require_relative 'football-timezones/datasets'
57
+ module FileHelper
58
+ def find_file( filename, path: )
59
+ path.each do |src_dir|
60
+ path = "#{src_dir}/#{filename}"
61
+ return path if File.exist?( path )
62
+ end
63
+
64
+ ## fix - raise file not found error!!!
65
+ nil ## not found - raise filenot found error - why? why not?
66
+ end
67
+ end
68
+
69
+
21
70
 
22
- ###
23
- ### note - make read_datasets & friends public/global by default - why? why not?
24
- def read_datasets( path ) Datasets.read( path ); end
25
- def parse_datasets( str ) Datasets.parse( str ); end
26
- def parse_datasets_args( args ) Datasets.parse_args( args ); end
71
+ ####
72
+ ### note - make find_zone! public/global by default - why? why not?
73
+ module Kernel
74
+ include FileHelper
75
+ include TimezoneHelper
76
+ include LeagueInfoHelper
77
+ include LeaguesetHelper
78
+ end
27
79
 
28
80
 
29
81
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: football-timezones
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-24 00:00:00.000000000 Z
11
+ date: 2024-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tzinfo
@@ -78,14 +78,14 @@ dependencies:
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '4.1'
81
+ version: '4.2'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '4.1'
88
+ version: '4.2'
89
89
  description: football-timezones - time & timezone helpers for football (league) data
90
90
  email: gerald.bauer@gmail.com
91
91
  executables: []
@@ -99,6 +99,7 @@ files:
99
99
  - Manifest.txt
100
100
  - README.md
101
101
  - Rakefile
102
+ - config/leagues.csv
102
103
  - config/timezones_africa.csv
103
104
  - config/timezones_america.csv
104
105
  - config/timezones_asia.csv
@@ -107,7 +108,8 @@ files:
107
108
  - config/timezones_pacific.csv
108
109
  - config/timezones_world.csv
109
110
  - lib/football-timezones.rb
110
- - lib/football-timezones/datasets.rb
111
+ - lib/football-timezones/league_config.rb
112
+ - lib/football-timezones/leagueset.rb
111
113
  - lib/football-timezones/timezones.rb
112
114
  - lib/football-timezones/version.rb
113
115
  - lib/football/timezones.rb
@@ -132,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
134
  - !ruby/object:Gem::Version
133
135
  version: '0'
134
136
  requirements: []
135
- rubygems_version: 3.4.10
137
+ rubygems_version: 3.5.22
136
138
  signing_key:
137
139
  specification_version: 4
138
140
  summary: football-timezones - time & timezone helpers for football (league) data
@@ -1,62 +0,0 @@
1
-
2
-
3
- module Datasets
4
- def self.parse_args( args )
5
- ### split args in datasets with leagues and seasons
6
- datasets = []
7
- args.each do |arg|
8
- if arg =~ %r{^[0-9/-]+$} ## season
9
- if datasets.empty?
10
- puts "!! ERROR - league required before season arg; sorry"
11
- exit 1
12
- end
13
-
14
- season = Season.parse( arg ) ## check season
15
- datasets[-1][1] << season
16
- else ## assume league key
17
- key = arg.downcase
18
- datasets << [key, []]
19
- end
20
- end
21
- datasets
22
- end
23
-
24
-
25
- def self.parse( txt )
26
- ### split args in datasets with leagues and seasons
27
- datasets = []
28
- recs = parse_csv( txt )
29
- recs.each do |rec|
30
- key = rec['league'].downcase
31
- datasets << [key, []]
32
-
33
- seasons_str = rec['seasons']
34
- seasons = seasons_str.split( /[ ]+/ )
35
-
36
- seasons.each do |season_str|
37
- ## note - add support for ranges e.g. 2001/02..2010/11
38
- if season_str.index( '..' )
39
- fst,snd = season_str.split( '..' )
40
- # pp [fst,snd]
41
- fst = Season.parse( fst )
42
- snd = Season.parse( snd )
43
- if fst < snd && fst.year? == snd.year?
44
- datasets[-1][1] += (fst..snd).to_a
45
- else
46
- raise ArgumentError, "parse error - invalid season range >#{str}<, 1) two seasons required, 2) first < second, 3) same (year/academic) type"
47
- end
48
- else
49
- season = Season.parse( season_str ) ## check season
50
- datasets[-1][1] << season
51
- end
52
- end
53
- end
54
- datasets
55
- end
56
-
57
-
58
- def self.read( path )
59
- parse( read_text( path ))
60
- end
61
- end # module Datasets
62
-