sportdb 1.8.20 → 1.8.21

Sign up to get free protection for your applications and to get access to all the features.
@@ -112,9 +112,17 @@ test/data/at-austria/teams.txt
112
112
  test/data/at-austria/teams_2.txt
113
113
  test/data/world-cup/1930/cup.txt
114
114
  test/data/world-cup/1930/cup.yml
115
+ test/data/world-cup/1954/cup.txt
116
+ test/data/world-cup/1954/cup.yml
117
+ test/data/world-cup/1962/cup.txt
118
+ test/data/world-cup/1962/cup.yml
115
119
  test/data/world-cup/leagues.txt
116
- test/data/world-cup/seasons.txt
117
- test/data/world-cup/teams.txt
120
+ test/data/world-cup/seasons_1930.txt
121
+ test/data/world-cup/seasons_1954.txt
122
+ test/data/world-cup/seasons_1962.txt
123
+ test/data/world-cup/teams_1930.txt
124
+ test/data/world-cup/teams_1954.txt
125
+ test/data/world-cup/teams_1962.txt
118
126
  test/helper.rb
119
127
  test/test_changes.rb
120
128
  test/test_cursor.rb
File without changes
@@ -19,13 +19,13 @@ stage: Stage|Phase|Rounds
19
19
 
20
20
  ### Knockout rounds
21
21
 
22
- playoffs: Play-off|Play-offs|Play-off for quarter-finals
22
+ playoffs: Playoff|Playoffs|Play-off|Play-offs|Play-off for quarter-finals
23
23
  round32: Round of 32|Last 32
24
24
  round16: Round of 16|Last 16|8th finals
25
25
  quarterfinals: Quarterfinals|Quarter-finals|Quarters|Quarterfinal|Last 8
26
26
  semifinals: Semifinals|Semi-finals|Semis|Last 4
27
27
  fifthplace: Fifth place match|Fifth place|5th place match|5th place final|5th place|Match for fifth place|Match for 5th place
28
- thirdplace: Third place match|Third place|3rd place match|3rd place final|3rd place|Match for third place|Match for 3rd place|Third-place play-off|Third place play-off
28
+ thirdplace: Third place match|Third-place match|Third place|3rd place match|3rd place final|3rd place|Match for third place|Match for 3rd place|Third-place play-off|Third place play-off
29
29
  final: Final|Finals
30
30
 
31
31
 
@@ -89,7 +89,9 @@ class GameReader
89
89
  ## NB: assume active activerecord connection
90
90
 
91
91
  ## reset cached values
92
- @patch_rounds = {}
92
+ @patch_round_ids_dates = []
93
+ @patch_round_ids_pos = []
94
+
93
95
  @round = nil ## fix: change/rename to @last_round !!!
94
96
  @group = nil ## fix: change/rename to @last_group !!!
95
97
  @last_date = nil
@@ -100,7 +102,7 @@ class GameReader
100
102
  # for all 1-n fixture files (no need to configure every time!!)
101
103
 
102
104
  @event = Event.find_by_key!( event_key )
103
-
105
+
104
106
  logger.debug "Event #{@event.key} >#{@event.title}<"
105
107
 
106
108
  ### fix: use build_title_table_for ??? why? why not??
@@ -118,6 +120,14 @@ class GameReader
118
120
  def parse_group_header( line )
119
121
  logger.debug "parsing group header line: >#{line}<"
120
122
 
123
+ # note: group header resets (last) round (allows, for example):
124
+ # e.g.
125
+ # Group Playoffs/Replays -- round header
126
+ # team1 team2 -- match
127
+ # Group B: -- group header
128
+ # team1 team2 - match (will get new auto-matchday! not last round)
129
+ @round = nil ## fix: change/rename to @last_round !!!
130
+
121
131
  title, pos = find_group_title_and_pos!( line )
122
132
 
123
133
  logger.debug " title: >#{title}<"
@@ -256,14 +266,25 @@ class GameReader
256
266
 
257
267
  ## check if pos available; if not auto-number/calculate
258
268
  if pos.nil?
259
- pos = (@last_round_pos||0)+1
260
- logger.debug( " no round pos found; auto-number round - use (#{pos})" )
269
+ if @patch_round_ids_pos.empty?
270
+ pos = (@last_round_pos||0)+1
271
+ logger.debug( " no round pos found; auto-number round - use (#{pos})" )
272
+ else
273
+ # note: if any rounds w/o pos already seen (add for auto-numbering at the end)
274
+ # will get auto-numbered sorted by start_at date
275
+ pos = 999001+@patch_round_ids_pos.length # e.g. 999<count> - 999001,999002,etc.
276
+ logger.debug( " no round pos found; auto-number round w/ patch (backtrack) at the end" )
277
+ end
261
278
  end
262
279
 
263
280
  # store pos for auto-number next round if missing
264
281
  # - note: only if greater/bigger than last; use max
265
282
  # - note: last_round_pos might be nil - thus set to 0
266
- @last_round_pos = [pos,@last_round_pos||0].max
283
+ if pos > 999000
284
+ # note: do NOT update last_round_pos for to-be-patched rounds
285
+ else
286
+ @last_round_pos = [pos,@last_round_pos||0].max
287
+ end
267
288
 
268
289
 
269
290
  title = find_round_header_title!( line )
@@ -289,8 +310,14 @@ class GameReader
289
310
  knockout: knockout_flag
290
311
  }
291
312
 
313
+ if pos > 999000
314
+ # no pos (e.g. will get autonumbered later) - try match by title for now
315
+ # e.g. lets us use title 'Group Replays', for example, multiple times
316
+ @round = Round.find_by_event_id_and_title( @event.id, title )
317
+ else
318
+ @round = Round.find_by_event_id_and_pos( @event.id, pos )
319
+ end
292
320
 
293
- @round = Round.find_by_event_id_and_pos( @event.id, pos )
294
321
  if @round.present?
295
322
  logger.debug "update round #{@round.id}:"
296
323
  else
@@ -300,8 +327,8 @@ class GameReader
300
327
  round_attribs = round_attribs.merge( {
301
328
  event_id: @event.id,
302
329
  pos: pos,
303
- start_at: Time.utc('1912-12-12'),
304
- end_at: Time.utc('1912-12-12')
330
+ start_at: Date.parse('1911-11-11'),
331
+ end_at: Date.parse('1911-11-11')
305
332
  })
306
333
  end
307
334
 
@@ -309,8 +336,9 @@ class GameReader
309
336
 
310
337
  @round.update_attributes!( round_attribs )
311
338
 
312
- ### store list of round is for patching start_at/end_at at the end
313
- @patch_rounds[ @round.id ] = @round.id
339
+ @patch_round_ids_pos << @round.id if pos > 999000
340
+ ### store list of round ids for patching start_at/end_at at the end
341
+ @patch_round_ids_dates << @round.id # todo/fix/check: check if round has definition (do NOT patch if definition (not auto-added) present)
314
342
  end
315
343
 
316
344
 
@@ -426,12 +454,35 @@ class GameReader
426
454
  if round.nil?
427
455
  logger.warn( " !!!! no round match found for date #{date}" )
428
456
  pp Round.all
457
+
458
+ ###################################
459
+ # -- try auto-adding matchday
460
+ round = Round.new
461
+
462
+ round_attribs = {
463
+ event_id: @event.id,
464
+ title: "Matchday #{date.to_date}",
465
+ pos: 999001+@patch_round_ids_pos.length, # e.g. 999<count> - 999001,999002,etc.
466
+ start_at: date.to_date,
467
+ end_at: date.to_date
468
+ }
469
+
470
+ logger.info( " auto-add round >Matchday #{date.to_date}<" )
471
+ logger.debug round_attribs.to_json
472
+
473
+ round.update_attributes!( round_attribs )
474
+
475
+ @patch_round_ids_pos << round.id # todo/check - add just id or "full" record as now - why? why not?
429
476
  end
430
477
 
431
478
  # store pos for auto-number next round if missing
432
479
  # - note: only if greater/bigger than last; use max
433
480
  # - note: last_round_pos might be nil - thus set to 0
434
- @last_round_pos = [round.pos,@last_round_pos||0].max
481
+ if round.pos > 999000
482
+ # note: do NOT update last_round_pos for to-be-patched rounds
483
+ else
484
+ @last_round_pos = [round.pos,@last_round_pos||0].max
485
+ end
435
486
 
436
487
  ## note: will crash (round.pos) if round is nil
437
488
  logger.debug( " using round #{round.pos} >#{round.title}< start_at: #{round.start_at}, end_at: #{round.end_at}" )
@@ -557,36 +608,71 @@ class GameReader
557
608
  end
558
609
  end # lines.each
559
610
 
611
+ ###########################
612
+ # backtrack and patch round pos and round dates (start_at/end_at)
613
+ # note: patch dates must go first! (otherwise sort_by_date will not work for round pos)
560
614
 
561
- ###
562
- # fix: do NOT patch if auto flag is set to false !!!
563
- # e.g. rounds got added w/ round def (not w/ round header)
615
+ unless @patch_round_ids_dates.empty?
616
+ ###
617
+ # fix: do NOT patch if auto flag is set to false !!!
618
+ # e.g. rounds got added w/ round def (not w/ round header)
564
619
 
565
- @patch_rounds.each do |k,v|
566
- logger.debug "patch start_at/end_at date for round #{k}:"
567
- round = Round.find( k )
568
- games = round.games.order( 'play_at asc' ).all
569
-
570
- ## skip rounds w/ no games
571
-
572
- ## todo/fix: what's the best way for checking assoc w/ 0 recs?
573
- next if games.size == 0
574
-
575
- round_attribs = {}
576
-
577
- ## todo: check for no records
578
- ## e.g. if game[0].present? or just if game[0] ??
620
+ # note: use uniq - to allow multiple round headers (possible?)
621
+
622
+ Round.find( @patch_round_ids_dates.uniq ).each do |r|
623
+ logger.debug "patch round start_at/end_at date for #{r.title}:"
579
624
 
580
- # note: make sure start_at/end_at is date only (e.g. use play_at.to_date)
581
- # sqlite3 saves datetime in date field as datetime, for example (will break date compares later!)
625
+ ## note:
626
+ ## will add "scope" pos first e.g
627
+ #
628
+ ## SELECT "games".* FROM "games" WHERE "games"."round_id" = ?
629
+ # ORDER BY pos, play_at asc [["round_id", 7]]
630
+ # thus will NOT order by play_at but by pos first!!!
631
+ # =>
632
+ # need to unscope pos!!! or use unordered_games - games_by_play_at_date etc.??
633
+ # thus use reorder()!!! - not just order('play_at asc')
582
634
 
583
- round_attribs[:start_at] = games[0].play_at.to_date
584
- round_attribs[:end_at ] = games[-1].play_at.to_date
635
+ games = r.games.reorder( 'play_at asc' ).all
636
+
637
+ ## skip rounds w/ no games
638
+
639
+ ## todo/check/fix: what's the best way for checking assoc w/ 0 recs?
640
+ next if games.size == 0
641
+
642
+ # note: make sure start_at/end_at is date only (e.g. use play_at.to_date)
643
+ # sqlite3 saves datetime in date field as datetime, for example (will break date compares later!)
644
+
645
+ round_attribs = {
646
+ start_at: games[0].play_at.to_date, # use games.first ?
647
+ end_at: games[-1].play_at.to_date # use games.last ? why? why not?
648
+ }
585
649
 
586
- logger.debug round_attribs.to_json
587
- round.update_attributes!( round_attribs )
650
+ logger.debug round_attribs.to_json
651
+ r.update_attributes!( round_attribs )
652
+ end
588
653
  end
589
-
654
+
655
+ unless @patch_round_ids_pos.empty?
656
+ # step 1: sort by date
657
+ # step 2: update pos
658
+ # note: use uniq - to allow multiple round headers (possible?)
659
+ Round.order( 'start_at asc').find( @patch_round_ids_pos.uniq ).each_with_index do |r,idx|
660
+ # note: starts counting w/ zero(0)
661
+ logger.debug "[#{idx+1}] patch round pos for #{r.title}:"
662
+ round_attribs = {
663
+ pos: idx+1
664
+ }
665
+
666
+ # update title if Matchday XXXX e.g. use Matchday 1 etc.
667
+ if r.title.starts_with?('Matchday')
668
+ round_attribs[:title] = "Matchday #{idx+1}"
669
+ end
670
+
671
+ logger.debug round_attribs.to_json
672
+ r.update_attributes!( round_attribs )
673
+ end
674
+ end
675
+
590
676
  end # method parse_fixtures
591
677
 
592
678
  end # class GameReader
@@ -122,8 +122,20 @@ module SportDb
122
122
  # e.g. (1) - must start line
123
123
  regex_pos = /^[ \t]*\((\d{1,3})\)[ \t]+/
124
124
 
125
+
126
+ #### fix:
127
+ ## use/make keywords required
128
+ # e.g. Round of 16 -> should NOT match 16!
129
+ # Round 16 - ok
130
+ # thus, check for required keywords
131
+
125
132
  ## find free standing number
126
- regex_num = /\b(\d{1,3})\b/
133
+ # note: /\b(\d{1,3})\b/
134
+ # will match -12
135
+ # thus, use space required - will NOT match -2 e.g. Group-2 Play-off
136
+ # note: allow 1. Runde n
137
+ # 1^ Giornata
138
+ regex_num = /(?:^|\s)(\d{1,3})(?:[.\^\s]|$)/
127
139
 
128
140
  if line =~ regex_pos
129
141
  logger.debug " pos: >#{$1}<"
@@ -1,6 +1,6 @@
1
1
 
2
2
  module SportDb
3
- VERSION = '1.8.20'
3
+ VERSION = '1.8.21'
4
4
  end
5
5
 
6
6
 
@@ -0,0 +1,90 @@
1
+ ##################################################
2
+ # World Cup 1954 Switzerland, 16 June - 4 July
3
+
4
+
5
+ Group 1 | Brazil Yugoslavia France Mexico
6
+ Group 2 | Hungary West Germany Turkey South Korea
7
+ Group 3 | Uruguay Austria Czechoslovakia Scotland
8
+ Group 4 | England Switzerland Italy Belgium
9
+
10
+
11
+ Group 1:
12
+
13
+ (3) 16 June Brazil 5-0 Mexico @ Charmilles Stadium, Geneva
14
+ (4) 16 June Yugoslavia 1-0 France @ Stade Olympique de la Pontaise, Lausanne
15
+
16
+ (10) 19 June Brazil 1-1 a.e.t. 1-1 Yugoslavia @ Stade Olympique de la Pontaise, Lausanne
17
+ (11) 19 June France 3-2 Mexico @ Charmilles Stadium, Geneva
18
+
19
+
20
+ Group 2:
21
+
22
+ (5) 17 June West Germany 4-1 Turkey @ Wankdorf Stadium, Bern
23
+ (8) 17 June Hungary 9-0 South Korea @ Hardturm Stadium, Zürich
24
+
25
+ (14) 20 June Hungary 8-3 West Germany @ St. Jakob Stadium, Basel
26
+ (15) 20 June Turkey 7-0 South Korea @ Charmilles Stadium, Geneva
27
+
28
+
29
+ # note: hack - avoid group title match for "Group 2" for now; use "Group-2"
30
+ # fix: add and check group 2 match only after separator / or such
31
+
32
+ Group-2 Play-off
33
+
34
+ ### what match number to use - fifa says 231?? - start 24+offset (24==regular matches) e.g. 24+1=25
35
+
36
+ (25) 23 June West Germany 7-2 Turkey @ Hardturm Stadium, Zürich
37
+
38
+
39
+ Group 3:
40
+
41
+ (1) 16 June Uruguay 2-0 Czechoslovakia @ Wankdorf Stadium, Bern
42
+ (2) 16 June Austria 1-0 Scotland @ Hardturm Stadium, Zürich
43
+
44
+ (9) 19 June Austria 5-0 Czechoslovakia @ Hardturm Stadium, Zürich
45
+ (12) 19 June Uruguay 7-0 Scotland @ St. Jakob Stadium, Basel
46
+
47
+
48
+ Group 4:
49
+
50
+ (6) 17 June England 4-4 a.e.t. 3-3 Belgium @ St. Jakob Stadium, Basel
51
+ (7) 17 June Switzerland 2-1 Italy @ Stade Olympique de la Pontaise, Lausanne
52
+
53
+ (13) 20 June England 2-0 Switzerland @ Wankdorf Stadium, Bern
54
+ (16) 20 June Italy 4-1 Belgium @ Cornaredo Stadium, Lugano
55
+
56
+
57
+ # note: hack - avoid group title match for "Group 4" for now; use "Group-4"
58
+ # fix: add and check group 4 match only after separator / or such
59
+
60
+ Group-4 Play-off
61
+
62
+ ### what match number to use - fifa says 211?? - start 24+offset (24==regular matches) e.g. 24+2=26
63
+
64
+ (26) 23 June Switzerland 4-1 Italy @ St. Jakob Stadium, Basel
65
+
66
+
67
+ Quarter-finals
68
+
69
+ (19) 26 June Austria 7-5 Switzerland @ Stade Olympique de la Pontaise, Lausanne
70
+ (20) 26 June Uruguay 4-2 England @ St. Jakob Stadium, Basel
71
+
72
+ (17) 27 June Yugoslavia 0-2 West Germany @ Charmilles Stadium, Geneva
73
+ (18) 27 June Brazil 2-4 Hungary @ Wankdorf Stadium, Bern
74
+
75
+
76
+ Semi-finals
77
+
78
+ (21) 30 June West Germany 6-1 Austria @ St. Jakob Stadium, Basel
79
+ (22) 30 June Hungary 4-2 a.e.t. 2-2 Uruguay @ Stade Olympique de la Pontaise, Lausanne
80
+
81
+
82
+ Third place match
83
+
84
+ (23) 3 July Uruguay 1-3 Austria @ Hardturm Stadium, Zürich
85
+
86
+
87
+ Final
88
+
89
+ (24) 4 July Hungary 2-3 West Germany @ Wankdorf Stadium, Bern
90
+
@@ -0,0 +1,30 @@
1
+ ##################################################
2
+ # World Cup 1954 Switzerland, 16 June - 4 July
3
+
4
+ league: world
5
+ season: 1954
6
+ start_at: 1954-06-16
7
+
8
+ # 16 Teams
9
+
10
+ teams:
11
+ ## Asia
12
+ - kor # Korea Republic
13
+ ## Europe
14
+ - aut # Austria
15
+ - bel # Belgium
16
+ - tch # Czechoslovakia
17
+ - eng # England
18
+ - fra # France
19
+ - frg # West Germany
20
+ - hun # Hungary
21
+ - ita # Italy
22
+ - sco # Scotland
23
+ - sui # Switzerland
24
+ - tur # Turkey
25
+ - yug # Yugoslavia
26
+ ## North and Central America
27
+ - mex # Mexico
28
+ ## South America
29
+ - bra # Brazil
30
+ - uru # Uruguay
@@ -0,0 +1,86 @@
1
+ ###########################################
2
+ # World Cup 1962 Chile, 30 May - 17 June
3
+
4
+
5
+ Group 1 | Soviet Union Yugoslavia Uruguay Colombia
6
+ Group 2 | West Germany Chile Italy Switzerland
7
+ Group 3 | Brazil Czechoslovakia Mexico Spain
8
+ Group 4 | Hungary England Argentina Bulgaria
9
+
10
+
11
+ Group 1:
12
+
13
+ ### note: try out of order e.g. 3 June before 30 May etc.
14
+ ## should work for auto-add matchdays (order should not matter - get sorted and auto-assigned at the end)
15
+
16
+ (17) 6 June Soviet Union 2-1 Uruguay @ Estadio Carlos Dittborn, Arica
17
+ (21) 7 June Yugoslavia 5-0 Colombia @ Estadio Carlos Dittborn, Arica
18
+
19
+ (9) 2 June Yugoslavia 3-1 Uruguay @ Estadio Carlos Dittborn, Arica
20
+ (13) 3 June Soviet Union 4-4 Colombia @ Estadio Carlos Dittborn, Arica
21
+
22
+ (1) 30 May Uruguay 2-1 Colombia @ Estadio Carlos Dittborn, Arica
23
+ (5) 31 May Soviet Union 2-0 Yugoslavia @ Estadio Carlos Dittborn, Arica
24
+
25
+
26
+
27
+ Group 2:
28
+
29
+ (2) 30 May Chile 3-1 Switzerland @ Estadio Nacional, Santiago
30
+ (6) 31 May West Germany 0-0 Italy @ Estadio Nacional, Santiago
31
+
32
+ (10) 2 June Chile 2-0 Italy @ Estadio Nacional, Santiago
33
+ (14) 3 June West Germany 2-1 Switzerland @ Estadio Nacional, Santiago
34
+
35
+ (18) 6 June West Germany 2-0 Chile @ Estadio Nacional, Santiago
36
+ (22) 7 June Italy 3-0 Switzerland @ Estadio Nacional, Santiago
37
+
38
+
39
+ Group 3:
40
+
41
+ (19) 6 June Brazil 2-1 Spain @ Estadio Sausalito, Viña del Mar
42
+ (23) 7 June Mexico 3-1 Czechoslovakia @ Estadio Sausalito, Viña del Mar
43
+
44
+ (11) 2 June Brazil 0-0 Czechoslovakia @ Estadio Sausalito, Viña del Mar
45
+ (15) 3 June Spain 1-0 Mexico @ Estadio Sausalito, Viña del Mar
46
+
47
+ (3) 30 May Brazil 2-0 Mexico @ Estadio Sausalito, Viña del Mar
48
+ (7) 31 May Czechoslovakia 1-0 Spain @ Estadio Sausalito, Viña del Mar
49
+
50
+
51
+ Group 4:
52
+
53
+ (12) 2 June England 3-1 Argentina @ Estadio El Teniente, Rancagua
54
+ (16) 3 June Hungary 6-1 Bulgaria @ Estadio El Teniente, Rancagua
55
+
56
+ (20) 6 June Hungary 0-0 Argentina @ Estadio El Teniente, Rancagua
57
+ (24) 7 June England 0-0 Bulgaria @ Estadio El Teniente, Rancagua
58
+
59
+ (4) 30 May Argentina 1-0 Bulgaria @ Estadio El Teniente, Rancagua
60
+ (8) 31 May Hungary 2-1 England @ Estadio El Teniente, Rancagua
61
+
62
+
63
+
64
+ Quarter-finals
65
+
66
+ (25) 10 June Chile 2-1 Soviet Union @ Estadio Carlos Dittborn, Arica
67
+ (26) 10 June Yugoslavia 1-0 West Germany @ Estadio Nacional, Santiago
68
+ (27) 10 June Brazil 3-1 England @ Estadio Sausalito, Viña del Mar
69
+ (28) 10 June Czechoslovakia 1-0 Hungary @ Estadio El Teniente, Rancagua
70
+
71
+
72
+ Semi-finals
73
+
74
+ (29) 13 June Brazil 4-2 Chile @ Estadio Nacional, Santiago
75
+ (30) 13 June Czechoslovakia 3-1 Yugoslavia @ Estadio Sausalito, Viña del Mar
76
+
77
+
78
+ Third place match
79
+
80
+ (31) 16 June Chile 1-0 Yugoslavia @ Estadio Nacional, Santiago
81
+
82
+
83
+ Final
84
+
85
+ (32) 17 June Brazil 3-1 Czechoslovakia @ Estadio Nacional, Santiago
86
+
@@ -0,0 +1,32 @@
1
+ ###########################################
2
+ # World Cup 1962 Chile, 30 May - 17 June
3
+
4
+ league: world
5
+ season: 1962
6
+ start_at: 1962-05-30
7
+
8
+ ##
9
+ # fix: add edition: or num: e.g. num: 7 or edition: 7
10
+
11
+ # 16 Teams
12
+ teams:
13
+ ## Europe
14
+ - bul # Bulgaria
15
+ - tch # Czechoslovakia
16
+ - eng # England
17
+ - frg # West Germany
18
+ - hun # Hungary
19
+ - ita # Italy
20
+ - urs # Soviet Union
21
+ - esp # Spain
22
+ - sui # Switzerland
23
+ - yug # Yugoslavia
24
+ ## North and Central America
25
+ - mex # Mexico
26
+ ## South America
27
+ - arg # Argentina
28
+ - bra # Brazil
29
+ - chi # Chile
30
+ - col # Colombia
31
+ - uru # Uruguay
32
+
@@ -0,0 +1,4 @@
1
+ #####################
2
+ # Seasons / Years
3
+
4
+ 1954
@@ -0,0 +1,4 @@
1
+ #####################
2
+ # Seasons / Years
3
+
4
+ 1962
@@ -1,6 +1,8 @@
1
1
  #############################
2
2
  # 13 Teams
3
3
 
4
+ ## -- South America
5
+
4
6
  arg, Argentina, ARG, ar
5
7
  bra, Brazil, BRA, br
6
8
  bol, Bolivia, BOL, bo
@@ -8,9 +10,17 @@ chi, Chile, CHI, cl
8
10
  uru, Uruguay, URU, uy
9
11
  per, Peru, PER, pe
10
12
  par, Paraguay, PAR, py
13
+
14
+
15
+ ## -- North and Central America
16
+
11
17
  mex, Mexico, MEX, mx
12
18
  usa, United States, USA, us
13
- fra, France, FRA, fr
14
- yug, Yugoslavia, YUG, rs
15
- rou, Romania, ROU, ro
16
- bel, Belgium, BEL, be
19
+
20
+ ## -- Europe
21
+
22
+ fra, France, FRA, fr
23
+ yug, Yugoslavia, YUG, rs
24
+ rou, Romania, ROU, ro
25
+ bel, Belgium, BEL, be
26
+
@@ -0,0 +1,30 @@
1
+ ##########################
2
+ # 16 Teams
3
+
4
+ ## -- Asia
5
+
6
+ kor, South Korea, KOR, kr
7
+
8
+ ## -- Europe
9
+
10
+ aut, Austria, AUT, at
11
+ bel, Belgium, BEL, be
12
+ tch, Czechoslovakia, TCH, cz
13
+ eng, England, ENG, en
14
+ fra, France, FRA, fr
15
+ frg, West Germany, FRG, de
16
+ hun, Hungary, HUN, hu
17
+ ita, Italy, ITA, it
18
+ sco, Scotland, SCO, sc
19
+ sui, Switzerland, SUI, ch
20
+ tur, Turkey, TUR, tr
21
+ yug, Yugoslavia, YUG, rs
22
+
23
+ ## -- North and Central America
24
+
25
+ mex, Mexico, MEX, mx
26
+
27
+ ## -- South America
28
+
29
+ bra, Brazil, BRA, br
30
+ uru, Uruguay, URU, uy
@@ -0,0 +1,29 @@
1
+ #############################
2
+ # 16 Teams
3
+
4
+ ## -- South America
5
+
6
+ arg, Argentina, ARG, ar
7
+ bra, Brazil, BRA, br
8
+ chi, Chile, CHI, cl
9
+ col, Colombia, COL, co
10
+ uru, Uruguay, URU, uy
11
+
12
+
13
+ ## -- North and Central America
14
+
15
+ mex, Mexico, MEX, mx
16
+
17
+ ## -- Europe
18
+
19
+ bul, Bulgaria, BUL, bg
20
+ tch, Czechoslovakia, TCH, cz
21
+ eng, England, ENG, en
22
+ frg, West Germany, FRG, de
23
+ hun, Hungary, HUN, hu
24
+ ita, Italy, ITA, it
25
+ urs, Soviet Union, URS, ru
26
+ esp, Spain, ESP, es
27
+ sui, Switzerland, SUI, ch
28
+ yug, Yugoslavia, YUG, rs
29
+
@@ -21,19 +21,38 @@ class TestRoundAuto < MiniTest::Unit::TestCase
21
21
 
22
22
  def add_countries
23
23
  countries = [
24
- ['ar', 'Argentina', 'ARG' ],
25
- ['br', 'Brazil', 'BRA' ],
26
- ['bo', 'Bolivia', 'BOL' ],
27
- ['cl', 'Chile', 'CHI' ],
28
- ['uy', 'Uruguay', 'URU' ],
29
- ['pe', 'Peru', 'PER' ],
30
- ['py', 'Paraguay', 'PAR' ],
31
- ['mx', 'Mexico', 'MEX' ],
32
- ['us', 'United States', 'USA' ],
33
- ['fr', 'France', 'FRA' ],
34
- ['rs', 'Serbia', 'SRB' ],
35
- ['be', 'Belgium', 'BEL' ],
36
- ['ro', 'Romania', 'ROU' ]]
24
+ ['kr', 'South Korea', 'KOR' ],
25
+
26
+ ['ar', 'Argentina', 'ARG' ],
27
+ ['br', 'Brazil', 'BRA' ],
28
+ ['bo', 'Bolivia', 'BOL' ],
29
+ ['cl', 'Chile', 'CHI' ],
30
+ ['co', 'Colombia', 'COL' ],
31
+ ['uy', 'Uruguay', 'URU' ],
32
+ ['pe', 'Peru', 'PER' ],
33
+ ['py', 'Paraguay', 'PAR' ],
34
+
35
+ ['mx', 'Mexico', 'MEX' ],
36
+ ['us', 'United States', 'USA' ],
37
+
38
+ ['at', 'Austria', 'AUT' ],
39
+ ['be', 'Belgium', 'BEL' ],
40
+ ['fr', 'France', 'FRA' ],
41
+ ['rs', 'Serbia', 'SRB' ],
42
+ ['ro', 'Romania', 'ROU' ],
43
+ ['bg', 'Bulgaria', 'BUL' ],
44
+ ['cz', 'Czech Republic', 'CZE' ],
45
+ ['en', 'England', 'ENG' ],
46
+ ['de', 'Germany', 'GER' ],
47
+ ['hu', 'Hungary', 'HUN' ],
48
+ ['it', 'Italy', 'ITA' ],
49
+ ['ru', 'Russia', 'RUS' ],
50
+ ['es', 'Spain', 'ESP' ],
51
+ ['ch', 'Switzerland', 'SUI' ],
52
+ ['sc', 'Scotland', 'SCO' ],
53
+ ['tr', 'Turkey', 'TUR' ],
54
+ ]
55
+
37
56
 
38
57
  countries.each do |country|
39
58
  key = country[0]
@@ -44,9 +63,74 @@ class TestRoundAuto < MiniTest::Unit::TestCase
44
63
  end
45
64
 
46
65
 
66
+ def test_world_cup_1954
67
+ teamreader = TeamReader.new( SportDb.test_data_path )
68
+ teamreader.read( 'world-cup/teams_1954' )
69
+
70
+ assert_equal 16, Team.count
71
+
72
+ br = Team.find_by_key!( 'bra' )
73
+ uy = Team.find_by_key!( 'uru' )
74
+ be = Team.find_by_key!( 'bel' )
75
+
76
+ assert_equal 'Brazil', br.title
77
+ assert_equal 'Uruguay', uy.title
78
+ assert_equal 'Belgium', be.title
79
+
80
+ assert_equal 'BRA', br.code
81
+ assert_equal 'URU', uy.code
82
+
83
+
84
+ seasonreader = SeasonReader.new( SportDb.test_data_path )
85
+ seasonreader.read( 'world-cup/seasons_1954')
86
+
87
+ assert_equal 1, Season.count
88
+
89
+ y = Season.find_by_key!( '1954' )
90
+ assert_equal '1954', y.title
91
+
92
+
93
+ leaguereader = LeagueReader.new( SportDb.test_data_path )
94
+ leaguereader.read( 'world-cup/leagues' )
95
+
96
+ assert_equal 1, League.count
97
+
98
+ l = League.find_by_key!( 'world' )
99
+ assert_equal 'World Cup', l.title
100
+
101
+
102
+ gamereader = GameReader.new( SportDb.test_data_path )
103
+ gamereader.read( 'world-cup/1954/cup' )
104
+
105
+ assert_equal 1, Event.count
106
+
107
+ w = Event.find_by_key!( 'world.1954' )
108
+
109
+ assert_equal 16, w.teams.count
110
+ assert_equal 26, w.games.count
111
+ assert_equal 10, w.rounds.count
112
+
113
+ rounds_exp = [
114
+ [1, 'Matchday 1', '1954-06-16', 4],
115
+ [2, 'Matchday 2', '1954-06-17', 4],
116
+ [3, 'Matchday 3', '1954-06-19', 4],
117
+ [4, 'Matchday 4', '1954-06-20', 4],
118
+ [5, 'Group-2 Play-off', '1954-06-23', 1],
119
+ [6, 'Group-4 Play-off', '1954-06-23', 1],
120
+ [7, 'Quarter-finals', '1954-06-26', 4],
121
+ [8, 'Semi-finals', '1954-06-30', 2],
122
+ [9, 'Third place match', '1954-07-03', 1],
123
+ [10, 'Final', '1954-07-04', 1],
124
+ ]
125
+
126
+ assert_rounds( rounds_exp )
127
+
128
+ end # test_world_cup_1954
129
+
130
+
47
131
  def test_world_cup_1930
48
132
  teamreader = TeamReader.new( SportDb.test_data_path )
49
- teamreader.read( 'world-cup/teams' )
133
+ teamreader.read( 'world-cup/teams_1930' )
50
134
 
51
135
  assert_equal 13, Team.count
52
136
 
@@ -63,7 +147,7 @@ class TestRoundAuto < MiniTest::Unit::TestCase
63
147
 
64
148
 
65
149
  seasonreader = SeasonReader.new( SportDb.test_data_path )
66
- seasonreader.read( 'world-cup/seasons')
150
+ seasonreader.read( 'world-cup/seasons_1930')
67
151
 
68
152
  assert_equal 1, Season.count
69
153
 
@@ -91,19 +175,143 @@ class TestRoundAuto < MiniTest::Unit::TestCase
91
175
  assert_equal 18, w.games.count
92
176
  assert_equal 12, w.rounds.count
93
177
 
178
+ rounds_exp = [
179
+ [1, 'Matchday 1', '1930-07-13', 2],
180
+ [2, 'Matchday 2', '1930-07-14', 2],
181
+ [3, 'Matchday 3', '1930-07-15', 1],
182
+ [4, 'Matchday 4', '1930-07-16', 1],
183
+ [5, 'Matchday 5', '1930-07-17', 2],
184
+ [6, 'Matchday 6', '1930-07-18', 1],
185
+ [7, 'Matchday 7', '1930-07-19', 2],
186
+ [8, 'Matchday 8', '1930-07-20', 2],
187
+ [9, 'Matchday 9', '1930-07-21', 1],
188
+ [10, 'Matchday 10', '1930-07-22', 1],
189
+ [11, 'Semi-finals', '1930-07-26', 2],
190
+ [12, 'Final' , '1930-07-30', 1],
191
+ ]
192
+
193
+ assert_rounds( rounds_exp )
194
+
94
195
  ##
95
196
  # auto-numbered knock-out rounds
96
- r11 = Round.find_by_pos!( 11 )
197
+ # r11 = Round.find_by_pos!( 11 )
97
198
 
98
- assert_equal 'Semi-finals', r11.title
99
- assert_equal 2, r11.games.count
199
+ # assert_equal 'Semi-finals', r11.title
200
+ # assert_equal 2, r11.games.count
100
201
 
101
- r12 = Round.find_by_pos!( 12 )
202
+ # r12 = Round.find_by_pos!( 12 )
102
203
 
103
- assert_equal 'Final', r12.title
104
- assert_equal 1, r12.games.count
204
+ # assert_equal 'Final', r12.title
205
+ # assert_equal 1, r12.games.count
105
206
 
106
207
  end # method test_world_cup_1930
107
208
 
108
209
 
210
+ def test_world_cup_1962
211
+ teamreader = TeamReader.new( SportDb.test_data_path )
212
+ teamreader.read( 'world-cup/teams_1962' )
213
+
214
+ assert_equal 16, Team.count
215
+
216
+ ar = Team.find_by_key!( 'arg' )
217
+ br = Team.find_by_key!( 'bra' )
218
+ it = Team.find_by_key!( 'ita' )
219
+
220
+ assert_equal 'Argentina', ar.title
221
+ assert_equal 'Brazil', br.title
222
+ assert_equal 'Italy', it.title
223
+
224
+ assert_equal 'ARG', ar.code
225
+ assert_equal 'BRA', br.code
226
+
227
+
228
+ seasonreader = SeasonReader.new( SportDb.test_data_path )
229
+ seasonreader.read( 'world-cup/seasons_1962')
230
+
231
+ assert_equal 1, Season.count
232
+
233
+ y = Season.find_by_key!( '1962' )
234
+ assert_equal '1962', y.title
235
+
236
+
237
+ leaguereader = LeagueReader.new( SportDb.test_data_path )
238
+ leaguereader.read( 'world-cup/leagues' )
239
+
240
+ assert_equal 1, League.count
241
+
242
+ l = League.find_by_key!( 'world' )
243
+ assert_equal 'World Cup', l.title
244
+
245
+
246
+ gamereader = GameReader.new( SportDb.test_data_path )
247
+ gamereader.read( 'world-cup/1962/cup' )
248
+
249
+ assert_equal 1, Event.count
250
+
251
+ w = Event.find_by_key!( 'world.1962' )
252
+
253
+ assert_equal 16, w.teams.count
254
+ assert_equal 32, w.games.count
255
+ assert_equal 10, w.rounds.count
256
+
257
+ rounds_exp = [
258
+ [1, 'Matchday 1', '1962-05-30', 4],
259
+ [2, 'Matchday 2', '1962-05-31', 4],
260
+ [3, 'Matchday 3', '1962-06-02', 4],
261
+ [4, 'Matchday 4', '1962-06-03', 4],
262
+ [5, 'Matchday 5', '1962-06-06', 4],
263
+ [6, 'Matchday 6', '1962-06-07', 4],
264
+ [7, 'Quarter-finals', '1962-06-10', 4],
265
+ [8, 'Semi-finals', '1962-06-13', 2],
266
+ [9, 'Third place match', '1962-06-16', 1],
267
+ [10, 'Final' , '1962-06-17', 1],
268
+ ]
269
+
270
+ assert_rounds( rounds_exp )
271
+
272
+ #########################
273
+ ## 2nd run
274
+ ### try update (e.g. read again - should NOT create new rounds/games/teams)
275
+ #
276
+ # note: update only works if rounds get not deleted or added
277
+ # - (adding for updates works only at the end/tail - not at the beginning or inbetween, for example)
278
+
279
+ gamereader = GameReader.new( SportDb.test_data_path )
280
+ gamereader.read( 'world-cup/1962/cup' )
281
+
282
+ assert_equal 1, Event.count
283
+
284
+ w = Event.find_by_key!( 'world.1962' )
285
+
286
+ assert_equal 16, w.teams.count
287
+ assert_equal 32, w.games.count
288
+ assert_equal 10, w.rounds.count
289
+
290
+ assert_rounds( rounds_exp )
291
+
292
+ end # method test_world_cup_1962
293
+
294
+ ####
295
+ # helpers
296
+
297
+ def assert_rounds( rounds_exp )
298
+ rounds_exp.each do |round_exp|
299
+ round = Round.find_by_pos!( round_exp[0] )
300
+
301
+ assert_equal round_exp[1], round.title
302
+
303
+ if round_exp[2]
304
+ start_at = Date.parse( round_exp[2] )
305
+ ## puts "round.start_at.class.name: #{round.start_at.class.name}"
306
+ assert_equal start_at, round.start_at ## check works for date?
307
+ end
308
+
309
+ if round_exp[3]
310
+ count = round_exp[3]
311
+ assert_equal( count, round.games.count, "round.games.count #{count} != #{round.games.count} - #{round.title}")
312
+ end
313
+ end
314
+ end # method assert_rounds
315
+
316
+
109
317
  end # class TestRoundAuto
metadata CHANGED
@@ -1,155 +1,126 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sportdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.20
4
+ version: 1.8.21
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Gerald Bauer
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-05-15 00:00:00.000000000 Z
12
+ date: 2014-05-17 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: props
15
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &74073370 !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: '0'
20
22
  type: :runtime
21
23
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ! '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
24
+ version_requirements: *74073370
27
25
  - !ruby/object:Gem::Dependency
28
26
  name: logutils
29
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &74073050 !ruby/object:Gem::Requirement
28
+ none: false
30
29
  requirements:
31
30
  - - ! '>='
32
31
  - !ruby/object:Gem::Version
33
32
  version: '0'
34
33
  type: :runtime
35
34
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ! '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
35
+ version_requirements: *74073050
41
36
  - !ruby/object:Gem::Dependency
42
37
  name: textutils
43
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &74072750 !ruby/object:Gem::Requirement
39
+ none: false
44
40
  requirements:
45
41
  - - ! '>='
46
42
  - !ruby/object:Gem::Version
47
43
  version: '0'
48
44
  type: :runtime
49
45
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
46
+ version_requirements: *74072750
55
47
  - !ruby/object:Gem::Dependency
56
48
  name: worlddb
57
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &74072350 !ruby/object:Gem::Requirement
50
+ none: false
58
51
  requirements:
59
52
  - - ! '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: 2.0.2
62
55
  type: :runtime
63
56
  prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ! '>='
67
- - !ruby/object:Gem::Version
68
- version: 2.0.2
57
+ version_requirements: *74072350
69
58
  - !ruby/object:Gem::Dependency
70
59
  name: tagutils
71
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &74071960 !ruby/object:Gem::Requirement
61
+ none: false
72
62
  requirements:
73
63
  - - ! '>='
74
64
  - !ruby/object:Gem::Version
75
65
  version: '0'
76
66
  type: :runtime
77
67
  prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ! '>='
81
- - !ruby/object:Gem::Version
82
- version: '0'
68
+ version_requirements: *74071960
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: fetcher
85
- requirement: !ruby/object:Gem::Requirement
71
+ requirement: &74071660 !ruby/object:Gem::Requirement
72
+ none: false
86
73
  requirements:
87
74
  - - ! '>='
88
75
  - !ruby/object:Gem::Version
89
76
  version: '0.3'
90
77
  type: :runtime
91
78
  prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ! '>='
95
- - !ruby/object:Gem::Version
96
- version: '0.3'
79
+ version_requirements: *74071660
97
80
  - !ruby/object:Gem::Dependency
98
81
  name: gli
99
- requirement: !ruby/object:Gem::Requirement
82
+ requirement: &74071320 !ruby/object:Gem::Requirement
83
+ none: false
100
84
  requirements:
101
85
  - - ! '>='
102
86
  - !ruby/object:Gem::Version
103
87
  version: 2.5.6
104
88
  type: :runtime
105
89
  prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: 2.5.6
90
+ version_requirements: *74071320
111
91
  - !ruby/object:Gem::Dependency
112
92
  name: activerecord
113
- requirement: !ruby/object:Gem::Requirement
93
+ requirement: &74071090 !ruby/object:Gem::Requirement
94
+ none: false
114
95
  requirements:
115
96
  - - ! '>='
116
97
  - !ruby/object:Gem::Version
117
98
  version: '0'
118
99
  type: :runtime
119
100
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ! '>='
123
- - !ruby/object:Gem::Version
124
- version: '0'
101
+ version_requirements: *74071090
125
102
  - !ruby/object:Gem::Dependency
126
103
  name: rdoc
127
- requirement: !ruby/object:Gem::Requirement
104
+ requirement: &74070660 !ruby/object:Gem::Requirement
105
+ none: false
128
106
  requirements:
129
107
  - - ~>
130
108
  - !ruby/object:Gem::Version
131
109
  version: '4.0'
132
110
  type: :development
133
111
  prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ~>
137
- - !ruby/object:Gem::Version
138
- version: '4.0'
112
+ version_requirements: *74070660
139
113
  - !ruby/object:Gem::Dependency
140
114
  name: hoe
141
- requirement: !ruby/object:Gem::Requirement
115
+ requirement: &74070340 !ruby/object:Gem::Requirement
116
+ none: false
142
117
  requirements:
143
118
  - - ~>
144
119
  - !ruby/object:Gem::Version
145
- version: '3.10'
120
+ version: '3.11'
146
121
  type: :development
147
122
  prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ~>
151
- - !ruby/object:Gem::Version
152
- version: '3.10'
123
+ version_requirements: *74070340
153
124
  description: sportdb - sport.db command line tool
154
125
  email: opensport@googlegroups.com
155
126
  executables:
@@ -274,9 +245,17 @@ files:
274
245
  - test/data/at-austria/teams_2.txt
275
246
  - test/data/world-cup/1930/cup.txt
276
247
  - test/data/world-cup/1930/cup.yml
248
+ - test/data/world-cup/1954/cup.txt
249
+ - test/data/world-cup/1954/cup.yml
250
+ - test/data/world-cup/1962/cup.txt
251
+ - test/data/world-cup/1962/cup.yml
277
252
  - test/data/world-cup/leagues.txt
278
- - test/data/world-cup/seasons.txt
279
- - test/data/world-cup/teams.txt
253
+ - test/data/world-cup/seasons_1930.txt
254
+ - test/data/world-cup/seasons_1954.txt
255
+ - test/data/world-cup/seasons_1962.txt
256
+ - test/data/world-cup/teams_1930.txt
257
+ - test/data/world-cup/teams_1954.txt
258
+ - test/data/world-cup/teams_1962.txt
280
259
  - test/helper.rb
281
260
  - test/test_changes.rb
282
261
  - test/test_cursor.rb
@@ -293,7 +272,6 @@ files:
293
272
  homepage: https://github.com/geraldb/sport.db.ruby
294
273
  licenses:
295
274
  - Public Domain
296
- metadata: {}
297
275
  post_install_message: ! '******************************************************************************
298
276
 
299
277
 
@@ -311,30 +289,32 @@ rdoc_options:
311
289
  require_paths:
312
290
  - lib
313
291
  required_ruby_version: !ruby/object:Gem::Requirement
292
+ none: false
314
293
  requirements:
315
294
  - - ! '>='
316
295
  - !ruby/object:Gem::Version
317
296
  version: 1.9.2
318
297
  required_rubygems_version: !ruby/object:Gem::Requirement
298
+ none: false
319
299
  requirements:
320
300
  - - ! '>='
321
301
  - !ruby/object:Gem::Version
322
302
  version: '0'
323
303
  requirements: []
324
304
  rubyforge_project:
325
- rubygems_version: 2.1.10
305
+ rubygems_version: 1.8.17
326
306
  signing_key:
327
- specification_version: 4
307
+ specification_version: 3
328
308
  summary: sportdb - sport.db command line tool
329
309
  test_files:
330
- - test/test_changes.rb
331
- - test/test_cursor.rb
332
310
  - test/test_date.rb
333
311
  - test/test_lang.rb
334
- - test/test_reader.rb
335
- - test/test_round_auto.rb
336
- - test/test_round_def.rb
337
- - test/test_round_header.rb
312
+ - test/test_cursor.rb
338
313
  - test/test_scores.rb
339
- - test/test_utils.rb
340
314
  - test/test_winner.rb
315
+ - test/test_round_def.rb
316
+ - test/test_utils.rb
317
+ - test/test_round_header.rb
318
+ - test/test_round_auto.rb
319
+ - test/test_reader.rb
320
+ - test/test_changes.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 6b49f1d9eb1e2369fca189847d4747a36d6580f1
4
- data.tar.gz: 1a9ef5c40c3e83e3d8de49afcabe0a05e59ae982
5
- SHA512:
6
- metadata.gz: 4c6cde7744335707e17253705a4f321bdd6c08384d550ad58c7853fd3d4e5efd097c137d43d7fe5a08d078390277481c9bb0e36d2db74e60f534fac1e0f9d2c9
7
- data.tar.gz: 698495bbde6338c1855414963b0fd601af31c7926492d5269dbcf7af87007dd3581c759cc3266795b70600ad31c562d31f3a6224b5edbc4e6614f7f3a8f8c9b6