shape alternatives and similar packages
Based on the "Validations" category.
Alternatively, view shape alternatives based on common mentions on social networks and blogs.
-
exop
Elixir library that provides macros which allow you to encapsulate business logic and validate incoming parameters with predefined contract. -
Goal ⚽
A parameter validation library for LiveViews and JSON/HTML controllers - based on Ecto -
is
Fast, extensible and easy to use data structure validation for elixir with nested structures support.
Access the most powerful time series database as a service
Do you think we are missing an alternative of shape or a related project?
Popular Comparisons
README
Shape
Shape is library that allows you to declaratively describe and validate your data structures.
To use add
[{:shape, "0.0.2"}]
to your mix dependencies.
Example Usage: iex> alias Shape, as: S nil
iex> S.validate(S.Num, 42) :ok
iex> S.validate(S.Num, "42") {:error, "42 is not a number"}
# Check list shape iex> S.validate([S.Atom, S.Str, S.Int], [:a, "b", 1]) :ok
iex> S.validate([S.Int], [1, 2, 3]) :ok
iex> S.validate([S.Str, S.Int, S.Int], [:a, "b", 1]) {:error, ["a is not a string", "b is not a integer"]}
# Check map shape iex> S.validate(%{S.Atom => S.Str}, %{o: "k"}) :ok
iex> S.validate(%{S.Atom => S.Int, S.Str => S.Int}, %{"o" => "k", "o" => :k}) {:error, ["o is not a atom", "k is not a integer"]}
# Check map key values rather than types iex> S.validate(%{:o => S.Str, "o" => S.Str}, %{:o => "k", "o" => "k"}) :ok
iex> S.validate(%{:b => S.Str, "o" => S.Str}, %{:o => "k", "o" => "k"}) {:error, ["o is not equal to b"]}
# check Keyword list shape iex> S.validate([o: S.Str, a: S.Str], [o: "k", a: "ok"]) :ok
iex> S.validate([o: S.Int, b: S.Str], [o: "k", a: "ok"]) {:error, ["a is not equal to b", "k is not a integer"]}