rrschedule 0.1.2 → 0.1.3
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.
- data/.gitignore +1 -0
- data/VERSION +1 -1
- data/lib/rrschedule.rb +20 -13
- metadata +4 -6
- data/lib/example.rb +0 -56
- data/rrschedule.gemspec +0 -55
data/.gitignore
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/lib/rrschedule.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# rrschedule (Round Robin Schedule generator)
|
2
2
|
# Auhtor: François Lamontagne
|
3
3
|
############################################################################################################################
|
4
|
-
require 'rubygems'
|
5
4
|
require 'active_support'
|
6
|
-
|
7
5
|
module RRSchedule
|
8
6
|
class Schedule
|
9
7
|
attr_accessor :playing_surfaces, :game_times, :cycles, :wdays, :start_date, :exclude_dates, :shuffle_initial_order
|
@@ -13,7 +11,7 @@ module RRSchedule
|
|
13
11
|
self.teams = params[:teams] || [1,2,3,4,5]
|
14
12
|
self.playing_surfaces = params[:playing_surfaces] || ["--"]
|
15
13
|
self.cycles = params[:cycles] || 1
|
16
|
-
self.game_times = params[:game_times] || ["
|
14
|
+
self.game_times = params[:game_times] || ["Game time not specified"]
|
17
15
|
self.shuffle_initial_order = params[:shuffle_initial_order] || true
|
18
16
|
self.exclude_dates = params[:exclude_dates] || []
|
19
17
|
self.start_date = params[:start_date] || Time.now.beginning_of_day
|
@@ -42,10 +40,16 @@ module RRSchedule
|
|
42
40
|
#round completed
|
43
41
|
current_round += 1
|
44
42
|
@rounds ||= []
|
45
|
-
@rounds << Round.new(
|
43
|
+
@rounds << Round.new(
|
44
|
+
:round => current_round,
|
45
|
+
:games => games.collect { |g| Game.new(
|
46
|
+
:team_a => g[:team_a],
|
47
|
+
:team_b => g[:team_b])
|
48
|
+
})
|
46
49
|
|
47
|
-
|
48
|
-
|
50
|
+
reject_dummy = lambda {|g| g[:team_a] == :dummy || g[:team_b] == :dummy}
|
51
|
+
games.reject! {|g| reject_dummy.call(g)}
|
52
|
+
all_games.reject! {|g| reject_dummy.call(g)}
|
49
53
|
|
50
54
|
@teams = @teams.insert(1,@teams.delete_at(@teams.size-1))
|
51
55
|
|
@@ -67,7 +71,7 @@ module RRSchedule
|
|
67
71
|
def face_to_face(team_a,team_b)
|
68
72
|
res=[]
|
69
73
|
self.gamedays.each do |gd,games|
|
70
|
-
res << games.select{|g| (g.team_a == team_a && g.team_b == team_b) || (g.team_a == team_b && g.team_b == team_a)}
|
74
|
+
res << games.select {|g| (g.team_a == team_a && g.team_b == team_b) || (g.team_a == team_b && g.team_b == team_a)}
|
71
75
|
end
|
72
76
|
res.flatten
|
73
77
|
end
|
@@ -76,11 +80,10 @@ module RRSchedule
|
|
76
80
|
res = ""
|
77
81
|
res << "#{@schedule.keys.size.to_s} gamedays\n"
|
78
82
|
@schedule.sort.each do |gd,games|
|
79
|
-
|
80
|
-
res <<
|
81
|
-
res << "=" * gd_proc.call.length + "\n"
|
83
|
+
res << gd.strftime("%Y-%m-%d") + "\n"
|
84
|
+
res << "==========\n"
|
82
85
|
games.each do |g|
|
83
|
-
res << g.team_a.to_s
|
86
|
+
res << "#{g.team_a.to_s} VS #{g.team_b.to_s} on playing surface #{g.playing_surface} at #{g.game_time}\n"
|
84
87
|
end
|
85
88
|
res << "\n"
|
86
89
|
end
|
@@ -94,7 +97,6 @@ module RRSchedule
|
|
94
97
|
def by_team(team)
|
95
98
|
gms=[]
|
96
99
|
self.gamedays.each do |gd,games|
|
97
|
-
#games = games.each {|g| g.game_date = gd}
|
98
100
|
gms << games.select{|g| g.team_a == team || g.team_b == team}
|
99
101
|
end
|
100
102
|
gms.flatten
|
@@ -126,7 +128,12 @@ module RRSchedule
|
|
126
128
|
res[cur_date] = []
|
127
129
|
slice.each_with_index do |g,game_index|
|
128
130
|
cur_ps = ps_stack.shift
|
129
|
-
res[cur_date] << Game.new(
|
131
|
+
res[cur_date] << Game.new(
|
132
|
+
:team_a => g[:team_a],
|
133
|
+
:team_b => g[:team_b],
|
134
|
+
:playing_surface => cur_ps,
|
135
|
+
:game_time => cur_gt,
|
136
|
+
:game_date => cur_date)
|
130
137
|
cur_gt = gt_stack.shift if ps_stack.empty?
|
131
138
|
gt_stack = self.game_times.clone if gt_stack.empty?
|
132
139
|
ps_stack = self.playing_surfaces.clone if ps_stack.empty?
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rrschedule
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 3
|
10
|
+
version: 0.1.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- flamontagne
|
@@ -48,9 +48,7 @@ files:
|
|
48
48
|
- README.rdoc
|
49
49
|
- Rakefile
|
50
50
|
- VERSION
|
51
|
-
- lib/example.rb
|
52
51
|
- lib/rrschedule.rb
|
53
|
-
- rrschedule.gemspec
|
54
52
|
- test/helper.rb
|
55
53
|
- test/test_rrschedule.rb
|
56
54
|
has_rdoc: true
|
@@ -88,5 +86,5 @@ signing_key:
|
|
88
86
|
specification_version: 3
|
89
87
|
summary: Round-Robin schedule generator
|
90
88
|
test_files:
|
91
|
-
- test/helper.rb
|
92
89
|
- test/test_rrschedule.rb
|
90
|
+
- test/helper.rb
|
data/lib/example.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'rrschedule.rb'
|
2
|
-
Time.zone = "America/New_York"
|
3
|
-
|
4
|
-
teams = ["Rockets","Jetpacks","Snakes","Cobras","Wolves","Huskies","Tigers","Lions","Moose","Sprinklers","Pacers","Cyclops","Munchkins","Magicians","French Fries"]
|
5
|
-
schedule=RRSchedule::Schedule.new(
|
6
|
-
:teams => teams, #array of teams that will compete against each other in the season (can be any kind of object)
|
7
|
-
:playing_surfaces => ["A","B","C","D"], #list of available playing surfaces (volleyball fields, curling sheets, tennis courts, etc)
|
8
|
-
:wdays => [3], #day(s) of the week where games are played
|
9
|
-
:start_date => Time.zone.parse("2010/10/13"), #Season will start on...
|
10
|
-
:exclude_dates => [ #array of dates WITHOUT games
|
11
|
-
Time.zone.parse("2010/11/24"),
|
12
|
-
Time.zone.parse("2010/12/15"),
|
13
|
-
Time.zone.parse("2010/12/22"),
|
14
|
-
Time.zone.parse("2010/12/29")
|
15
|
-
],
|
16
|
-
:cycles => 1, #1 for Round Robin, 2 for Double Round Robin and so on
|
17
|
-
:shuffle_initial_order => true, #Shuffle team order before each cycle
|
18
|
-
:game_times => ["10:00 AM", "1:00 PM"] #Times of the day where the games are played
|
19
|
-
)
|
20
|
-
res=schedule.generate
|
21
|
-
|
22
|
-
#human readable schedule
|
23
|
-
puts schedule.to_s
|
24
|
-
|
25
|
-
schedule.rounds.each do |round|
|
26
|
-
puts "Round ##{round.round}"
|
27
|
-
round.games.each do |g|
|
28
|
-
puts g.team_a.to_s + " Vs " + g.team_b.to_s
|
29
|
-
end
|
30
|
-
puts "\n"
|
31
|
-
end
|
32
|
-
|
33
|
-
#display a team schedule
|
34
|
-
#test_team = "Sprinklers"
|
35
|
-
#games=schedule.by_team(test_team)
|
36
|
-
#puts "Schedule for team ##{test_team.to_s}"
|
37
|
-
#games.each do |g|
|
38
|
-
# puts "#{g.game_date.strftime("%Y-%m-%d")}: against #{g.team_a == test_team ? g.team_b.to_s : g.team_a.to_s} on playing surface ##{g.playing_surface} at #{g.game_time}"
|
39
|
-
#end
|
40
|
-
|
41
|
-
#face_to_face
|
42
|
-
#games=schedule.face_to_face("Lions","Moose")
|
43
|
-
#puts "FACE TO FACE: Lions Vs Moose"
|
44
|
-
#games.each do |g|
|
45
|
-
# puts g.game_date.to_s + " on playing surface " + g.playing_surface.to_s + " at " + g.game_time.to_s
|
46
|
-
#end
|
47
|
-
|
48
|
-
#How to iterate the schedule
|
49
|
-
#schedule.gamedays.each do |gd,games|
|
50
|
-
# puts gd
|
51
|
-
# puts "===================="
|
52
|
-
# games.each do |g|
|
53
|
-
# puts g.team_a.to_s + " Vs " + g.team_b.to_s + " on playing surface ##{g.playing_surface} at #{g.game_time}"
|
54
|
-
# end
|
55
|
-
# puts "\n"
|
56
|
-
#end
|
data/rrschedule.gemspec
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{rrschedule}
|
8
|
-
s.version = "0.1.2"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["flamontagne"]
|
12
|
-
s.date = %q{2010-11-08}
|
13
|
-
s.description = %q{This gem automate the process of creating a round-robin sport schedule.}
|
14
|
-
s.email = %q{flamontagne@azanka.ca}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE",
|
17
|
-
"README.rdoc"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".document",
|
21
|
-
".gitignore",
|
22
|
-
"LICENSE",
|
23
|
-
"README.rdoc",
|
24
|
-
"Rakefile",
|
25
|
-
"VERSION",
|
26
|
-
"lib/example.rb",
|
27
|
-
"lib/rrschedule.rb",
|
28
|
-
"rrschedule.gemspec",
|
29
|
-
"test/helper.rb",
|
30
|
-
"test/test_rrschedule.rb"
|
31
|
-
]
|
32
|
-
s.homepage = %q{http://github.com/flamontagne/rrschedule}
|
33
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
34
|
-
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version = %q{1.3.7}
|
36
|
-
s.summary = %q{Round-Robin schedule generator}
|
37
|
-
s.test_files = [
|
38
|
-
"test/helper.rb",
|
39
|
-
"test/test_rrschedule.rb"
|
40
|
-
]
|
41
|
-
|
42
|
-
if s.respond_to? :specification_version then
|
43
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
44
|
-
s.specification_version = 3
|
45
|
-
|
46
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
47
|
-
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
48
|
-
else
|
49
|
-
s.add_dependency(%q<activesupport>, [">= 0"])
|
50
|
-
end
|
51
|
-
else
|
52
|
-
s.add_dependency(%q<activesupport>, [">= 0"])
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|