module Ensurance::HashEnsure::ClassMethods

Public Instance Methods

ensure(thing) click to toggle source
# File lib/ensurance/hash_ensure.rb, line 13
def ensure(thing)
  case thing.class.name
  when 'NilClass'
    nil
  when 'Hash', 'HashWithIndifferentAccess'
    thing
  when 'String'
    JSON.parse(thing)
  when 'ActionController::UnfilteredParameters', 'ActionController::Parameters'
    thing.permit!.to_h
  else
    if thing.respond_to?(:to_h)
      begin
        thing.to_h
      rescue TypeError
        raise ArgumentError, "Unhandled Type for Hash to ensure: #{thing.class}"
      end
    else
      raise ArgumentError, "Unhandled Type for Hash to ensure: #{thing.class}"
    end
  end
end
ensure!(thing) click to toggle source
# File lib/ensurance/hash_ensure.rb, line 36
def ensure!(thing)
  result = self.ensure(thing)
  raise ArgumentError, "Cannot Hash.ensure(#{thing})" unless result
  result
end