class ABSwitcher::Switcher

Constants

HEX_MAX

Attributes

major_probability[R]

Public Class Methods

new(ratio) click to toggle source
# File lib/ab_switcher/switcher.rb, line 7
def initialize(ratio)
  @major_probability = calc_major_probability(ratio)
end

Public Instance Methods

major_hex?(hex_str) click to toggle source
# File lib/ab_switcher/switcher.rb, line 11
def major_hex?(hex_str)
  hex_probability(hex_str) <= major_probability
end

Private Instance Methods

calc_major_probability(ratio) click to toggle source
# File lib/ab_switcher/switcher.rb, line 17
def calc_major_probability(ratio)
  probability = convert_ratio_into_probability(ratio.to_f)
  probability > 0.5 ? probability : 1 - probability
end
convert_ratio_into_probability(ratio) click to toggle source
# File lib/ab_switcher/switcher.rb, line 22
def convert_ratio_into_probability(ratio)
  if ratio.between?(0, 1)
    ratio
  else
    # TODO handle
    raise NotImplementedError
  end
end
hex_probability(hex_str) click to toggle source
# File lib/ab_switcher/switcher.rb, line 31
def hex_probability(hex_str)
  # switch by first char
  hex = hex_str[0].hex rescue 0
  hex / HEX_MAX
end