Xema.new
You're seeing just the function
new
, go back to Xema module for more information.
Specs
new( Xema.Schema.t() | Xema.Schema.type() | tuple() | atom() | keyword(), keyword() ) :: t()
This function creates the schema from the given data
.
Possible options:
:loader
- a loader for remote schemas. This option will overwrite theloader from the config. See [Configure a loader](loader.html) to how to define a loader.
inline
- inlined all references in the schema. Default:true
.
Examples
Simple schema:
iex> schema = Xema.new :string
iex> Xema.valid? schema, "hello"
true
iex> Xema.valid? schema, 42
false
Schema:
iex> schema = Xema.new {:string, min_length: 3, max_length: 12}
iex> Xema.valid? schema, "hello"
true
iex> Xema.valid? schema, "hi"
false
Nested schemas:
iex> schema = Xema.new {:list, items: {:number, minimum: 2}}
iex> Xema.validate(schema, [2, 3, 4])
:ok
iex> Xema.valid?(schema, [2, 3, 4])
true
iex> Xema.validate(schema, [2, 3, 1])
{:error, %Xema.ValidationError{
reason: %{
items: %{2 => %{value: 1, minimum: 2}}}
}
}
More examples can be found on page Usage.