module Digitalbits::Thresholds

Constants

COMPONENTS
VALID_RANGE

Public Class Methods

make(thresholds = {}) click to toggle source
# File lib/digitalbits/thresholds.rb, line 6
def make(thresholds = {})
  # error if any of the needed components are not provided
  if COMPONENTS.any? { |c| thresholds[c].blank? }
    raise ArgumentError, "invalid thresholds hash, must have #{COMPONENTS.inspect} keys, had: #{thresholds.keys.inspect}"
  end

  # error if any of the needed components are not numbers 0 <= N <= 255
  COMPONENTS.each do |c|
    good = true

    good &&= thresholds[c].is_a?(Integer)
    good &&= VALID_RANGE.include? thresholds[c]

    unless good
      raise ArgumentError, "invalid #{c.inspect}, must be number in (0..255), got #{thresholds[c].inspect}"
    end
  end

  thresholds.values_at(*COMPONENTS).pack("C*")
end
parse(combined) click to toggle source
# File lib/digitalbits/thresholds.rb, line 27
def parse(combined)
  master_weight, low, medium, high = combined.unpack("C*")
  {
    master_weight: master_weight,
    low: low,
    medium: medium,
    high: high
  }
end