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