View Source JSV.FormatValidator behaviour (jsv v0.3.0)

Behaviour 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 the list of the supported formats, as strings.

Receives the schema format as string, and the data as a string.

Types

format()

@type format() :: String.t()

Callbacks

supported_formats()

@callback supported_formats() :: [format()]

Returns the list of the supported formats, as strings.

validate_cast(format, data)

@callback validate_cast(format(), data :: String.t()) :: {:ok, term()} | {:error, term()}

Receives the schema format as string, and the data as a string.

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).