Skip to content
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Build Status

Validatex is a simple Elixir library for validating (input) data

Validation Primitives

Using records defined in Validatex one can check individual values against validators.

For example:

iex> alias Validatex, as: V
iex> V.Validate.valid?( 10), 1)
iex> V.Validate.valid?( 0), 1) 

Also, if the second argument is not a validator, it will be matched against the first argument:

iex> V.Validate.valid?(1,1)                  
iex> V.Validate.valid?(2,1)
iex> V.Validate.valid?(0, 1)

Custom Validators

One can define custom validators using by implementing Validatex.Validate protocol

  defrecord MyValidator, q: nil

  defimpl Validatex.Validate, for: MyValidator do
     alias MyValidator, as: V
     def valid?(V[], v), do: v

Validation Sheets

Instead of running individual validations, you can define so called "validation sheets" and test them using Validatex.validate.

Validation sheet is a list of validations in the following format:

{name, value, spec}

For example:

 {"", username, 3, to: 16))},
 {"", email, 3, to: 255))},
 {"user.age", age, true)}

Just as an example, if you try to put a string with a non-numeric value into age, you'll get this:

iex> V.validate(plan)
[{"user.age","wrong",Validatex.Numericality[default: 0],:number_expected}]
Something went wrong with that request. Please try again.