module Esquema::KeywordValidator
def self.validate!(property_name, type, options) # rubocop:disable Metrics/AbcSize
-
(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