]> projects.mako.cc - rubyvote/blobdiff - lib/rubyvote/election.rb
a number of improvements
[rubyvote] / lib / rubyvote / election.rb
index ffd31c846e56400e9df945361d5a4c11ebb9df9d..1d98d91848611d9b5a3fa5dd2bb2d4bc95de8404 100644 (file)
@@ -45,7 +45,7 @@ class ElectionVote
           if self.verify_vote(vote)
             self.tally_vote(vote)
           else
-            raise InvalidVoteError.new ("Invalid vote object", vote)
+            raise InvalidVoteError.new("Invalid vote object", vote)
           end
         end
       else
@@ -62,14 +62,10 @@ class ElectionVote
   end
 
   # by default, this does nothing. it must be redefined in any subclass
-  def tally_vote
+  def tally_vote(vote)
     self.verify_vote(vote)
   end
 
-  def filter_out(winner)
-    @candidates.delete_if {|x| winner.winners.include?(x)}
-  end
-
 end
 
 class PluralityVote < ElectionVote
@@ -112,12 +108,18 @@ end
 ## Election Result Classes
 ##
 
-## There classes are used to compute and report the results of an
-## election. In almost all cases, these will be returned by the
-## #results method of a corresponding ElectionVote subclass.
-
+# ElectionResult and its subclasses are used to identify and report the results
+# of an election. In almost all cases, these will be returned by the #results
+# method of a corresponding ElectionVote subclass.
+#
+# Each ElectionResult object has the following methods:
+#
+#  * #winner? -- return Boolean as to the winner or winners of an election
+#  * #winners -- an array of winners of the election
+#  * #ranked_candidates -- (where available) a list of ranked candidates
 class ElectionResult
   attr_reader :winners
+  attr_reader :election
 
   def initialize(voteobj=nil)
     unless voteobj and voteobj.kind_of?( ElectionVote )
@@ -135,7 +137,7 @@ class ElectionResult
   def winner?
     @winners.length > 0 and not @winners[0].nil?
   end
-
+  
 end
 
 class PluralityResult < ElectionResult

Benjamin Mako Hill || Want to submit a patch?