The Elixir schema validator.
The package can be installed by adding vx to your list of dependencies in
mix.exs:
def deps do
[
{:vx, "~> 0.4.0"}
]
endWith Vx, you have the capability to define schemata for validating complex data effortlessly.
First, you need to define your schema.
schema = Vx.String.t()After that, you can call Vx.validate/2 or Vx.validate!/2 to check if a given
values matches:
Vx.validate(schema, "foo")
# :okWhen the value does not match, an error is returned (or raised, respectively), indicating the specific issue.
Vx.validate(schema, 123)
# {:error, %Vx.Error{...}}Vx.validate!(schema, 123)
# ** (Vx.Error) must be a stringAdditional constraints can be added to certain types by piping everything together:
Vx.Number.t()
|> Vx.Number.gteq(3)
|> Vx.Number.lt(7)You can combine multiple types and constraints to validate more complex schemata:
Vx.Map.shape(%{
"name" => Vx.String.t(),
"age" => Vx.Number.t(),
"hobbies" =>
Vx.List.t(Vx.String.present())
|> Vx.List.non_empty(),
"type" => Vx.Enum.t(["user", "admin"]),
"addresses" => Vx.List.t(Vx.Struct.t(Address))
})Take a look at the documentation to find out available types and options.