Parsing and schema validation library for Elixir
Xod is a dynamic parsing and schema validation library for Elixir inspired by the Typescript library Zod. A schema refers broadly to a specification used to validate and transform any value, from a simple number to a complex nested object.
Xod provides a functional API. The default schemata have no side effects and use only immutable state.
Xod is also extensible. Apart from using the helper schemata provided, one can
implement the Xod.Schema
protocol to create a fully custom schema.
iex> alias Xod, as: X
iex> my_config = X.map(%{
...> data: X.map(%{
...> age: X.number(int: true, ge: 0, lt: 150)
...> }),
...> names: X.list(X.string() |> X.max(10))
...> }, key_coerce: true)
iex> X.parse(my_config, %{
...> "data" => %{
...> age: -10,
...> },
...> names: ["John", "Peter", "Chandragupta"]
...> })
{:error,
%Xod.XodError{issues: [
[type: :too_small,
path: [:data, :age],
message: "Number must be greater than or equal to 0",
data: [min: 0]
],
[type: :too_big,
path: [:names, 2],
message: "String must contain at most 10 character(s)",
data: [max: 10]
]
]}}
https://github.com/dashbitco/nimble_options
Very popular library. Validates options defined as keyword lists.
https://github.com/albert-io/optimal
Similar to NimbleOptions. Only useful on opts defined as keyword lists.
https://github.com/phcurado/parameter
Schema creation, validation with serialization and deserialization. Works with maps by defining parameters on modules using macros.
https://github.com/hrzndhrn/xema
Schema validator. Very similar to this project but inspired by JSON schema.
This software is licensed under the MIT license.