module Esquema::KeywordValidator

def self.validate!(property_name, type, options) # rubocop:disable Metrics/AbcSize

Raises:
  • (ArgumentError) - If the type is unknown.
  • (ArgumentError) - If the property type is not a symbol.
  • (ArgumentError) - If the property name is not a symbol.
  • (ArgumentError) - If the options are not in the VALID_OPTIONS constant.

Options Hash: (**options)
  • :const (Object) -- The constant value for the property.
  • :enum (Array) -- The allowed values for the property.
  • :default (Object) -- The default value for the property.

Parameters:
  • options (Hash) -- The options for the property.
  • type (Symbol) -- The type of the property.
  • property_name (Symbol) -- The name of the property being validated.
def self.validate!(property_name, type, options) # rubocop:disable Metrics/AbcSize
  options.assert_valid_keys(VALID_OPTIONS)
  raise ArgumentError, "Property must be a symbol" unless property_name.is_a?(Symbol)
  raise ArgumentError, "Property type must be a symbol" unless type.is_a?(Symbol)
  raise ArgumentError, "Unknown type #{type}" unless TYPE_VALIDATORS.key?(type)
  validate_default(property_name, type, options[:default]) if options.key?(:default)
  validate_enum(property_name, type, options[:enum]) if options.key?(:enum)
  validate_const(property_name, type, options[:const]) if options.key?(:const)
end