def other_methods
if election_method
- @other_methods = ELECTION_TYPES.reject {|i| i == election_method}
+ @other_methods = ELECTION_TYPES.keys.reject {|i| i == election_method}
else
@other_methods = nil
end
longdesc.length > 0 ? longdesc : nil
end
- #Calculate Election Results
+ #Calculate results if not in memcache
def results
+ # Assignment is intentional
+ if Cache and c = Cache.get("election_results:#{id}:#{self.votes.length}")
+ @plurality_result = c['plurality']
+ @approval_result = c['approval']
+ @condorcet_result = c['condorcet']
+ @ssd_result = c['ssd']
+ @borda_result = c['borda']
+ return c
+ elsif Cache
+ # memcache is available, but missed.
+ results = self.results!
+ Cache.set("election_results:#{id}:#{self.votes.length}", results)
+ return results
+ else
+ return self.results!
+ end
+ end
+
+ #Always Calculate Election Results
+ def results!
# initalize the tallies to empty arrays
preference_tally = Array.new
plurality_tally = Array.new
names
end
-
end
require 'uniq_token'
require 'randarray'
- require 'gruff'
+ require 'gruff-0.2.8/lib/gruff'
require 'sparklines'
-
require 'rubyvote'
- ELECTION_TYPES = %w(ssd plurality approval condorcet borda)
+ ELECTION_TYPES = {'ssd' => "Schulze Sequential Dropping",
+ 'plurality' => "Plurality/First Past the Post",
+ 'approval' => "Approval (Top Two)",
+ 'condorcet' => "Simple Condorcet",
+ 'borda' => "Borda Count"}
class String
# alternate capitalization method that does not lowercase the rest of