projects
/
selectricity-live
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8afec3c
)
Import latest subversion RubyVote.
author
John Dong
<jdong@mit.edu>
Wed, 15 Aug 2007 16:00:58 +0000
(12:00 -0400)
committer
John Dong
<jdong@mit.edu>
Wed, 15 Aug 2007 16:00:58 +0000
(12:00 -0400)
lib/rubyvote/election.rb
patch
|
blob
|
history
diff --git
a/lib/rubyvote/election.rb
b/lib/rubyvote/election.rb
index 66e4c2a4b410b83a2af50d12172e64c644cc531a..b9bb5574c7ea03b4d9d5d6e1b544fdca640e3ee3 100644
(file)
--- a/
lib/rubyvote/election.rb
+++ b/
lib/rubyvote/election.rb
@@
-34,7
+34,7
@@
class ElectionVote
attr_reader :votes
attr_reader :candidates
class ElectionVote
attr_reader :votes
attr_reader :candidates
-
+
def initialize(votes=nil)
@votes = Hash.new unless defined?(@votes)
@candidates = Array.new unless defined?(@candidates)
def initialize(votes=nil)
@votes = Hash.new unless defined?(@votes)
@candidates = Array.new unless defined?(@candidates)
@@
-42,7
+42,11
@@
class ElectionVote
if votes
if votes.instance_of?( Array )
votes.each do |vote|
if votes
if votes.instance_of?( Array )
votes.each do |vote|
- self.tally_vote(vote) if self.verify_vote(vote)
+ if self.verify_vote(vote)
+ self.tally_vote(vote)
+ else
+ raise InvalidVoteError.new ("Invalid vote object", vote)
+ end
end
else
raise ElectionError, "Votes must be in the form of an array.", caller
end
else
raise ElectionError, "Votes must be in the form of an array.", caller
@@
-75,7
+79,7
@@
class PluralityVote < ElectionVote
protected
def verify_vote(vote=nil)
protected
def verify_vote(vote=nil)
- not vote.instance_of?( Array )
+ vote ? true : false
end
def tally_vote(candidate)
end
def tally_vote(candidate)
@@
-114,8
+118,7
@@
end
class ElectionResult
attr_reader :winners
class ElectionResult
attr_reader :winners
- attr_reader :election
-
+
def initialize(voteobj=nil)
unless voteobj and voteobj.kind_of?( ElectionVote )
raise ArgumentError, "You must pass a ElectionVote array.", caller
def initialize(voteobj=nil)
unless voteobj and voteobj.kind_of?( ElectionVote )
raise ArgumentError, "You must pass a ElectionVote array.", caller
@@
-164,3
+167,10
@@
end
class ElectionError < ArgumentError
end
class ElectionError < ArgumentError
end
+class InvalidVoteError < ElectionError
+ attr_accessor :voteobj
+ def initialize(msg=nil, voteobj=nil)
+ super(msg)
+ @voteobj=voteobj
+ end
+end
Benjamin Mako Hill
||
Want to submit a patch?