module Stellar::Thresholds

Constants

COMPONENTS
VALID_RANGE

Public Class Methods

make(thresholds={}) click to toggle source
# File lib/stellar/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?(Fixnum)
    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/stellar/thresholds.rb, line 29
def parse(combined)
  master_weight, low, medium, high = combined.unpack("C*")
  {
    master_weight: master_weight,
    low:           low,
    medium:        medium,
    high:          high,
  }
end