JSV.FormatValidator behaviour (jsv v0.10.1)
View SourceBehaviour for format validator implementations.
Such implementations must be given to JSV.build/2
in the :formats
option:
JSV.build!(raw_schema,
resolver: resolver,
formats: [MyModule | JSV.default_format_validator_modules()]
)
Each given module is interrogated for format support when a schema is built.
Modules earlier in the list take precedence and if a format is found in the
returned value of the supported_formats/0
callback, the module is selected
for compilation and no other module will be tried.
A module can declare multiple formats.
Summary
Callbacks
Returns true
if the given format should be used for the input data type.
Returns the list of the supported formats, as strings.
Receives the schema format as string, and the data.
Types
@type format() :: String.t()
Callbacks
Returns true
if the given format should be used for the input data type.
For instance, the "date"
format will not be validated if the input data is
not a string.
No validation should be done in this callback, only the type of the data should be considered.
@callback supported_formats() :: [format()]
Returns the list of the supported formats, as strings.
Receives the schema format as string, and the data.
Returns a result tuple with data optionally casted to a more meaningful data
structure (for instance returning a Date
struct instead of the string
representation of the date).