module Apportion::Setup

Configure per options

Public Instance Methods

initial_portions(keys, options) click to toggle source

Determines initial portions for recipients according to optional constraints

@param keys [Hash] correspond to recipients @param options [Hash] @param options [Hash] :prior_portions from a previous apportionment @option options [Integer] :required_minimum smallest portion for each recipient @return [Hash] portions @example

initial_portions({a: 41, b: 32, c: 27}, required_minimum: 2)
# => {a: 2, b: 2, c: 2}
# File lib/apportion/setup.rb, line 19
def initial_portions(keys, options)
  portions = Hash.new
  int = options[:required_minimum] || 0
  keys.each { |k| portions[k] = int }
  hash = options[:prior_portions]
  return portions unless hash
  prior_portions_included(portions, hash)
end
prior_portions_included(portions, prior_portions) click to toggle source
# File lib/apportion/setup.rb, line 28
def prior_portions_included(portions, prior_portions)
  portions.merge(prior_portions) { |_k, o, n| [o, n].max }
end
validate(size, sum_portions) click to toggle source

@raise [RuntimeError] if size too small

# File lib/apportion/setup.rb, line 33
def validate(size, sum_portions)
  fail('Size less than minimum sum_portions') if size < sum_portions
end