X-Git-Url: https://projects.mako.cc/source/selectricity/blobdiff_plain/c65b1e11059c5cf510b54c785d4a246215058f70..1711153012e01e277f866a0de093e7ae72850bf7:/lib/rubyvote/positional.rb diff --git a/lib/rubyvote/positional.rb b/lib/rubyvote/positional.rb index 11e8a49..056194b 100644 --- a/lib/rubyvote/positional.rb +++ b/lib/rubyvote/positional.rb @@ -38,15 +38,20 @@ class BordaVote < ElectionVote end super(votes) end - + def tally_vote(vote) points = candidates.length - 1 vote.each do |candidate| - @votes[candidate] = points + #if the candidate exist, add the points, otherwise assign them + if @votes.has_key?(candidate) + @votes[candidate] += points + else + @votes[candidate] = points + end points -= 1 end end - + def verify_vote(vote=nil) vote.instance_of?( Array ) and vote == vote.uniq @@ -58,10 +63,13 @@ class BordaVote < ElectionVote end class BordaResult < ElectionResult + attr_reader :ranked_candidates + attr_reader :points + def initialize(voteobj=nil) super(voteobj) votes = @election.votes - + @ranked_candidates = votes.sort do |a, b| b[1] <=> a[1] end.collect {|i| i[0]} @@ -69,6 +77,8 @@ class BordaResult < ElectionResult @winners = @ranked_candidates.find_all do |i| votes[i] == votes[@ranked_candidates[0]] end + + @points = @election.votes end end