Current section

Files

Jump to
vx lib vx.ex
Raw

lib/vx.ex

defmodule Vx do
@moduledoc """
Vx is a schema validation library.
"""
alias Vx.{Error, Validatable}
@type t :: Validatable.t()
@doc """
Validates a value against a given schema.
"""
@spec validate(t, any) :: :ok | {:error, Error.t()}
def validate(schema, value) do
case Validatable.validate(schema, value) do
:ok ->
:ok
{:error, message} ->
{:error, %Error{schema: schema, value: value, message: message}}
end
end
@doc """
Validates a value against a given schema. Raises on error.
"""
@spec validate!(t, any) :: :ok | no_return
def validate!(schema, value) do
with {:error, error} <- validate(schema, value) do
raise error
end
end
end