X-Git-Url: https://projects.mako.cc/source/rubyvote/blobdiff_plain/af3fdc3766e13c5e7b0aa01023285b25303d901f..c9649b477b0e94c4f7f36e6d42225e0d6a113f57:/lib/rubyvote/election.rb diff --git a/lib/rubyvote/election.rb b/lib/rubyvote/election.rb index ffd31c8..1d98d91 100644 --- a/lib/rubyvote/election.rb +++ b/lib/rubyvote/election.rb @@ -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