Class: Equalshares::Rules::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/equalshares/rules/base.rb

Overview

Holds the (instance, params) and the derived Election numeric view, and assembles the { winners:, notes: } result with statistics and timing. Subclasses implement #call and return result(winners, start, extra_notes).

Direct Known Subclasses

CardinalMes, Greedy, Maximin, MethodOfEqualShares, Phragmen

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(instance, params = Params.new, progress: nil) ⇒ Base

Returns a new instance of Base.



16
17
18
19
20
21
# File 'lib/equalshares/rules/base.rb', line 16

def initialize(instance, params = Params.new, progress: nil)
  @instance = instance
  @params = params
  @progress = progress
  @election = Election.new(instance, params)
end

Class Method Details

.call(instance, params = Params.new, progress: nil) ⇒ Object



12
13
14
# File 'lib/equalshares/rules/base.rb', line 12

def self.call(instance, params = Params.new, progress: nil)
  new(instance, params, progress: progress).call
end

Instance Method Details

#callObject

Raises:

  • (NotImplementedError)


23
24
25
# File 'lib/equalshares/rules/base.rb', line 23

def call
  raise NotImplementedError, "#{self.class} must implement #call"
end