rubin 0.1.0 → 0.2.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.
@@ -6,21 +6,27 @@ Round Robin Generator
6
6
 
7
7
  require 'rubin'
8
8
 
9
- teams = %w(England, France, Italy, Germany)
10
- teams.compete
9
+ teams = Rubin.new(['England', 'France', 'Italy', 'Spain'])
10
+ teams.each_matchup do |home, away, round_num|
11
+ # do something here
12
+ end
11
13
 
12
- # Output
14
+ # Rubin#output will print out the matchups
15
+ puts teams.output # =>
13
16
  Round 1
14
- Englind v Italy
15
- France v Germany
17
+ England v Italy
18
+ France v France
19
+
16
20
 
17
21
  Round 2
18
- France v Englind
19
- Italy v Germany
22
+ France v England
23
+ Italy v France
24
+
20
25
 
21
26
  Round 3
22
27
  Italy v France
23
- Englind v Germany
28
+ England v France
29
+
24
30
 
25
31
  == Note on Patches/Pull Requests
26
32
 
data/Rakefile CHANGED
@@ -6,27 +6,35 @@ begin
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "rubin"
8
8
  gem.summary = "Round Robin Generator"
9
- gem.description = "Round Robin Generator"
9
+ gem.description = "Round Robin Generator. Woot!"
10
10
  gem.email = "rit@quietdynamite.com"
11
11
  gem.homepage = "http://github.com/rit/rubin"
12
12
  gem.authors = ["Rit Li"]
13
- gem.add_development_dependency "rspec", ">= 1.2.9"
13
+ gem.add_development_dependency "bacon", ">= 0"
14
14
  end
15
15
  Jeweler::GemcutterTasks.new
16
16
  rescue LoadError
17
17
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
18
18
  end
19
19
 
20
- require 'spec/rake/spectask'
21
- Spec::Rake::SpecTask.new(:spec) do |spec|
20
+ require 'rake/testtask'
21
+ Rake::TestTask.new(:spec) do |spec|
22
22
  spec.libs << 'lib' << 'spec'
23
- spec.spec_files = FileList['spec/**/*_spec.rb']
23
+ spec.pattern = 'spec/**/*_spec.rb'
24
+ spec.verbose = true
24
25
  end
25
26
 
26
- Spec::Rake::SpecTask.new(:rcov) do |spec|
27
- spec.libs << 'lib' << 'spec'
28
- spec.pattern = 'spec/**/*_spec.rb'
29
- spec.rcov = true
27
+ begin
28
+ require 'rcov/rcovtask'
29
+ Rcov::RcovTask.new do |spec|
30
+ spec.libs << 'spec'
31
+ spec.pattern = 'spec/**/*_spec.rb'
32
+ spec.verbose = true
33
+ end
34
+ rescue LoadError
35
+ task :rcov do
36
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
37
+ end
30
38
  end
31
39
 
32
40
  task :spec => :check_dependencies
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -1,44 +1,50 @@
1
- module Rubin
2
- def each_pair
1
+ class Rubin < Array
2
+ def each_matchup
3
3
  members = self.dup
4
4
  members << nil if members.size.odd?
5
5
  rounds = members.size - 1
6
6
  1.upto(rounds) do |round|
7
- members._pairing do |left, right|
8
- yield [left, right, round]
7
+ pairing(members) do |home, away|
8
+ yield [home, away, round]
9
9
  end
10
- members._spin
10
+ members = spin(members)
11
11
  end
12
12
  end
13
13
 
14
- def _spin
15
- # 1 4 2 1
16
- # 2 5 => 3 4
17
- # 3 6 5 6
18
- # 6 is fixed
19
- self.insert(self.size/2-1, self.delete_at(-2), self.shift)
20
- end
21
-
22
- def _pairing
23
- members = self.dup
24
- count = members.size/2
25
- 0.upto(count-1) do |i|
26
- yield [members[i], members[i+count]]
14
+ def output(v='v')
15
+ rounds = Hash.new { |hash, key| hash[key] = [] }
16
+ each_matchup do |home, away, round|
17
+ if home && away
18
+ rounds[round] << "#{home} #{v} #{away}"
19
+ end
27
20
  end
28
- end
29
21
 
30
- def compete
31
- current = 0
32
- each_pair do |left, right, round|
33
- if current < round
34
- puts "\nRound #{round}"
35
- current = round
22
+ output = []
23
+ rounds = rounds.sort_by { |round, v| round }
24
+ rounds.each do |round, pairs|
25
+ output << "Round #{round}"
26
+ pairs.each do |pair|
27
+ output << pair
36
28
  end
37
- puts "#{left} v #{right}" if left && right
29
+ output << "\n"
38
30
  end
31
+ output.join("\n")
39
32
  end
40
- end
41
33
 
42
- class Array
43
- include Rubin
34
+ private
35
+ def spin(members)
36
+ # 1 4 2 1
37
+ # 2 5 => 3 4
38
+ # 3 6 5 6
39
+ #
40
+ # 6 is fixed
41
+ members.insert(members.size/2-1, members.delete_at(-2), members.shift)
42
+ end
43
+
44
+ def pairing(members)
45
+ count = members.size/2
46
+ 0.upto(count-1) do |i|
47
+ yield [members[i], members[i+count]]
48
+ end
49
+ end
44
50
  end
@@ -1,5 +1,19 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
1
+ require 'spec_helper'
2
2
 
3
- describe "Rubin" do
4
- it "needs spec"
3
+ describe "Rubin#each_matchup" do
4
+ it "should yields home, away, and round number" do
5
+ teams = Rubin.new(['England', 'France'])
6
+ teams.each_matchup do |home, away, round|
7
+ home.should == 'England'
8
+ away.should == 'France'
9
+ round.should == 1
10
+ end
11
+ end
12
+ end
13
+
14
+ describe "Rubin#output" do
15
+ it "should display all matchups" do
16
+ teams = Rubin.new(['England', 'France'])
17
+ teams.output.should == "Round 1\nEngland v France\n\n"
18
+ end
5
19
  end
@@ -1,9 +1,8 @@
1
+ require 'rubygems'
2
+ require 'bacon'
3
+
1
4
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
5
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
6
  require 'rubin'
4
- require 'spec'
5
- require 'spec/autorun'
6
7
 
7
- Spec::Runner.configure do |config|
8
-
9
- end
8
+ Bacon.summary_on_exit
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubin
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Rit Li
@@ -15,26 +15,24 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-05 00:00:00 -07:00
18
+ date: 2010-10-15 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: rspec
22
+ name: bacon
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- hash: 13
29
+ hash: 3
30
30
  segments:
31
- - 1
32
- - 2
33
- - 9
34
- version: 1.2.9
31
+ - 0
32
+ version: "0"
35
33
  type: :development
36
34
  version_requirements: *id001
37
- description: Round Robin Generator
35
+ description: Round Robin Generator. Woot!
38
36
  email: rit@quietdynamite.com
39
37
  executables: []
40
38
 
@@ -52,7 +50,6 @@ files:
52
50
  - VERSION
53
51
  - lib/rubin.rb
54
52
  - spec/rubin_spec.rb
55
- - spec/spec.opts
56
53
  - spec/spec_helper.rb
57
54
  has_rdoc: true
58
55
  homepage: http://github.com/rit/rubin
@@ -1 +0,0 @@
1
- --color