Xema.Builder.one_of
You're seeing just the function
one_of
, go back to Xema.Builder module for more information.
Specs
one_of(type, [schema]) :: {type, [{:one_of, [schema]}]} when type: Xema.Schema.type(), schema: Xema.Schema.t() | Xema.Schema.type() | tuple() | atom() | keyword()
Returns a tuple with the given type
(default :any
) and the given schemas
tagged by the keyword :one_of
. This function provides a shortcut for
something like integer(one_of: [...])
or any(one_of: [...])
.
Examples
iex> Xema.Builder.one_of([:integer, :string])
{:any, one_of: [:integer, :string] }
iex> Xema.Builder.one_of(:integer, [[minimum: 10], [maximum: 5]])
{:integer, one_of: [[minimum: 10], [maximum: 5]]}
defmodule MySchema do
use Xema
xema do
one_of [
list(items: integer(minimum: 1, maximum: 66)),
list(items: integer(minimum: 33, maximum: 100))
]
end
end
MySchema.valid?([20, 30]) #=> true
MySchema.valid?([40, 50]) #=> false
MySchema.valid?([60, 70]) #=> true
MySchema.valid?([10, 90]) #=> false