module Sentry::ArgumentCheckingHelper

def check_argument_includes!(argument, values)

def check_argument_includes!(argument, values)
  unless values.include?(argument)
    raise ArgumentError, "expect the argument to be one of #{values.map(&:inspect).join(' or ')}, got #{argument.inspect}"
  end
end

def check_argument_type!(argument, *expected_types)

def check_argument_type!(argument, *expected_types)
  unless expected_types.any? { |t| argument.is_a?(t) }
    raise ArgumentError, "expect the argument to be a #{expected_types.join(' or ')}, got #{argument.class} (#{argument.inspect})"
  end
end

def check_callable!(name, value)

def check_callable!(name, value)
  unless value == nil || value.respond_to?(:call)
    raise ArgumentError, "#{name} must be callable (or nil to disable)"
  end
end