Class: ActsAsCalculator::DivideProportionally

Inherits:
Object
  • Object
show all
Defined in:
lib/acts_as_calculator/divide_proportionally.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(amount:, weights:) ⇒ DivideProportionally

Returns a new instance of DivideProportionally.



11
12
13
14
# File 'lib/acts_as_calculator/divide_proportionally.rb', line 11

def initialize(amount:, weights:)
  @amount = amount
  @weights = weights
end

Class Method Details

.callObject



7
8
9
# File 'lib/acts_as_calculator/divide_proportionally.rb', line 7

def self.call(...)
  new(...).call
end

Instance Method Details

#callObject

Raises:



16
17
18
19
20
21
# File 'lib/acts_as_calculator/divide_proportionally.rb', line 16

def call
  total = weights.sum
  raise ApportionmentError, "cannot apportion across zero total weight" if total.zero?

  weights.map { |weight| amount * weight / total }
end