Xema.Builder.one_of

You're seeing just the function one_of, go back to Xema.Builder module for more information.
Link to this function

one_of(type \\ :any, schemas)

View Source

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