football-timezones 0.2.2 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a95892d9f16f3c79ca11ba53c7620fb1a960685094f34d45505c1a43152c9eef
4
- data.tar.gz: f007f71ffe6a2e2286497b85c9873c94f21e34008594af9e21cb1d394ec71af2
3
+ metadata.gz: ac21f96485baced66f13afd18e167b181203b9aa280b5c16996f76b0895c7500
4
+ data.tar.gz: a6bbe1691030240f2cb599bfb3df8634337ca3678ced4eb19adf6c37f808bbb7
5
5
  SHA512:
6
- metadata.gz: 885f9273eb9502493c4f3890e94ded900dc1d576dc61fc3666d1bc6a7f105ded9f410dfd3c749ba9943d16d5ac39e0f337e91b7597d71db6c4c36ec44163496d
7
- data.tar.gz: 204e812e47f6080748be10242f0c7b92a279f38384e6f909b3d897d062373fda3be497c829c771702d83e1eff0f59ed6bb648b408d560af31594139251cc688d
6
+ metadata.gz: 42e149d038868379ab286ded5087b885d4d7bee7d66246b4a6ec8b80acb3d2ec7077854583511fff8175be3c422a262f68deb2898e395871056d302a6051db0c
7
+ data.tar.gz: b53f6d16560a9082e8142080356dd8d1ad39bcec2888a932dbb3e4e395ce3f86cefd25ee8bdbd5087bbc5ea495f4bc0b0e37bde27f7218f141a150256e2cb94f
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ### 0.2.2
1
+ ### 0.3.1
2
2
 
3
3
  ### 0.0.1 / 2024-09-11
4
4
 
data/Manifest.txt CHANGED
@@ -2,6 +2,8 @@ CHANGELOG.md
2
2
  Manifest.txt
3
3
  README.md
4
4
  Rakefile
5
+ config/leagues.csv
6
+ config/leagues_more.csv
5
7
  config/timezones_africa.csv
6
8
  config/timezones_america.csv
7
9
  config/timezones_asia.csv
@@ -10,7 +12,8 @@ config/timezones_middle_east.csv
10
12
  config/timezones_pacific.csv
11
13
  config/timezones_world.csv
12
14
  lib/football-timezones.rb
13
- lib/football-timezones/datasets.rb
15
+ lib/football-timezones/league_config.rb
16
+ lib/football-timezones/leagueset.rb
14
17
  lib/football-timezones/timezones.rb
15
18
  lib/football-timezones/version.rb
16
19
  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),3-seriec_a,,
213
+ it.3.b,Italian Serie C (North & Central East),3-seriec_b,,
214
+ it.3.c,Italian Serie C (South),3-seriec_c,,
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,34 @@
1
+ key,name,basename,start_season,end_season
2
+
3
+
4
+ ### quick hack - add more leagues "by hand"
5
+ ### todo - add leagues upstream!!!
6
+
7
+
8
+ mls,Major League Soccer,majorleaguesoccer,,
9
+ mls.back,MLS is Back Tournament,mlsisbacktournament,,
10
+
11
+
12
+ ## first expansion season -> 2020/21 Apertura
13
+ ## last ascenso season -> 2019/20 Clausura
14
+ mx.2.ascenso,Ascenso MX,2-ascensomx,,2019/20
15
+ mx.2.expansion,Liga de Expansión MX,2-ligaexpansionmx,2020/21,
16
+
17
+
18
+ ### add alternate keys for de.4
19
+ de.4.n,Deutsche Regionalliga Nord,4-regionalliga_nord,,
20
+ de.4.no,Deutsche Regionalliga Nordost,4-regionalliga_nordost,,
21
+ de.4.w,Deutsche Regionalliga West,4-regionalliga_west,,
22
+ de.4.sw,Deutsche Regionalliga Südwest,4-regionalliga_suedwest,,
23
+
24
+
25
+ ## italy - update upstream
26
+ ## use seriec_a or seriec-a ???
27
+ # it.3.a,Italian Serie C (North & Central West),3-seriec_a,,
28
+ # it.3.b,Italian Serie C (North & Central East),3-seriec_b,,
29
+ # it.3.c,Italian Serie C (South),3-seriec_c,,
30
+
31
+ ## england
32
+ ## add alternate codes / keys
33
+ eng.fa.cup,English FA Cup,facup,,
34
+ eng.efl.cup,English EFL Cup,eflcup,,
@@ -2,6 +2,8 @@ key, zone
2
2
 
3
3
 
4
4
  us, America/New_York
5
+ mls, America/New_York
6
+
5
7
  ca, America/Toronto
6
8
 
7
9
  mx, America/Mexico_City
@@ -31,4 +33,9 @@ co, America/Bogota
31
33
 
32
34
 
33
35
  copa.l, America/Sao_Paulo ### use brazil time - why? why not?
36
+ copa.s, America/Sao_Paulo
37
+
38
+
39
+ southamerica, America/Sao_Paulo ## copa america - use country specific by year - why? why not?
40
+
34
41
 
@@ -16,4 +16,4 @@ world+2002, Asia/Tokyo # Japan & South Korea
16
16
  world+1998, Europe/Paris # France
17
17
 
18
18
 
19
-
19
+ friendlies, Europe/London ## use (generic) utc - why? why not?
@@ -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,172 @@
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
+ ##
94
+ ## todo/check - change source_path to (simply) path - why? why not?
95
+ def validate!( source_path: ['.'] )
96
+ each do |league_key, seasons|
97
+
98
+ league_info = find_league_info( league_key )
99
+ if league_info.nil?
100
+ puts "!! ERROR - no league (config) found for >#{league_key}<; sorry"
101
+ exit 1
102
+ end
103
+
104
+
105
+ if seasons.empty?
106
+ ## simple heuristic to find current season
107
+ [ Season( '2024/25'), Season( '2024') ].each do |season|
108
+ filename = "#{season.to_path}/#{league_key}.csv"
109
+ path = find_file( filename, path: source_path )
110
+ if path
111
+ seasons << season
112
+ break
113
+ end
114
+ end
115
+
116
+ if seasons.empty?
117
+ puts "!! ERROR - no latest auto-season via source found for #{league_key}; sorry"
118
+ exit 1
119
+ end
120
+ end
121
+
122
+ ## check source path too upfront - why? why not?
123
+ seasons.each do |season|
124
+ filename = "#{season.to_path}/#{league_key}.csv"
125
+ path = find_file( filename, path: source_path )
126
+
127
+ if path.nil?
128
+ puts "!! ERROR - no source found for #{filename}; sorry"
129
+ exit 1
130
+ end
131
+ end
132
+ end # each record
133
+ end
134
+
135
+
136
+
137
+ ## todo/check: find a better name for helper?
138
+ ## find_all_datasets, filter_datatsets - add alias(es???
139
+ ## queries (lik ARGV) e.g. ['at'] or ['eng', 'de'] etc. list of strings
140
+ def filter( queries=[] )
141
+ ## find all matching leagues (that is, league keys)
142
+ if queries.empty? ## no filter - get all league keys
143
+ self
144
+ else
145
+ recs = @recs.find_all do |league_key, seasons|
146
+ found = false
147
+ ## note: normalize league key
148
+ ## (remove dot and downcase)
149
+ norm_key = league_key.gsub( '.', '' )
150
+ queries.each do |query|
151
+ q = query.gsub( '.', '' ).downcase
152
+ if norm_key.start_with?( q )
153
+ found = true
154
+ break
155
+ end
156
+ end
157
+ found
158
+ end
159
+ ## return new typed leagueset
160
+ self.class.new( recs )
161
+ end
162
+ end
163
+
164
+
165
+ def pretty_print( printer )
166
+ printer.text( "<Leagueset: " )
167
+ printer.text( @recs )
168
+ printer.text( ">")
169
+ end
170
+
171
+ end # module Leagueset
172
+
@@ -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 = 1
8
8
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
9
 
10
10
  def self.version
@@ -9,21 +9,74 @@ 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
+ 'leagues_more',
24
+ ].each do |name|
25
+ recs = read_csv( "#{SportDb::Module::Timezones.root}/config/#{name}.csv" )
26
+ leagues.add( recs )
27
+ end
28
+ leagues
29
+ end
30
+ end
31
+
32
+ def find_league_info( league )
33
+ raise ArgumentError, "league key as string|symbol expected" unless league.is_a?(String) || league.is_a?(Symbol)
34
+ _league_info[ league ]
35
+ end
36
+ end # module LeagueInfoHelper
37
+
38
+
39
+
40
+
41
+
42
+ require_relative 'football-timezones/leagueset'
43
+
44
+ #### add alias - why? why not?
45
+ LeagueSet = Leagueset
46
+
47
+
48
+ module LeaguesetHelper
49
+ ###
50
+ ### note - make read_leagueset & friends public/global by default - why? why not?
51
+ def read_leagueset( path ) Leagueset.read( path ); end
52
+ def parse_leagueset( txt ) Leagueset.parse( txt ); end
53
+ def parse_leagueset_args( args ) Leagueset.parse_args( args ); end
16
54
  end
17
55
 
18
56
 
19
57
 
20
- require_relative 'football-timezones/datasets'
58
+ module FileHelper
59
+ def find_file( filename, path: )
60
+ path.each do |src_dir|
61
+ path = "#{src_dir}/#{filename}"
62
+ return path if File.exist?( path )
63
+ end
64
+
65
+ ## fix - raise file not found error!!!
66
+ nil ## not found - raise filenot found error - why? why not?
67
+ end
68
+ end
69
+
70
+
21
71
 
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
72
+ ####
73
+ ### note - make find_zone! public/global by default - why? why not?
74
+ module Kernel
75
+ include FileHelper
76
+ include TimezoneHelper
77
+ include LeagueInfoHelper
78
+ include LeaguesetHelper
79
+ end
27
80
 
28
81
 
29
82
 
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.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: 2024-09-24 00:00:00.000000000 Z
11
+ date: 2025-03-26 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,8 @@ files:
99
99
  - Manifest.txt
100
100
  - README.md
101
101
  - Rakefile
102
+ - config/leagues.csv
103
+ - config/leagues_more.csv
102
104
  - config/timezones_africa.csv
103
105
  - config/timezones_america.csv
104
106
  - config/timezones_asia.csv
@@ -107,7 +109,8 @@ files:
107
109
  - config/timezones_pacific.csv
108
110
  - config/timezones_world.csv
109
111
  - lib/football-timezones.rb
110
- - lib/football-timezones/datasets.rb
112
+ - lib/football-timezones/league_config.rb
113
+ - lib/football-timezones/leagueset.rb
111
114
  - lib/football-timezones/timezones.rb
112
115
  - lib/football-timezones/version.rb
113
116
  - lib/football/timezones.rb
@@ -132,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
135
  - !ruby/object:Gem::Version
133
136
  version: '0'
134
137
  requirements: []
135
- rubygems_version: 3.4.10
138
+ rubygems_version: 3.5.22
136
139
  signing_key:
137
140
  specification_version: 4
138
141
  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
-