class Hash

Convert hash of booleans to Switch

Public Instance Methods

to_switch(labels = {}) click to toggle source
# File lib/bitswitch.rb, line 210
def to_switch(labels = {})

  # Remove any non boolean values
  cleaned = self.delete_if{|k,v| ![true, false, 1, 0, '1', '0'].include?(v)}

  # Convert Numerical Booleans
  cleaned = cleaned.inject({}) do |o,(k,v)|
    o[k] = v.is_a?(String) ? v.to_i : v
    o[k] = v.is_a?(Fixnum) ? !v.zero? : v
    o
  end

  # Return new BitSwitch
  return BitSwitch.new(0, labels) if cleaned.empty?
  return BitSwitch.new(cleaned, labels)
end