class Divisio::ModuloAlgorithm
Attributes
key[R]
variants[R]
Public Class Methods
new(key, variants)
click to toggle source
# File lib/divisio/modulo_algorithm.rb, line 6 def initialize(key, variants) @key = key.to_s @variants = variants_as_array(variants) end
Public Instance Methods
calc()
click to toggle source
# File lib/divisio/modulo_algorithm.rb, line 11 def calc number_of_variants = variants.size position = Digest::MD5.hexdigest(key).to_i(16) % number_of_variants variants[position] end
Private Instance Methods
variants_as_array(variants)
click to toggle source
# File lib/divisio/modulo_algorithm.rb, line 20 def variants_as_array(variants) return Array(variants) unless variants.is_a? Hash flattened_variants = [] variants.each_pair do |name, weight| weight.times { flattened_variants << name } end flattened_variants end